タグ付けされた質問 「pl.programming-languages」

特にプログラミング言語は、そのセマンティクスに焦点を当てています。

10
言語がプログラム可能であるためには、文脈自由文法に基づいていることが必須ですか?
実際には、最終的にシステムレベルの命令にコンパイル/変換できる言語の場合、コンテキストのない文法である必要がありますか? 例:すべてのプログラミング/スクリプト言語は文脈自由文法ですか?JavaはCFGに基づいていますが、実際にはすべてのプログラミング言語がCFGに基づいているのですか? 必須ではないようですが、私の理解にはギャップがあります。 質問の背景:文法規則も提供するJava言語仕様を見ていました。これは私にこの質問について考えさせました。

2
線形論理の民俗モデルとは何ですか?
おそらく、PLでの線形型の最も一般的な用途は、それらを使用してエイリアスを制御する言語を提供することです(つまり、線形値には多かれ少なかれ単一のポインターがあります)。 しかし、この使用法と線形論理の典型的な表示モデルとの間にはわずかな不一致があります。IIRC、ベントンは、デカルト閉カテゴリが強力な可換モナドを持っている場合、代数のカテゴリは対称モノイダル閉(つまり線形論理のモデル)になることを示しました。しかし、状態モナドは可換ではないため、この定理はエイリアス制御の使用には適用されません。そして確かに、過去数年でシンプソンと彼の同僚は、線形論理の項計算ではない一般的な強いモナドの計算を与えました。 だから私の質問は、状態を持つ線形言語の表示的意味論とは何ですか?割り当て、読み取り、および線形更新をモデル化できる非縮退(つまり、テンソルがデカルト積ではない)対称モニダル閉カテゴリはありますか?



2
ガベージコレクションされたプログラミング言語で指定された最悪のデータ構造の実行時間を分析するとき、GCのコストを無視できますか?
私は自分の質問への答えが「はい」であると仮定してきたことに気付いたが、正当な理由はない。おそらく、ワーストケースのスローダウンのみを導入するガベージコレクターがあると思います。引用できる決定的なリファレンスはありますか?私の場合、純粋に機能的なデータ構造に取り組んでおり、これらの詳細が重要な場合は標準MLを使用します。O(1)O(1)O(1) そしておそらく、この質問は、たとえばJavaで指定されたデータ構造に適用されると、さらに関連性が高くなるでしょうか?Javaを使用するアルゴリズム/データ構造の教科書に関連する議論があるかもしれません。(SedgewickにはJavaバージョンがあることは知っていますが、Cバージョンにしかアクセスできません。)


2
(プログラミング言語としての)TeXのセマンティクスは公式化されたことがありますか?
使用されているマクロ言語は、ある種の用語書き換えシステム、または名前によるスコープ指定を備えたある種のプログラミング言語と見なすことができます。TEバツTEバツ\TeX エンジンの最新の実装(たとえば)でさえ、コードを非常に直接的な方法で解釈し、実行を最適化する試みを認識していません(最新の最適化インタープリターができるように)。ただし、ような言語の正しい最適化パスを考案することは、マクロの再定義が持つ可能性のある「離れた場所でのアクション」と、マクロを名前で呼び出すことでマクロを再定義できるため、非常に困難になります。TEバツTEバツ\TeXX e TEバツバツeTEバツ\mathit{Xe}\TeXTEバツTEバツ\TeX したがって、仮想の最適化インタープリターを実装することは、実際には非常に難しい問題に聞こえますが、は数学と科学全体で使用され、コンパイル時間が遅いことはシステムの既知の欠点です。特に計算量の多いパッケージ(など)を使用する場合、実際の組版の計算ではなく、コードの解釈にほとんどの時間が費やされることに注意してください。TEバツTEバツ\TeXTEバツTEバツ\TeXtikz 言語の正式なセマンティクスが問題への取り組みを開始するかもしれません。それで、プログラミング言語のセマンティクスはこれまでに形式化されましたか?TEバツTEバツ\TeX

5
コンパイラの正当性の証明
私はコンパイラの正当性の証拠をカバーするチュートリアル資料を探しています。できれば、初歩の学生のレベルで、表現法を使用してください。 あるいは、問題を説明するために使用できる簡単なコンパイラーの例を知っていますか?(最初に出てきた例は、中置から後置式への翻訳者でした。しかし、構文の帰納法以外の興味深いことは何も示しませんでした。)

7
正式な方法が機能することをどのように知ることができますか?
正式な方法の重要な目標は、自動化された手段または人間主導の手段によってシステムの正確性を証明することです。ただし、正当性を証明できたとしても、システムが故障しないことを保証できない場合があります。例えば: 仕様がシステムを正しくモデル化していないか、実動システムが複雑すぎてモデル化できないか、矛盾する要件のためにシステムに本質的に欠陥がある可能性があります。仕様がまったく意味をなすかどうかをテストするためにどのようなテクニックが知られていますか? 証明プロセスにも欠陥がある可能性があります!これらの推論規則が正しく、正当であることを誰が知っていますか?さらに、証明は非常に大きくなる可能性がありますが、エラーが含まれていないことをどのようにして知ることができますか?これは、デミロ、リプトン、およびペルリスの「社会プロセスと定理とプログラムの証明」の批評の中心です。現代の形式的手法の研究者は、この批判にどのように対応しますか? 実行時には、システムに深刻な影響を与える可能性のある多くの非決定的なイベントと要因があります。たとえば、宇宙線はRAMを予測不可能な方法で変更する可能性があり、より一般的には、ハードウェアがビザンチン障害を被らないという保証はありません。したがって、静的システムの正確さは、システムが失敗しないことを保証しません!実際のハードウェアの誤りを説明するために知られている技術はありますか? 現在、テストは、ソフトウェアが機能することを確認するための最も重要なツールです。正式な方法を備えた補完的なツールであるように思われます。しかし、私は主に正式な方法またはテストに焦点を当てた研究を見ています。2つの組み合わせについては何が知られていますか?

1
スコットの確率的ラムダ計算
最近、Dana Scottは確率的ラムダ計算を提案しました。これは、グラフモデルと呼ばれるセマンティクスに基づいて確率型要素を(型なし)ラムダ計算に導入する試みです。彼のスライドは、たとえばここでオンラインで見つけることができ、彼の論文はJournal of Applied Logic、vol。12(2014)。 しかし、Webで簡単に検索したところ、たとえばHindley-Milner型システムに関する同様の以前の研究が見つかりました。確率論的なセマンティクスを導入する方法は、スコットのものに似ています(前者ではモナドを使用し、後者ではスコットは継続渡しスタイルを使用します)。 スコットの研究は、理論自体またはそれらの可能な応用の点で、利用可能な以前の研究とどのように異なりますか?

2
トータル関数プログラミングの制限は何ですか?
トータル関数型プログラミングの制限は何ですか?チューリング完全ではありませんが、可能なプログラムの大部分のサブセットを引き続きサポートしています。チューリング完全言語で記述できるが、完全な関数型言語では記述できない重要な構成要素はありますか? そして、完全な関数型言語で書かれたプログラムは完全に静的に分析でき、チューリング完全言語の静的分析は停止問題のようなものによって制限されていると言うのは正しいでしょうか?それは、実行時にしかわからないものがあるため、完全に機能的な言語ですべてが静的に決定できるという意味ではありませんが、理論的には、理想的な完全な機能プログラミング言語で書かれたプログラムを分析して、理論的には静的に決定できますが、静的に決定できます。または、静的解析を不完全にする機能言語全体に継承される未決定の問題がまだありますか?一部の問題は、それがどの言語で書かれているかにかかわらず、常に決定できませんが、言語に継承されるこのような問題に興味があります。

3
変更保護者としてのフレームルール?
フレームルールは、下記のいずれかのように、プログラム与えられた、という考えキャプチャc前提でp、それを実行する前に保持し、事後条件q、その後保持している、いくつかの互いに素条件はr前と後の両方を保持する必要がありますc実行を。(コネクティブは*引数が互いに素であることが必要です。)多くの場合、事前条件と事後条件はヒープの状態でありc、何らかの方法でヒープを変更する効果的なプログラムです。 {p} c {q} ----------------- (where no free variable in r is modified by c) {p * r} c {q * r} 私が見たフレームルールの議論は、ヒープのばらばらの部分がどのようにr保存されるかに常に焦点を当てているようです。これにより、「ローカルな推論」が可能になります。効果について推論する場合、ヒープcのr部分を無視し、実際に変化する部分のみに関心を持つことができます。しかし、別の見方をすれば、現在そこに座っているにもかかわらず、からpへqの変更が保存されるというrことです。言い換えれば、それは我々が事後条件で終わることが重要だ{q * r}のではなく、{q' * r}他のいくつかのためにq'。 だから、私の質問は、議論したり作るが保存-の変更-from-の使用という枠ルールのいずれかの治療がありますかどうかであるp-to- q事。

6
どの計算モデルが文法を通して表現できますか?
これは文法プログラムの再定式化ですか?Vagによる以前の質問と、コメント作成者からの多くの提案。 文法はどのように計算のモデルを指定していると見ることができますか?たとえば、次のような単純な文脈自由文法を使用する場合 G ::= '1' -> '0' '+' '1' '1' -> '1' '+' '0' '2' -> '2' '+' '0' '2' -> '1' '+' '1' '2' -> '0' '+' '2' '3' -> '3' '+' '0' '3' -> '2' '+' '1' '3' -> '1' '+' '2' '3' -> '1' '+' '2' パーサが区別されないと仮定すると、端末と非終端私がここに実証されてきたように、シンボル、3までの番号については、単純な算術演算を行うことが可能です。 …

2
暗黙的なサブタイプと明示的なサブタイプ
このページは、 多くの言語は、暗黙的サブタイプ(構造的等価)を使用せず、明示的/宣言されたサブタイプ(宣言等価)を優先します。 私は主に明示的なサブタイピングを使用するプログラミング言語を使用しました。上記のメモで説明されているように、暗黙的なサブタイピングの利点は何ですか。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.