問題タブ [ada2012]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
152 参照

thread-safety - エイダのタスクと安全性

コーディングは好きではありませんが、Ada はとても好きで、まったくの初心者です。これらの点を明確にしていただけますか?

単一のスレッド化されていない CPU を搭載したコンピューターを使用している場合でも、タスクはシングル CPU のままです。もちろん、同じことがC または C++ でのforkにも当てはまります。

質問: このシナリオで、Ada タスクは fork よりも利点があると思いますか?

また、SPARK がタスクを禁止する理由も知りたいです (安全のためであることはわかっていますが、正確には、タスクを禁止することで安全性がどのように向上するのでしょうか)。

3 番目で最後の質問です。「安全なタスキング」(Ada で) を提供したい場合、タスク (タスク) を「安全」にするためには、タスクにどのような制限が必要になると思いますか。

ありがとうございました、

0 投票する
2 に答える
285 参照

json - Adaでは、どのように再帰的にマップし、それ自体の中で型をメモリ管理しますか

私はしばらくの間、この小さな問題に苦労してきました。内部 JSON 構造の独自の実装を作成しようとしています。課題は、Ada ではアクセス タイプを使用して再帰的にする必要があり、厳密に制御しないとアクセス タイプがリークするリスクがあることです。それを制御するために、私は提供したすべての実際の活動を非公開にしGet (Source:...)Set (Target:...; Value:...)既存の Vector (json-array) または Map (json-object) 要素を検証して処理しようとする Node タイプの関数/手順。Ada 2012 の安定した機能を使用し、コンテンツが範囲外になるとそれをキャッチしていることをさらに確認するために、Protected_Controlled タイプを使用して Ada ライブラリを「管理」しようとしましたが、コンテナ ライブラリが保護されたタイプを処理できないことがわかりました。ので、単純に Controlled を使用しました。このFinalize (...)手順は、任意の Vector または Map タイプを対象としており、Node_Value.Reference を再帰的に解放します。

私の質問は、Ada 2012 を正しく適用しているかどうか、またはベクトル/マップまたは文字列/数値のいずれかであるタイプのメモリ管理再帰を作成するにはどうすればよいかということです。

0 投票する
1 に答える
389 参照

ada - Ada アサーションが失敗した理由の特定

アサーションが失敗した場合、次の出力が得られます。

発生した SYSTEM.ASSERTIONS.ASSERT_FAILURE : Dynamic_Predicate が file.adb:36 で失敗しました

詳細を教えてください。たとえば、入力が何であったか、スタック トレース、またはアサーションが失敗した理由を判断するのに役立つその他の情報は?

0 投票する
1 に答える
106 参照

ada - 配列内のインデックスを見つけるための式

スペース文字である文字列内の最初の文字を見つけて、そのインデックスを返すにはどうすればよいContract_Casesですか?

たとえば、文字列が次の場合:

式は を返す必要があり4ます。

0 投票する
1 に答える
276 参照

standards - ISO 標準の Ada だけで、Record Representation Clause + 他の言語機能をリトル エンディアンおよびビッグ エンディアン プロセッサに移植するにはどうすればよいですか?

非標準‡ Scalar_Storage_Order 句を使用しない場合GNAT の最近のリリースでは、「同じ」コードがリトル エンディアンとビッグ エンディアンの両方で機能するように、他の言語機能の任意の組み合わせと組み合わせて、レコード表現句を介して IPv4 ヘッダーを移植可能に表現するにはどうすればよいでしょうか。 -エンディアン プロセッサですが、IETF がネットワーク バイト オーダー (ビッグ エンディアンに対する IETF の派手な名前) と呼んでいるもので (たとえば、イーサネット フレームのペイロードを介して) 送信されます。C では、「同じ」コードがプリプロセッサ マクロを使用してリトル エンディアン プロセッサでバイト スワップを実行できますが、ビッグ エンディアン プロセッサでは何もしませんが、標準の Ada にはプリプロセッサがありません。C++ では、「同じ」コードがメタ テンプレート プログラミング (MTP) を利用してリトル エンディアン プロセッサでバイト スワップを実行できますが、ビッグ エンディアン プロセッサでは何もしませんが、標準の Ada には MTP がありません。

(ちなみに、ビッグ エンディアン プロセッサがリトルエンディアン周辺 IC のメモリ マップド レジスタとインターフェイスする場合、またはその逆の場合、デバイス ドライバでほぼ同じ問題が発生します。リトルエンディアン プロセッサがビッグ エンディアン IC のメモリ マップド レジスタとインターフェイスします。 .)

「PowerOf2Highest マイナス」およびビッグエンディアンのビット ID を (from,to) 順序から [視覚的に、実際には算術的にではなく] (to,from) 順序に「反転」する方法が、バイトスワップのパート 2 でこれは、VHDL がこの異種エンディアンの問題を解決する方法の重要な部分です。(VHDL は Ada83 のいとこ言語です。)

しかし今、セット {Header_IPv4_Homogenous, Header_IPv4_Heterogenous} のどのメンバーが app-domain-code でタイプ名 Header_IPv4_Portable として選択されているかを難読化する方法は? 子パッケージを使用しますか?

‡ Scalar_Storage_Orderは、Ada の ISO 標準の次の版の潜在的な機能として提案されていますが、これまでのところ、ISO 標準化委員会でこの提案を擁護する公式のスポンサーがいないため、標準化の提案はどこへ行って、つるの中で死ぬ可能性があります。さらに、GNAT 以外の Ada コンパイラを使用するため、GNAT 固有の機能を使用することはできません。