哲学理念:一生二、二生三、三生万物;周而复始,生生不息
追溯到 19 世纪,编程语言形成之前。
这是现代编程语言的祖先——雅卡尔织布机
织布机由法国著名织机工匠约瑟夫·玛丽·雅卡尔于 1801 年设计完成,她创造出了第一个高度多线程的处理单元。
阿达·洛芙莱斯建立了循环和子程序概念,编写了世界上第一个机器算法,后来被称为第一个计算机程序,只是由于当时没有计算机而无法运行。
学习编程其实就是学高级语言,即那些为人类设计的计算机语言。
但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。
现代编程语言
1957 年,美国计算机科学家约翰·巴科斯发明了全世界第一套高阶语言即 FORTRAN 语言,这是真正意义上被程序员使用的语言。
1959 年,美国海军准将及计算机科学家葛丽丝·穆雷·霍普发明了第一个面向企业业务的编程语言,又称“面向商业的通用语言”,被简称为 COBOL。
1964 年,美国达特茅斯学院约翰·凯梅尼和托马斯·卡茨简化了 FORTRAN,设计出了更适合初学者的 BASIC 语言。BASIC 更易学易用,从设计之初一直流行至今。
在高级语言形成之前,程序员使用的都是低级语言。
如二进制、汇编语言、Basic语言。
计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。
1972 年,丹尼斯·里奇在贝尔实验室工作期间发明了 C 语言,开启了现代程序语言的革命。除此之外, 他和贝尔实验室的同事还创造了伟大的 Unix 操作系统。
1983 年,本贾尼·斯特劳斯特卢普注意到C语言在编译方面还不够完美,于是在 C 语言的基础上引入并扩充了面向对象的概念,发明了—种新的程序语言并将其命名为 C++, 大大提升了应用程序的编程效率。
C/C++是一道分界线,在它之前的语言都统称为低级语言,由它衍生发展的语言归类为高级语言。可以说C/C++起到承上启下的作用。
1991 年,吉多·范罗苏姆决定发明一种没有花括号的语言,于是有了Python的诞生。
1994 年,拉斯马斯·勒德尔夫为他个人主页的 CGI 脚本制作了一个模板引擎,用来统计他自己网站的访问量。
这个文件被上传到网上之后用它的人越来越多。后来又用 C 语言重新编写,还添加了数据库访问功能。这门语言就是 PHP。
1995 年,布兰登·艾奇设计了一种语言,用于为世界各地的网页浏览器提供支持,并最终推出了 Skynet。后改名为 JavaScript。
后来 Java 使其陷入了商标麻烦,于是 JavaScript 被更名为 ECMAScript。但是人们还是习惯称之为 JavaScript。
1996 年,詹姆斯·高斯林发明了 Java,这是第一个面向对象的编程语言,在这里设计模式完全压倒了实用主义。
2001 年, 安德斯·海尔斯伯格认为使用 C 语言编程比起 Java 来说更酷。于是他参考 Java 的特征发明了 C#。
有这么一句话,“A生B,B生C,C生万物”。90%的计算机操作都会使用到C/C++。如window操作系统、驱动、补丁、浏览器、图像处理软件、人脸识别、工业控制、嵌入式等。
C语言发展史
UNIX
第一版由汇编语言完成
第二版由B语言完成
第三版由C语言完成
1967年, Ritchie进入贝bai尔实验室工作。贝尔实验室是当时世界上最有创造力的地方之一,著名的C语言、C++语言和Unix操作系统都诞生于此。一开始, 里奇和他的同事肯·汤普生开始研究DEC PDP-7机器,但是在这个机器上写程序很困难,只能用很底层很高深的汇编语言。于是汤普生设计了一种高级程序语言,并把它命名为B语言。但是由于B语言本身设计的缺陷,使他在内存的限制面前一筹莫展。1973年,里奇决定对B语言进行改良,他赋予了新语言强有力的系统控制方面的能力,并且新语言非常简洁、高效,里奇把它命名为C语言,意为B语言的下一代。
在开发C语言的同时,里奇和汤普生、布朗(贝尔实验室的另一名科学家)还接受了一个新任务,就是在DEC PDP-7上开发一个多任务、多用户的操作系统,1969年,他们用汇编语言完成了这个操作系统的第一个版本,里奇受一个更早的项目Multics的启发,将这个系统命名为Unix。
为了在全世界面前展现C语言强大的能力,里奇用C语言把Unix操作系统重写了一遍,这就是Unix第三版。而之前的第二版是用B语言开发的。1977年,为了推广贝尔实验室开发的Unix操作系统,里奇发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》,使C语言再向前跨出一大步,各种计算机都开始支持C语言。
1978年里奇和布朗一起出版了《C语言》一书,从而使C语言成为世界上应用最广泛的高级程序设计语言,而该书也成为计算机科学界最畅销的书籍之一。
C/C++并不是万能的,每种语言的发明必定有它的出众及优势性,没有哪一种编程语言可以解决所有的问题。但是C/C++是最古老的编程语言,很多语言都是由它衍生而来,所以想要学好编程,建议初学者们先学习C/C++,打好基础,对于后续学习软件工程如java的同学,会有很大的益处。
编程语言与它们所要解决的问题领域相关,当问题随着环境变化有变化的时候,就需要创造新的编程语言来适配它,所以编程语言一直在被创造设计出来。