リアルタイム システム プログラミングにはどのような言語が使用されますか?[閉まっている]
-
22-08-2019 - |
質問
リアルタイム システム用のプログラミング言語に関する有益な情報は見つかりませんでした。私が見つけたのは リアルタイム システムとプログラミング言語:Ada 95、リアルタイム Java およびリアルタイム C/POSIX (ここにPDFがいくつかあります)、リアルタイム システムのための Java と C の拡張について語っているようです(私は読む本を持っていません)。また、この本は2001年に出版されたものなので、現在は情報が古い可能性があります。
したがって、これらの言語が現実世界のアプリケーションで使用されているのか、それとも現実世界のリアルタイム システムが DSL などの他の言語で作られているのかは疑問です。
2 番目の選択肢があなたに当てはまる場合、あなたが使用する言語の優れた特徴は何ですか?
解決
の仕様、Java現在、複数の商業グレードの実装:
- 太陽 JavaRTS
- IBMの WebSphereの実時間
- Aonix PERC
- aicas JamaicaVM
- Apogee Aphelion
これらの製品の連続から成るネイティブコード(Aonix)J2ME(aicas,apogee)、J2SE(日).ではないが、そのほとんどすべてのさらなる展開の安全やミッションクリティカルシステムが気運が高まっています。例として エグリンAFBの空間監視レーダの近代化 米海軍で使用RTSJの DDG-1000/Zumwalt駆逐艦.日また請求項の展開、財務トランザクション処理ます。
ご興味のある方にRTSJ見られるパターンは、ピーター Dibbleの 実時間プロ, は、教授Wellings' 兼職の状況及び実時間プログラミングJava.
の関連で、また作業が進行中で提供する安全性の確保が重要となるプロファイルをJavaプログラミング言語としてのサブセットRTSJ.また、専門家グループの形成を分散RTSJ DRTSJすが、仕事が進まない。
他のヒント
私は、アビオニクス・ソフトウェア・エンジニアです。 私はいくつかの開発プロジェクトに参加することができました。 私はこれらのプロジェクトで使用される言語は以下のとおりです。C、C ++、およびリアルタイムのJava
Cは素晴らしいです。 C ++はそれほど悪くはありませんが、C / C ++は、DO-178Bなどの安全配慮のための厳格なコーディング標準を必要とします。
私はリアルタイムJavaが移動するための方法であるが、私はまだ、多くのアビオニクスアプリケーションが表示されていないと考えています。
韓国のジェット練習T-50は、RTのJava HUDとMFDのディスプレイを提供するアプリケーション、およびミッションクリティカルな機能のすべてを実行しているミッションのコンピューターを持っています。
この本では、Ada 95、Java Real-Time System、およびリアルタイム POSIX 拡張機能 (C でプログラム) の使用方法について説明します。これらはいずれも直接的にはドメイン固有言語ではありません。
Ada 95 は 90 年代後半に一般的に使用されていたプログラミング言語で、(私の知る限り)防衛産業や航空宇宙産業でリアルタイム プログラミングに今でも広く使用されています。Ada 上に少なくとも 1 つの DSL が構築されています - スパークエイダ - プログラム検証ツールに対してシステムの特性を説明する注釈のシステムです。
今回のインタビュー 2006 年 4 月 6 日の更新では、Java Real-Time System を構成するクラスと仮想マシンの一部の変更が示されています。ドメイン固有の言語拡張については言及されていません。私はリアルタイム システムで Java を使用することに遭遇したことはありませんが、Java が使用されると予想される種類のシステムには目を向けていません (私は航空宇宙シミュレーションで働いており、C++、Fortran、そして場合によっては Ada も使用しています)リアルタイムインザループシステムの場合)。
リアルタイムPOSIX POSIX オペレーティング システム機能の一連の拡張機能です。OS 拡張機能として、言語に特定のものは必要ありません。そうは言っても、組み込みシステムを記述するための C ベースの DSL を 1 つ思いつくことができます。 システムC - しかし、それが組み込みシステムの生成にも使用されるかどうかはわかりません。
本の中で言及されていないのは、 マットラボ, 、ここ数年で、シミュレーション ツールからリアルタイム システム用のモデル駆動開発システムに移行しました。Matlab/Simulink は、事実上、線形計画法、ステート マシン、アルゴリズム用の DSL です。Matlab が生成できるのは、 C または HDL リアルタイムおよび組み込みシステム向け。Matlab の経験を必要としないアビオニクス、EW、またはその他の防衛産業のリアルタイムの求人が掲載されるのは非常にまれです。(私は Matlab で働いているわけではありませんが、Matlab が業界内でいかに広く普及しているかはいくら強調してもしすぎることはありません)
リアルタイムアプリケーションでは、ほぼすべての言語で行うことができます。環境(オペレーティングシステム、ランタイムおよびランタイムライブラリは)しかし、実際の時間の制約に準拠している必要があります。ほとんどの場合、リアルタイムでは、常に何かが起こるした決定論的時間があることを意味します。決定論的な時間は、マイクロ秒/ミリ秒の範囲内々ussually非常に低い時間値である。
「(|何かを確認する何かをする)すべてのX(時間の期間)」specificiationsは、通常のようなものを言うようにリアルタイムシステムでは、この基準だけに依存します。通常、このような場合は、外部センサーとコントロールが救命や生命を脅かすシステムとのシステムインタフェースます。
私は、特にリアルタイムナビゲーションとメディア再生を提供するために、リアルタイム制約を満たすように構成されたオペレーティング・システムとC / C ++で主に開発した車載ナビゲーションおよびインフォテインメントシステムに取り組んでいた。
しかし、これはリアルタイムシステムには、すべてではありません。通常、システム全体におけるアルゴリズムの選択は、大部分が線状または一定の時間を使って、ビッグO記法に従って決定論的ランタイムを持つように作られています。他のすべてがリアルタイムシステムのためのない使用可能なので、非決定論的と見なされます。
私は主にアセンブラのいくつかのビットとCで書かれた、またはC.の少しビットとアセンブラでほとんど書かれていたと働いてきたリアルタイムシステムのすべてが(私たちは越えた90年代の話をしているかどうかに応じて、または80年代、それぞれ)しかし、私が使用していると働いてきたリアルタイムシステムのいくつか - 。ない、正確にDSLを - 。特別な自家製のコードジェネレータ
実時間指向の養成講座を開催します。
何をリアルタイム
まず定義 実時間 ことができる。
のコースによってどのようツール仕事に対する物理的環境 純リ できない効果的に行ないたくさん出てしまうと思いますの第三者の依存関係.
の場合は建物に組み込むものを用マイコンのように arduino, の言語を使用する限定のハードウェアが、より複雑なもののように Raspberry Pi, の言語の選択肢は広いです。
粒度
このように測定であれば、作:
- 天気温, は、読み取れ10分できる十分な
- 人の身体重, は、かつ読みによる日
- サーバーの状況, 1次微デバッグを約1時間のため静かで重要な二次サーバーです。
- 原子衝突回数:何か狭...
イベントベース読書
右は良の方法で収集データに基づく 値を変更イベント...いつのデバイスな許可することがあります。
ツールってない poll 値からデバイスが、デバイスへの送信値をツールが変わるものである。
することが不可欠であるとを 割り込みハードウェア トリガーまたはポートprotocoleのように RS-232 お泊りの話を聞いている一部のシリアルポート、サンプルです。
モニター環境
ということには注意が必要なのは どの正当なユーザーとの交流.
だビル埋め込みデバイスのように、 ロボット, をご利用いただくことがグラフィクスライブラリの開発と交流すことができます。
だビルwebベースのモニターするということを考慮しておくのお客様が古い 800x600 モノクローム画面は、貧しいインターネット接続および小型プロセッサ...によって最終目標はまふらつきがあらわれることがありお客様とのごすことをよくするためにハードウェアとの強いインターネットに接続します。とにかくい時否を失ったイベントの通信遅延の間にサーバとクライアントいは第三者の依存関係.
るプログラミング言語の?
さらに言語の選択肢が広いので明確に依存
- のとします。
- 粒度を求めよさらにイベントにおいても、コース)
- 時間までに構築ツール(金;)
- 遅れ、労働者の...
- のようなデバイス
- のような監視
- その他の政治的な理由
まで行うことでリアルタイム監視を用いたエンジン bash や sql み、洗練されたエンジンによって造ら postgresql だけ---私は個人的には内蔵のwebベース、太陽エネルギーモニタ perl, mysql や javascript.
私は誰も広くリアルタイムのセーフティクリティカルなシステムのために使用されているLabVIEWプログラミング言語を言及していないと信じてすることはできません。それはarchitecturingとRTシステムのために実装するための豊富なライブラリと、よく知られているデザインパターンを持っています。
また、ナショナルインスツルメンツでは、リアルタイム・アプリケーションのために設計されている各種ハードウェア(のcRIO、PXIおよびなど)を行います。
私たちは、安全クリティカルな環境で使用されてFracking(水圧破砕)については、LabVIEWを使用します。
ところで、LabVIEWのは、あまりにも非RTアプリケーションに使用されます。
それは予測不可能な実行時のパフォーマンスにつながるような方法でプログラムすることは困難であることを本当にあなたの選択肢は非常に限られている意味でのリアルタイムのDSLであるPLCのラダー実行し、FBDコード
リアルタイムプログラミングにC言語の本当に意図的なアプリケーション - と(このような並列プログラミングなど)、関連するすべての問題は - 私のキックスターターで提供されています http://www.kickstarter.com/projects/767046121/crawl -space・コンピューティングと、Connelのの それは、「ワイドプログラミング」と呼ばれ、私は私の人生のほとんどをそれをやってきました。報酬は、ソフトウェアライブラリや書籍などが - 。便利になるように設計を
私は2003年からのために働いてきた同社は、SCADA / Mesのプラットフォームを開発し、展開してきました。オリジナルの実装は、OS / 2上でModula2を使用し、1993年に開始しました。その後、(1998)、それはAda95とWindowsに移植されました。現在(2019年)、私たちはAdaCoreにでエイダのコンパイラを使用します。私たちのシステムは、移植されたと32/64のWindows、HP-UX、OpenVMSの(そして最近でもラズベリーに)に配備されています。私たちは、中央ヨーロッパで複数のインストール(ガス産業、製油所、工場、発電所)を持っています。 私たちは、エイダの機能は、当社のシステムに高い信頼性を提供し、我々はC.のような言語を使用した場合、容易occourようなエラーの多くを防ぐ感じます 私のブログも参照してください。 https://www.ipesoft.com/en/ブログ/何-言語である-D2000-書かの