计算机各种语言的前世今生

兄贵
楼主 (文学城)

我总结了一下主要计算机语言之间的血缘关系。

像COBOL这个语言,基本上没什么后代,所以忽略不计了。SQL比较独立,也忽略了。

Fortran,Lisp, ML, SASL, SETL, 这些算是开创性的语言,从左到右,是祖宗到孙儿的关系。比如 Python 这门语言,是在 C 和 SETL 两门语言的影响下 发展起来的,C 和 SETL 算是 Python的父母。Python 催生了Julia, Swift, 和 Ring, 所以这三门语言算是 Python的子女。当然 子女的父母可能很多,比如 Julia 结合了 Fortran(速度快),Ruby (Rigorous),Lisp(Functional programming)和 Python (易学易懂)这些父母的优点。

希望这张图可以帮助小孩对计算机语言有高屋建瓴的战略大局观,更希望各位对本图的错误给与批评指正。

a
avw
好乱
两女宝妈
大姐,你绝对是紫檀的一股清流:)
兄贵
砍掉一些不重要的,可能会好些
兄贵
没有,没有
兄贵
CMU的CS专业必修的是 C 和 SML,其他可以不学。IS专业必修的是Java和SQL,其他可以不学
两女宝妈
收着吧,你看下面帖子争来吵去的,你上了一个内容庞大的图,线条倒是都很清新。。。
追求平凡
佩服,佩服!太能干了!我庆幸不是您的同事,不然,可能被炒300回了。哈哈哈
小团圆
看这图幸好没学CS懂不了。
兄贵
谢谢,各人兴趣不同吧。吵架我也喜欢,只是时间紧,有空不吵,闲着也是闲着
大号蚂蚁
点赞。然并卵。回字有N种写法。
t
tibuko
对计算机“语言”有种病态的执着,哈哈
兄贵
我是没吃过猪肉,只见过猪跑的,那种没进过CS系的业余爱好者。难道能撼动你们职业家呢
F
FutureIsNow
看了一下,我也是老古董了。LISP, Pascal, c, java, c#, Javascript,,, 都用过!!!
追求平凡
牛人。太谦虚,太客气,哈哈哈,我留下您的作品,慢慢研读。
追求平凡
你也是牛人!
P
Pilsung
高中生,你推荐是学Python还是JS?感觉JS可以做网页啊。但是我又想让孩子学一点robotics,感觉Python

可以用在自控上。

N
Numero
用心了。你为什么对计算机语言这么钻研和执拗呢?作为非CS专业的外行,我觉得

计算机语言就是工具,这个工具会越来越简洁明了方便,而以前古老的语言,慢慢用的人越来越少

渐渐消失,也没有必要深究了

。。。

两女宝妈
+1
两女宝妈
楼主肯定是兴趣所在:)
N
Numero
robotics编程的话,就学Java可以了。JS是JavaScript吗?它是scripting language
t
tibuko
两种都有用,用途不同
z
zeno
阿贵啊,你对那个openAI的chat有啥看法啊?

这是我用你的问题问她的:

“总结了一下主要计算机语言之间的血缘关系“

你好!我可以尽力为你简单介绍一下计算机语言之间的血缘关系,但需要说明的是,计算机语言之间的血缘关系是一个比较主观和复杂的问题,不同的人可能会有不同的看法。

主要计算机语言中,一些语言会从其他语言派生而来,例如C语言从B语言派生而来,Java语言从C++语言派生而来。这些派生的语言通常会继承原语言的一些特性,并增加一些新的特性。

此外,还有一些计算机语言是由多种不同的语言混合而成的,例如Perl语言,它是由C语言、sed和awk等语言混合而成的。这类语言通常会继承这些基础语言的特性,并提供一些新的特性。

最后,还有一些计算机语言是完全独立开发的,例如Python语言。这些语言通常会有自己独特的特性,并不依赖于其他语言。

总的来说,计算机语言之间的血缘关系是一个比较复杂的问题,有许多不同的因素需要考虑。

编译型语言:C、C++、Java、Objective-C、Swift、Kotlin 解释型语言:Python、Ruby、JavaScript、PHP、Perl 脚本型语言:Bash、Powershell、VBS

C语言是第一门被广泛使用的计算机语言,它的许多语言都是从它派生出来的,如C++、Objective-C、Swift等。Java语言也是从C语言派生而来.

Python和Ruby是动态类型的解释型语言,它们的语法风格相似,主要应用于Web开发和数据处理。PHP和Perl也是解释型语言,它们比较适合于快速开发和脚本编写。

脚本型语言是针对操作系统的命令行工具而设计的,如Bash、Powershell、VBS等,主要用于自动化任务和系统管理。

总之,计算机语言之间的血缘关系非常复杂,它们各有特点,适用于不同的场景和领域。

F
FutureIsNow
不牛,生存压力,什么Hot学什么。
两女宝妈
哈哈哈,你叫楼主“阿贵”,哈哈
P
Pilsung
我觉得Java比较复杂啊,比Python和JS都复杂多了,一上来就学难的吗?

我觉得Python跟RAS Berry PI弄一起,孩子可以自己弄点小机器人玩玩那。

而且Python的library挺多,还有以后要是学ML或是neural Network,Python的功能也算强大吧。

P
Pilsung
但是我觉得高中生就能学两种语言吗?是不是有点太过了,毕竟孩子高中学习不轻松啊。
兄贵
牛!没学Fortran?
N
Numero
高中生的话,可以学,不难。语言是边实践边进步的,先入门,没问题。python也可以

Java,python都是programming  language,JS是scripting language,像替补哥说的,都有各自用处

不能互相取代

z
zeno
嘿嘿,不然怎么尊称?
兄贵
robotics最好学C和C++,因为Arduino及硬件结合多。如果Raspberry Pi可Python
风景线2
了解这些没什么意义
兄贵
高中生的通用语言,Python当仁不让,但是AP要考Java。另外做网页最好Javascript和SQL
F
FutureIsNow
没赶上。
F
FutureIsNow
两种语言不算啥,CS要学的多了去了。
正园
兄贵,记得以前你发过一个贴,讨论C++,python和Java用于usaco时的优缺点的深层原因,我搜了一下, 没找到,

能否再贴一下,先谢谢了。

兄贵
计算机语言是非常重要的内容。CS的一大分支,另外我也不执拗。 看我在总图中,语言只是一部分,进来看图

N
Numero
这有点像做数学证明题,需要用股沟定理的话,直接拿来用就好了,不必每次都要考虑股沟定理的历史 LOL
兄贵
谢,你说的都在我图中的一部分。略有不同是因为因人而异不同解读。比如我觉得C是B的弟弟,而不是儿子,他们都是从BCPL派生
兄贵
谢谢,我确实专门长时间研究过这三个语言用于USACO。结论是要用C++
P
Pilsung
我们家有很多Arduino的硬件。LD主要用C和MATLAB。但是他也买了一些RAS BerryPI的硬件。
正园
谢谢你的回复。能否再说一下这三种语言的底层原因吗?好像是compile后内存分配不一样?或者是变成机器语言不一样?最优化

不一样?

兄贵
原因有2,一是B没有成为通用语言,二是BCPL是MR搞的,B和C都是KT搞的,C相当于B的2.0
兄贵
Java和Python并不产生机器语言,而是VM上的bytecode,所以很慢。USACO上同样的白金题,同样的算法,

Java和Python并不产生机器语言,而是VM上的bytecode,所以很慢。USACO上同样的白金题,同样的算法,C++过了,而Java和Python往往不过,因为耗时太多,另外C++的Standard Template Library (STL), 有非常强大的库

正园
谢谢你的解释!明白了:)
老生常谈12
老兄总结得好。ADA, A, B语言呢?当然汇编语言和机器码语言就不必说了。

我是会10种以上的汇编语言和2种机器码,C,C++, Java,PASCAL, 别的不会了。

兄贵
Ada在Pascal分支,B在BCPL分支,不知道A,是APL,或者A++?
N
Numero
佩服!话说,计算机语言理论(PLT)确实是CS的一大分支,但是跟你说的这些不是一码事