問題タブ [language-theory]
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.
language-agnostic - 言語評価の質問: Eager Vs. 怠惰
Shriram の PLAI を読んでいましたが、これらの質問に行き詰まりました。
熱心な政権と怠惰な政権が常に同じ答えを生み出すことを証明できますか? (Shriram は彼が開発した言語を調べるように求めますが、これを証明する別の方法とその方法はありますか?)
ステップ数が少ないと熱心な評価は常に減少しますか?
これがClojureの置換と熱心な評価のコードです。
theory - 通常の言語ではないテキストプロトコルは?
テキスト ネットワーク プロトコルに関連付けられた文法を表す通常の方法は、ABNF を使用することです。
あらゆる EBNF 関連のメタ構文と同様に、ABNF は文脈自由文法の記述を可能にします。
これらの文脈自由文法は、非正規言語を表すことができますよね?
ネットワーク スタックを実装する通常の方法は、ステート マシンを開発することです。通常の言語ではないテキスト ネットワーク プロトコルはありますか?
language-agnostic - LogoとEmacsLispの他に、他の純粋な動的スコープ言語は何ですか?
動的スコープ言語の例は何ですか?そして、そのデザインを選んだ理由は何ですか?実装しやすいからですか?
python - 「レジスターマシン」とは正確には何ですか?
http://code.google.com/p/unladen-swallow/wiki/ProjectPlanから引用します:
「JITを使用すると、Pythonをスタックベースのマシンからレジスタマシンに移動することもできます。これにより、他の同様の言語でのパフォーマンスが向上することが示されています(Ierusalimschy et al、2005; Shi et al、2005)。」
大学では、再帰的プロシージャを使用する言語用の単純なコンパイラを構築しました。これにより、呼び出される各プロシージャのスタックフレームが維持され、再帰的に呼び出され、パラメータと戻り値が機能するようになります。
2つのこと:
1)上記の引用で使用されている用語を考えると、私が実装したものは「スタックベースのマシン」と見なされると考えるのは正しいですか?
2)ポイント(1)の私の仮定が正しかった場合、「レジスターマシン」はどのように機能しますか?つまり、スタックベースのマシンとどう違うのですか?
ありがとう!
programming-languages - 契約/制約に基づく型システムについての良い情報はありますか?
問題:
契約/制約に基づく型システムについての良い紹介を探しています(申し訳ありませんが、どの用語が型システムに適しているか覚えていません)。
このような実験型システムを実装するには、その情報が必要です。
私の知る限り、このような型システムはXSD(Xml Schema Definition)で使用されています。
データ型を定義する代わりに、可能な値のセットに対する制約を定義します。
例:
"nothing"
のいずれかであるか、積分範囲に一致するパラメーターを使用して、いくつかのメソッドを定義します[0..100]
。
このようなメソッドは、次の値を受け入れます。
自分のことをはっきりさせたいと思います。
programming-languages - 「閉鎖」と「ブロック」の違いは何ですか?
多くの人が閉鎖とブロックという言葉を同じ意味で使用していることに気づきました。これらの人々のほとんどは、自分が話していることを説明できません。
一部の Java プログラマー (非常に高額なコンサルタント会社のプログラマーも含む) は、匿名の内部クラスを「ブロック」や「クロージャー」と呼んでいますが、私はこれが正しくないことを知っています。(変更可能な変数を、それらが定義されているメソッドのスコープから渡すことはできません...)
を探しています:
- ブロックの正確なコンピュータ サイエンス定義
- クロージャの正確なコンピュータ サイエンスの定義
- そして両者の違いを明確に。
これらに関するリンク、記事、または参考文献をぜひご覧ください。
types - データ型プログラミング
「命令型」プログラミングと「関数型」プログラミングについては知っていますが、「データ型」プログラミングについてはほとんど知りませんでした。そのようなものはありますか、それは他のパラダイムとどのように関連していますか?
programming-languages - すべての反復アルゴリズムは再帰的に表現できますか?
そうでない場合、再帰的な対応物が存在しない反復アルゴリズムを示す良い反例はありますか?
すべての反復アルゴリズムを再帰的に表現できる場合、これを行うのがより難しいケースはありますか?
また、この中でプログラミング言語はどのような役割を果たしているのでしょうか? Scheme プログラマーは、Java のみのプログラマーとは反復 (= 末尾再帰) とスタックの使用法が異なると想像できます。
scheme - CPS 変換後の管理用 redexes とは正確には何ですか?
スキームとCPS変換のコンテキストでは、管理用の正規表現(ラムダ) が正確に何であるかを判断するのに少し苦労しています。
- CPS 変換によって導入されるすべてのラムダ式
- CPS 変換によって導入されるラムダ式のみですが、「手動で」またはよりスマートな CPS コンバーターを介して変換を行った場合は記述しませんでした。
良ければ参考になれば幸いです。