「プログラミング/共通知識」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎字句解析機・構文解析器: 構文解析器と字句解析器を取違える間違えがあった。;構文の衝突に関する言及。lex yacc あるいはキーワード解析の完全ハッシュ関数化に関しては、コラムにまとめる予定。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎インタプリタ: 敬体に統一
タグ: 2017年版ソースエディター
131 行
プログラムを処理するためのソフトウェアを'''言語処理系'''と呼び、言語処理系は[[#インタプリタ|インタプリタ]]と[[#コンパイラ|コンパイラ]]に大別されます。
 
=== インタプリタ ===
インタプリタとは、プログラミング言語で書かれたソースコードや中間式を逐次解釈しながら実行するプログラムのことです。
'''スクリプト言語'''と呼ばれる言語は、おおむねインタプリタ方式を採用しています。
言語処理系の主要な実装がインタプリタなプログラミング言語を'''インタプリタ型言語'''(''Interpretive language'')と呼びます。
 
インタプリタ型言語には
* [[Lisp]]
* [[JavaScript]]
144 行
などがあります。
 
手軽に書いてすぐ実行できるというメリットがある反面、プログラムの実行時に毎回解釈をする必要があるのでプログラムの実行速度はコンパイル方式のプログラミング言語に実行速度が劣る場合があります<ref>インタープリタは実行時に「どの部分が多く実行されたか?」「分岐命令でどちらに多く分岐したか?」などの実行時統計情報を容易に手に入れることができ、これらに基づき[[W:実行時コンパイラ|実行時コンパイラ]](JIT)による最適化が可能となります。よって、一概にインタプリタ方式がコンパイル方式より実行速度が劣るとは言えないません。</ref>。
インタプリタ方式を採用した言語の処理系は、ソースコードを直接実行するのでプログラムを書換えると、即時に実行結果もそれに応じて変化します。
 
=== コンパイラ ===