「方言 (プログラミング言語)」の版間の差分

削除された内容 追加された内容
m編集の要約なし
JavaScriptとリンク
3行目:
プログラミング言語においては、[[ソースコード]]の互換性が方言の性質を決定する。逆に同じソースコードを同じプラットフォームにおいて同じ意味で解釈しても、吐き出される[[オブジェクトファイル|実行コード]]は[[処理系]]ごとに異なっている事が普通である。なぜならコードは[[最適化]]などの段階を経るため、利用者にとって「同じである」と判断される動作さえ行えば、実際の内部構造は問わないからである。言語仕様によっては、これら最適化などの段階についても仕様のうちに内包して制御する。
 
最も頻繁に見られる方言の例は、統一仕様をもった言語に対して複数の[[コンパイラ]]、[[インタプリタ]]が独自の拡張仕様を盛り込むケースである。[[BASIC]]はこの種の典型で、一応は規格が存在するのだが、言語間での互換性はほとんどないに等しい状態となった。近年では[[JavaScript]]などもブラウザ間の互換性が問題となっている。
 
逆に、特に定まった規格がなく、処理系=仕様という形態から方言が生じたケースも多い。[[LISP]]はS式表現とcar, cdr, eval, condといった基本的な語彙があればほとんど自由に機能拡張ができるため、[[Common Lisp]]が策定されるまでは無数の方言が乱立する状態にあった。現在普通に使われる処理系はCommon Lisp系、[[Scheme]]系、[[Emacs]]のEmacs Lisp程度で以前よりは安定した状態にあるが、それでも実装毎の差違がかなり見られる。