コンパイルされた言語
コンパイルされた言語は、その実装が通常コンパイラー(ソースコードからマシンコードを生成するトランスレーター)であり、インタープリター(実行前の変換が行われないソースコードの段階的なエグゼキューター)ではないプログラミング言語です。
この用語はやや曖昧です。原則として、コンパイラーまたはインタープリターで任意の言語を実装できます。両方のソリューションの組み合わせも一般的です。コンパイラはソースコードを何らかの中間形式(pコードまたはバイトコードと呼ばれることが多い)に変換し、それを実行するインタープリターに渡すことができます。
利点と欠点
翻訳プロセスのオーバーヘッドにより、コンパイル時にネイティブコードにコンパイルされたプログラムは、実行時に翻訳されたプログラムよりも高速になる傾向があります。ただし、ジャストインタイムコンパイルなどの新しいテクノロジーや、翻訳プロセスの全般的な改善により、このギャップが狭まり始めています。バイトコードを使用した混合ソリューションは、効率が中程度になりがちです。
低レベルのプログラミング言語は通常、特にプラットフォーム間のサポートではなく効率が重要な場合にコンパイルされます。そのような言語の場合、プログラムされたコードとマシンコードによって実行されるハードウェア操作との間に1対1の対応があり、プログラマーが中央処理装置(CPU)とメモリの使用を細かく制御しやすくします。
多少の努力をすれば、従来のインタープリター言語でもコンパイラーを作成することが常に可能です。たとえば、Common lispは、Javaバイトコード(Java仮想マシンによって解釈される)、Cコード(ネイティブマシンコードにコンパイルされる)、またはネイティブコードに直接コンパイルできます。複数のコンパイルターゲットをサポートするプログラミング言語を使用すると、開発者は実行速度またはクロスプラットフォームの互換性を選択するための制御を強化できます。
言語
一般にコンパイルされると考えられているいくつかの言語:
- エイダ
- アルゴール
- ALGOL 60
- アルゴル68
- 小さい
- ベーシック
- Visual Basic
- PureBasic
- C
- C ++
- Objective-C
- 迅速
- D
- C#(バイトコードへ)
- Java(バイトコードへ)
- クレオ
- COBOL
- コブラ
- 結晶
- eC
- エッフェル
- サザー
- Ubercode
- Erlang(バイトコードへ)
- F#(バイトコードへ)
- ファクター(最新バージョン)
- 前方へ
- Fortran
- 行く
- ハスケル
- Haxe(バイトコードまたはC ++へ)
- 陽気な
- ジュリア
- LabVIEW、G
- 舌足らずの発音
- Common Lisp
- 緑豊かな
- 水星
- ML
- 標準ML
- アリス
- OCaml
- 標準ML
- Nim(C、C ++、またはObjective-Cへ)
- Open-URQ
- パスカル
- Object Pascal
- デルファイ
- FreePascal / Lazarus
- Modula-2
- Modula-3
- オベロン
- Object Pascal
- PL / I
- RPG
- さび
- Seed7
- スピトール
- ビジュアルフォックスプロ
- ビジュアルプロローグ
- W
- ジグ
道具
- ANTLR
- CodeWorker
- レックス
- フレックス
- GNUバイソン
- ヤック