很多人听到的版本是或者类似于:
机器语言(第一代语言,可以直接被机器执行)
如果需要了解得更多,那你不要错过微指令,还有各种架构。比如amd64(即 x86_64)、arm64(或者称之为aarch64)
汇编语言(第二代编程语言,有简单的助记单词,但是基本执行流程的改变全靠各类jmp)
这里同样注意,汇编语言起码有两种。一种是Intel的(他们甚至有文档),另一种是……我忘了,好像是ARM的?
写法会有所不同。
当然了,你不会觉得像是汇编语言这种风格的都是比较原始的吧?那我可要推荐一下(可能是我想错了)Forth,一种基于堆栈的,号称是第四代的编程语言。
(虽然没用过,但我的直觉告诉我他长得应该和汇编有点像,但确是高级语言)
C
这位不需要介绍了。如果认为他是个鼻祖,那么实在是大错特错。
首先,C是编译型的语言,也就是源代码预先转化成机器语言。而他的老父亲叫B,是一门解释型的语言(源代码是一边解释其含义一边运行,或者一次性读取,解释完其含义后运行,或者是编译为特定的字节码一类的(这里典型就是java)……——总之,解释型语言并不会编译到机器语言),而且好像没怎么区分类型。
再往前好像是BCPL。
无论是BCPL、B、C都和一个传奇的地方—— AT&T 贝尔实验室离不开关系。
说起这个,我们还可以提起万恶之源 UNIX,还有楼下的C++,以及不在这里头Objective-C。
让我简要说明:
当时有两个家伙在鼓捣新系统,也就是UNIX,这是一款分时的系统(你可能无法想象,如今稀疏平常的一个处理器同时运行多个程序在当时……)(关于分时,请自行了解)
在C语言之前,他们选择的系统编程语言是B。但是B不好用。于是有了C。
那么C++(起源于 C with class,通过一些宏啥的打打C的补丁,使得其支持面向对象)、Objective-C(苹果在改Swift前用的就是这个,这是一门啰嗦的语言)则是两个不同的同事对其改进,而且改进的方向是不同的。
C++
JAVA
C#
这里需要说明,面向对象并非这几个家伙的原创。你应该参考SmallTalk
Python PHP JavaScript
这些语言都是比较现代的语言了,除了PHP之外,剩下的我想每个学过计算机的人都多少知道一点。甚至不学计算机的,也可以轻松掌握。
回到过去
既然C并非鼻祖,那么谁是呢?
我认为有两个。一个是生不逢时的Lisp(有个笑话是说现在的语言都在朝Lisp发展)
另一个是ALGOL(应该没拼错吧?)
Lisp我们不用鸟他,因为他和我们平时所熟悉的语言完全不同且接受他需要我们肃清一下脑袋中已有的偏见
ALGOL则是命令式(我们上面提到的大部分语言都是)编程语言的鼻祖。
还是休息吧
说了这么多,感觉不一定对。大家可以看看《编程之魂》放松一下。
这是一本非常好的书,里头是对不同语言的创始人的采访。你可以找到为什么如此设计,以及他们是如何评价其他语言的。