由于通常在学校/学院级别进行分类,因此流行的编程语言(C#,Java,C ++)都是第3代语言(从机器的物理部件中具有更高的抽象级别)。同样,汇编语言被分类为第二语言,机器语言被分类为第一代语言。
最初,我认为SQL应该被认为是第四代语言,因为它更抽象,并且与循环细节和描述性相去甚远。
刚才我发现有第四代和第五代语言,但是将任何编程语言或技术归为第四代或第五代语言的基础是什么?
另外,还有第六代或第七代语言吗?
由于通常在学校/学院级别进行分类,因此流行的编程语言(C#,Java,C ++)都是第3代语言(从机器的物理部件中具有更高的抽象级别)。同样,汇编语言被分类为第二语言,机器语言被分类为第一代语言。
最初,我认为SQL应该被认为是第四代语言,因为它更抽象,并且与循环细节和描述性相去甚远。
刚才我发现有第四代和第五代语言,但是将任何编程语言或技术归为第四代或第五代语言的基础是什么?
另外,还有第六代或第七代语言吗?
Answers:
简单世代概述:语言是构建要素的第n代
因此,即使像Google Go或Apple Swift这样的新语言仍然是可靠的第三代。正则表达式是一种文本匹配语言,使其成为第四代的早期语言。根据这个定义,第四代与DSL紧密结合。但是,请注意,除了and之外,诸如C ++之类的语言还可以具有诸如Length
和的实际类型,这使它们成为第三代/第四代的混合体。Weight
float
double
第五代语言实际上并不存在,因为它们通常需要从未实现的AI水平。我们仍然需要程序员的事实正是因为非程序员无法以足够的精度告诉计算机他们到底想要什么。
DONALD problem
博客上的问题突出显示了我们仍然相距甚远sudo make me a sandwich
,令人担忧的是,在过去50年中,我们已经取得了多少进展。
“第n代语言”是一个流行词。这是一个营销术语。对于n> 2,没有确切定义“第n代”的定义的普遍接受的定义。有些人将诸如Perl或Python之类的“脚本”语言归为4GL,因为它们比C更高级,而另一些人则认为4GL的特点是它们是特定于域的,例如SQL。一些机智的人甚至认为Java(一种90年代中期的语言,充满了面向对象,垃圾回收和反射)与Fortran(从50年代开始)和C(从70年代开始)属于同一“ 3GL”类别。
像“第四代语言”这样混乱的分类是没有用的。您可能会在旧的教科书中看到它,也可能从80年代开始编程的人们那里听到它,但是诸如“ 4GL”之类的标签如果没有附带的作者确切含义的解释,就一文不值。
由于没有人能立即理解“ 4GL”的含义,因此您不应使用此类分类。相反,请使用特定术语来准确传达您的意思。例如,所有NASM,LLVM IR和Jasmin都是汇编语言,但是后两种目标VM,最后一种也是面向对象的编程语言。这些都是2GL吗?对于80年代以来的数据库查询,SQL是一种部分声明性的领域特定语言。TeX是70年代以来用于排版的特定领域语言。它们都是4GL,因为它们或多或少都是特定于域的?
(I + 7) * 3
。但是,对于3GL类别的末尾以及4GL和5GL的具体含义尚未达成共识。