编程语言的时代划分
虽然计算机技术发展日新月异,但是编程语言仍然处在低级阶段,不能与高速发展的计算机硬件相匹配,虽然由于七十年代的软件危机而提出“软件工程”、“敏捷开发”等概念,但是软件开发效率仍然落后于硬件。
有感于此,将计算机编程划分为几个时代(非权威版):
0)神话时代
典型代表河洛图、太极图、八卦图
这些昭示人类计算思想的起源。
1)返祖时代/史前时代
这个时代也许没有计算机硬件,或者计算机硬件所需要的技术超出时代可提供的技术支持。
中国虽然有算盘,很少用于科学工程计算,大多数情况用于财务核算。
祖冲之用算筹计算圆周率。
中国有万里长城,有富丽堂皇的宫殿,但工匠很少利用算盘进行工程计算,他们有简易的方法估算材料耗费,大多数是心算,这样可以防止被别人偷学。
1642年,帕斯卡发明齿轮式机械计算器,使计算速度超过笔算。
差分机是前人的设想,由于没有得到资助,于是差分机的任务落到了爱好钻研并且有资助金的巴贝奇的肩上了。1819年,巴贝奇设计“差分机”,并于1822年制造出可动模型。这台机器能提高乘法速度和改进对数表等数字表的精确度。
1991年,为纪念巴贝奇诞辰200周年,伦敦科学博物馆制作了完整差分机,它包含4000多个零件,重2.5吨。
在导师玛丽的引荐下,Ada结识了巴贝奇。在这个时期,Ada对巴贝奇的差分机入迷了,产生了浓厚的兴趣,差分机的主要思想就是将好多的加减乘除三角函数等统统变成加法来算,而加法计算是机械计算机的特长。
后来巴贝奇又发明了分析机,分析机的特色就是不只运算数,字母也可以,事件也可以,其实当吋的分析机就是现代计算机的雏形,称巴贝奇是计算机的鼻祖当之无愧。
Ada编写了第一个程序代码,是程序员的鼻祖。
2)荒蛮时代/石器时代
第一台电子计算机的发明,使计算机进入快车道。但是编程仍然是手工劳动。
第一台计算机需要人们象电话接线员一样工作,手工用电缆连接各个模块。
由于当时女性是电话接线员的主力,所以女性参与了程序代码的输入工作。
这种手工劳动十分费时费力,后来发明了穿孔带、穿孔卡。使得输入工作强度得到大幅度降低。
输入输出都靠穿孔卡/穿孔纸带。
在《功勋》中,于敏他们的计算机输出就是穿孔纸带。
于敏看到的纸带上并不是数字,也不是文字,而是类似这样的东西:
这种感觉就相当于你看到了这样的图:
然后判断出这里边的数据有问题,计算机出错了,你说牛不牛!
电视剧可能需要艺术化的表达, 根据 杜祥琬院士的的回忆,实际情况是这样的:
核武器的结构有很多层,各种材料爆炸以后,每一个时间点、空间点上,都有它的温度、速度、压力、加速度等物理量。于敏突然发现,某个量从某个点开始突然不正常了。
大家马上去查原因。杜祥琬去查方程、参数,没有发现错误;做计算数学、编程序的人去查原因,也没发现错误。
最后检查发现,原来一个加法器的原件坏了,换掉以后,物理量马上就正常了。
于敏厉害的地方在于,对物理规律理解得非常透彻,在浩如烟海的数据中,他一下就能发现这个趋势不对,那个量错了。
这个时代开始时没有汇编语言,没有操作系统。
后来为了方便助记,有了汇编语言,汇编语言不过是机器码的助记符。
3)游牧时代
弓箭的发明为人类进入游牧时代提供了物质可能,加上马的驯化,使人类可以在草原上弓马骑射。
弓箭使人类不仅使人类具有远程打击能力,更重要的是降低了对人类体力的要求。
在弓箭发明之前,强者可以霸占女性资源,而在弓箭发明之后,弱者可以对强者放冷箭,使强者为了保全自已,不得不同意一夫一妻,以照顾弱者的情绪。
这个时代有电动打字机。程序输入输出都靠这个打字机,人们可以不需要有阅读穿孔纸带的技能了。可以直接象阅读文本一样阅读程序的代码。

即使这样艰苦的环境,程序员仍然不放弃对艺术的追求,他们用打字机作画。
后来有了阴极射线管做的显示器,可以节省大量的纸张。
高级编程语言大大方便了计算机使用者,就象弓箭方便了古人打猎。
第一个高级语言是Fortran,我们当时学Fortran时是老版(估计是77版),格式是为了照顾穿孔卡。因此行号不会超过5位数。
Fortran之后就有LISP,Cobol等高级语言。
其中,Fortran,Cobol应用最广泛,一个用于科学计算,一个用于银行系统。
为了方便教学,有人发明了PASCAL语言。早期的数据结构作业都是用PASCAL来实现,后来才有C/C++,JAVA,Python版数据结构实现。
受高级语言影响,有人为了方便访问硬件,发明了C语言。
开始时,编程是面向过程的,后来编程语言升级到可以面向对象了,相当于发明了投石机,可以攻城略地了。
于是有了smalltalk, C++等面向对象语言。
打字器、显示器是这个时代的马,高级语言是这个时代的弓箭。
这个时代有了编译器,有了操作系统,有了数据库。
这个时代没有软件工程,编程开发取决于个人的即兴发挥。
这个时代的程序员比石器时代强的地方在于不需要精通穿孔纸带阅读,就象我们现在不需要精通文言文阅读一样。
这个时代,程序员感到一种解放,有一种可以在广大草原纵横驰骋的感觉,这是一个英雄的时代,若干年后,他们的事迹将成为传奇。
4)农耕时代
游牧民族组织水平低,一般是部落联盟为主。
与游牧业相比,农业时代养活一个人需要更少的土地,大约一亩耕地,而游牧文明至少需要30亩草地。
因此农业文明特别适合暴人口。
到了农业时代,由于生产力提高,人口增加,使得城市得到发展。城市的发展需要土木工程、水利设施等的支持。
有人称Java是一个工程化编程语言,因为这种编程语言标准化程度比较高,方便实施大规模程序开发。
一方面,100个Java工程师写出来的代码差不多,代码管控比较容易,岗位可替换程度比较高。
另一方面,Java兼容性比较好,用Java1.4写的代码仍然可以运行在新的JVM环境中,而用python2.x写的代码很难运行python3.x环境中。
有了Java语言,编程进入大规模农耕时代。
对于农民而言,他们相信只要播下种子,一般都能长出粮食,而且每一根苗都长得差不多。他们需要与杂草/bug做斗争,因为杂草长得比苗快,更容易侵占苗的资源。
这个时代有软件工程了,就象农耕时代,人们会重视兴修水利,没有农业时代的组织力基础,人们很难进入工业时代。东南亚国家的农业不发达,影响了他们进入工业时代。
由于Java的标准化程度很高,围绕Java产生了一系列框架,形成完整而庞大的生态系统,如同农业时代的沟渠,有源源不断的活水。
这个时代有了服务器集群,而在游牧时代,IBM总裁认为全球只需要5台IBM大型机。有了互联网,有了网页,一部分程序员分化出来从事前端开发,用JS开发前端,一部分分化出来,用SQL从事数据处理工作。
在这个时代,有人估计,全球有:
Java 程序猿900万高居第一;
C# 大约 780 万;
JavaScript 大约 760 万;
PHP 将近 600 万;
C++ 大约 440 万;
Python 有 400万;
5)蒸汽时代蒸汽机为工业时代提供了动力,使人类摆脱人力、畜力、风力、水力驱动,可以采用化学能力驱动。
我们有望看到编程的蒸汽时代的曙光。
编程的蒸汽时代的动力来自于AI。
一些公司正在用AI分析github代码库,希望AI能自动完成代码初步编程,将人类从繁重的代码书写中解放出来。
6)电力时代
这个时代的突破将源自脑机接口的突处,人们心意一动,一段代码就在后台生成了,借助3D增材制造,人们会象崂山道士一样造出各种东西。
在《封神演义》中,神仙有许多拿着声控武器,一声令下,飞剑杀敌。
7)后工业时代
代码是什么,不过是意志的体现。在后工业时代,产品不再是稀缺物品,营销成为主流。
8)霓虹时代
这是一个消费的时代,这是一个纵情享乐的时代。
人类心想事情,不受各种法律道德约束,可以在自已的元宇宙中cosplay。
9)信息时代
这是一个需要重新定义“信息”的时代。人们认识到信息等同能量,黑洞是一个巨大的信息库,获得信息本身就是获得一种强如超新星的能量。
------------------------
不断补充完善,感谢各位支持。