ほとんどこれは偶然です。
プログラミング言語は時間とともに進化しており、コンパイラーとインタープリターのテクノロジーは改善されています。基になる処理の効率(つまり、コンパイル時間、解釈のオーバーヘッド、実行時間など)も、主流のコンピューティングプラットフォームが成長するにつれて重要性が低下しています。
言語構文には影響があります。たとえば、Pascalは非常に慎重に設計されているため、シングルパスコンパイラを使用できます。一方、Adaはこれに注意を払わず、Adaコンパイラーは書くのが難しいことで有名です-ほとんどは複数のパスを必要とします。(私が何年も前に使用した非常に優れたAdaコンパイラは、8パスコンパイラでした。ご想像のとおり、非常に低速でした。)
Fortran(コンパイル済み)やBASIC(解釈済みまたはコンパイル済み)などの古い言語を見ると、非常に厳密な構文規則と意味規則があります。[BASICの場合、Billsの古いBASICではありません。その前に元に戻す必要があります。]
一方、APL(たくさんの楽しみ)のような他の古いものを見ると、これには動的なタイピングがありました。また、一般的に解釈されましたが、コンパイルすることもできました。
寛容な構文は難しいものです。それは、オプションのものや推論できるものがあることを意味する場合、その言語には十分な豊富さがあり、meansされる可能性があることを意味します。そして再び、BASICには、何年も前に「LET」ステートメントがオプションになったときがありました。
現在見られるアイデアの多く(たとえば、型なしや動的な型付け)は実際には非常に古く、1970年代または1980年代初頭に最初に現れました。それらの使用方法、およびこれらのアイデアが使用される言語は変化し、成長しました。しかし基本的に、新しいものの多くは、実際には新しい服を着た古いものです。
ここに私の頭の上のいくつかの例があります:
- APL:動的型付け。一般的に解釈されます。1960年代/ 1970年代から来ました。
- 基本:強力または動的な型指定。解釈またはコンパイル。1970年代以降。
- Fortran:強い型付け。編集済み。1960年代以前。
- Algol68:強い型付け。編集済み。1960年代。
- PL / 1:強い型付け。編集済み。1960年代。
- パスカル:強い型付け。編集済み。1970年代。(しかし、1980年代には、JITコンパイラに非常によく似たPシステムコンパイラがありました!)
- 初期のDECによるFortranやその他の実装の一部は、部分的にコンパイルされ、部分的に解釈されました。
- Smalltalk:動的型付け。解釈されるバイトコードにコンパイルされます。1980年代。
- プロローグ:より奇妙。機能的。コンパイル済み(Turbo Prolog、誰か?)。1980年代。
- C:強い(ハハ)タイピング。編集済み。1960年代..今日
- Ada:非常に強力なタイピング。編集済み。1980年代。
- Perl:動的型付け。(強力な構文)。解釈済み。1990年代(?)
続けられた。
- Nitpickersコーナー:多くのインタープリター言語は、ソースが読み込まれた/読み込まれた時点でトークン化または「バイトコンパイル」されます。これにより、インタープリターのその後の操作が非常に簡単になります。コードのバイトコンパイルバージョンを保存できる場合があります。できないこともあります。まだ解釈されます。
更新:十分に明確ではなかったため。
入力は大きく異なります。
コンパイル時の固定静的型付けが一般的です(C、Ada、C ++、Fortanなど)。これは、タイプのTHINGを宣言する場所であり、その方法は永遠に続きます。
また、動的型付けを行うこともできます。動的型付けでは、割り当てられている型を取得します。たとえば、PHPと初期のBASIC、およびAPL。変数に整数を割り当て、それ以降は整数型でした。後で文字列を割り当てた場合、それは文字列型でした。等々。
そして、たとえば、数値整数(引用符で囲まれた文字列)を変数に割り当ててから数値を追加するなど、本当に奇妙なことを実行できるPHPのように、緩やかな入力があります。(たとえば、 '5' + 5は10になります)。これは奇妙な国ですが、時には非常に便利です。
ただし、これらは言語に組み込まれた機能です。実装はまさにそれを実現します。