什么是第四代和第五代编程语言?还有更多吗?[关闭]


36

由于通常在学校/学院级别进行分类,因此流行的编程语言(C#,Java,C ++)都是第3代语言(从机器的物理部件中具有更高的抽象级别)。同样,汇编语言被分类为第二语言,机器语言被分类为第一代语言。

最初,我认为SQL应该被认为是第四代语言,因为它更抽象,并且与循环细节和描述性相去甚远。

刚才我发现有第四代和第五代语言,但是将任何编程语言或技术归为第四代或第五代语言的基础是什么?

另外,还有第六代或第七代语言吗?



12
哦,如果只有人能就使第n代语言变成n ...的标准达成共识,没有任何标准可以真正束缚(除非声明更高的gen语言比较低的语言更能从裸机中删除-程度如何)未达成共识)。
奥德

5
C是哪个“代”?您能举一些第4代和第5代语言的例子,并告诉我们什么造就了每一代?即是什么标准将一种语言定义为“ n”代?
Mawg'1

3
Tbh我认为第X代语言的概念并没有真正的意义。
Pieter B

5
我正在做第14代语言,这将是纯粹的魔法,因为它是第七个儿子的第七个儿子....
大卫·康拉德

Answers:


36

简单世代概述:语言是构建要素的第n代

  1. 指示
  2. 抽象操作
  3. 域对象
  4. 计划目标

因此,即使像Google Go或Apple Swift这样的新语言仍然是可靠的第三代。正则表达式是一种文本匹配语言,使其成为第四代的早期语言。根据这个定义,第四代与DSL紧密结合。但是,请注意,除了and之外,诸如C ++之类的语言还可以具有诸如Length和的实际类型,这使它们成为第三代/第四代的混合体。Weightfloatdouble

第五代语言实际上并不存在,因为它们通常需要从未实现的AI水平。我们仍然需要程序员的事实正是因为非程序员无法以足够的精度告诉计算机他们到底想要什么。


1
关于最后一段的注意事项:J.Pitrat的博客中有一些与AI和程序员有关的有趣内容
Basile Starynkevitch 2015年

5
DONALD problem博客上的问题突出显示了我们仍然相距甚远sudo make me a sandwich,令人担忧的是,在过去50年中,我们已经取得了多少进展。
MSalters 2015年

1
@AndrewHoffmann这是怎么了?如果要建造桥梁,则最好为您的结构使用合适的材料,而铆钉最好为合适的尺寸(以及有多少尺寸?)。
didierc

1
@AndrewHoffman:AI一直是学术界的CS主题,而不是软件工程主题。可能有人争辩说,真正的工程学将是有益的。第一个自动驾驶汽车似乎是Google的一个很好的理由。
MSalters 2015年

6
@AndrewHoffman-为自己说话。我是一名软件工程师,每天都使用相当标准的工程实践。另外,我是一名认证工程师。我认为您的全部评论都是基于您的个人经验,而不是基于事实。
Engineer Dollery 2015年

88

“第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,因为它们或多或少都是特定于域的?


22
我正在开发8G语言。这将令人难以置信。...甚至会是炸薯条。我将以三笔轻松的价格出售许可证; ...)
BrianH 2015年

10
我认为编程语言世代应该以某种方式与喷气式战斗机世代相对应。这种令人敬畏的数量似乎足以证明在该主题上使用RFC是合理的。
toniedzwiedz 2015年

11
嗯,这回想起了第五代语言不久将变得如此易于使用以至于大多数程序员都无法工作的回忆。
2015年

5
@Izkata 1GL是二进制机器代码(例如amd64指令集)。2GL是一种文本汇编语言,为机器代码(例如GAS)提供助记符。3GL是对机器指令的抽象。Fortran是第一个这样做的,它允许程序员使用表达式和变量,例如(I + 7) * 3。但是,对于3GL类别的末尾以及4GL和5GL的具体含义尚未达成共识。
阿蒙(Amon)2015年

5
“有些nitwits甚至认为Java ...与Fortran ...属于同一“ 3GL”类别。”-而其他nitwits认为,如果两个事物看起来非常不同,那么就不会存在将它们分组的分类方案。根据与该计划相关的任何标准在一起?;-p
史蒂夫·杰索普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.