学校/大学レベルで分類されることが多いため、人気のあるプログラミング言語(C#、Java、C++)はすべて第3世代言語です(マシンの物理部分からの抽象化レベルが高い)。また、アセンブリ言語は第2世代、機械語は第1世代の言語に分類されます。
当初、SQLは第4世代言語と考えるべきだと考えていました。SQLはより抽象的であり、ループの詳細からは遠く、より記述的です。
たった今、第4世代と第5世代の言語があることを知りましたが、プログラミング言語またはテクノロジーを第4世代または第5世代の言語として分類するための基礎は何ですか?
また、第6世代や第7世代の言語もありますか?
単純な世代の概要:構成要素が次の場合、言語はn番目の世代です。
したがって、Google GoやApple Swiftは、3世代目ですが、Regexはテキストマッチング言語であるため、初期の4世代目言語です。 。この定義により、第4世代はDSLと緊密に連携します。ただし、C++などの言語は、Length
に加えて、Weight
やfloat
などの実際の型を持つことができることに注意してください。とdouble
は、それらをハイブリッドの3/4世代にします。
第5世代言語は、一般に、決して実現されないレベルのAIを必要とするため、実際には存在しません。私たちのプログラマーが依然として必要であるという事実は、プログラマーではない人が正確に望んでいることをコンピューターに十分な精度で伝えることができないからです。
「第n世代言語」は流行語です。マーケティング用語です。 n> 2の「n番目の世代」を正確に定義するものの普遍的に受け入れられている定義はありません。PerlやPythonなどの「スクリプト」言語は、はるかに高いため、4GLとして分類しますCよりもレベルが高い一方で、4GLの定義的な特性はSQLなどのドメイン固有のものであると考える人もいます。一部の新人は、Java(オブジェクト指向とガベージコレクションとリフレクション)は、Fortran(50年代から)およびC(70年代から)と同じ「3GL」カテゴリに属します。
「第4世代言語」のように混乱している分類は役に立ちません。古い教科書で見たり、80年代にプログラミングを始めた人々から聞いたりするかもしれませんが、「4GL」などのタグは、作者が正確に何を意味するかについての付随的な説明がなければ意味がありません。
「4GL」の意味をすぐに理解する人はいないため、このような分類は使用しないでください。代わりに、特定の用語を使用して、あなたの意味を正確に伝えてください。例えば。 NASM、LLVM IR、およびJasminはすべてアセンブリ言語ですが、後者の2つのターゲットVMと最後のVMもオブジェクト指向プログラミング言語です。それらすべてが2GLですか? SQLは、80年代からのデータベースクエリ用の部分的に宣言的なドメイン固有の言語です。そして、TeXは70年代からの植字のためのドメイン固有の言語です。どちらも多かれ少なかれドメイン固有なので、どちらも4GLですか?