本篇是稍微科普类的文章,谈及 计算机发展的几个阶段与一些主流编程语言的历史。博主在此分享给大家的原因是:“ 它对编程语言的学习使用带来指导作用,能够让我们更加清晰自己所处的时代,并以此指导自身下一步的进步与发展。”
计算机技术的演进
整个计算机时代呈指数趋势来发展,到今天为止,大致可以分为四个时代:
- 1946-1981计算机系统结构时代(35年):
在这一时代中,科学家和工程师努力地研制不同类型的计算机和计算机体系结构。这个时期我们有了很多种的CPU,很多种的计算机系统,操作系统,以及编译器,解释器等不同的系统软件。
- 1981-2008网络和视窗时代(27年):
2008年,安卓操作系统的诞生标志着计算机由个人“PC时代”进一步向移动时代转换。这一时代中,有两项技术快速发展,一项技术即为互联网,第二项技术是windows视窗操作系统。
- 2008-2016复杂信息系统时代(8年):
在这8年间,出现了很多新名词:云计算、网络安全、大数据等等。而只有系统变得非常复杂的时候,才会去关注网络安全。
- 2017- 人工智能时代:
2017年5月27日,柯洁0:3AlphaGo标志着人工智能时代的到来。
- 回顾计算机技术演进的四个阶段:
1946-1981:计算机系统结构时代:计算能力问题
这一阶段我们重点解决的是计算能力问题,即通过计算设备来提供更充分、充足和好用的计算能力。
1981-2008:网络和视窗时代:交互问题
这一阶段我们主要解决人与计算机、计算机与计算机的交互问题。人与计算机的交互通过操作系统的视窗来体现,计算机与计算机的交互通过互联网来体现。
2008-2016:复杂信息系统时代:数据问题
这一阶段我们将各种信息化系统在各种维度上整合,系统一旦进行整合,实际上解决的问题都将与数据相关。无论是数据接口问题、数据产生的速度问题、数据存储问题等等。
2017- 人工智能时代:人类的问题
2017年虽然标志着人工智能时代的到来,但我们离真正的人工智能时代应用还有很长的一段距离。正是由于在这个时代,基础工作被计算机陆续接管,我们更关心的是人类自身的问题,用计算机帮助人类达到人类希望达到的功能效果。
在复杂信息系统时代,过渡到人工智能时代,会有一个新的短暂时期,也就是我们现在所处的这一时代。在这里我们要关心计算,关心交互,关心数据,更要关心人工智能。在这个时代,我们有大量的计算需求,而且以爆炸形式发展。
过渡时期——新计算时代:关心计算、关心交互,关心数据,更要关心人工智能。
编程语言
编程语言的种类
- 机器语言
- 一种二进制语言,直接私用二进制代码表表达指令;
- 计算机硬件(CPU)可以直接执行,与具体CPU型号有关;
- 完成2+3功能的机器语言:11010010 00111011
至于这一串0-1代码可以在哪一款CPU上执行,怎样执行,执行结果怎样表达,需要去参考每一个CPU的参考手册。
机器语言用来编程是不现实的,它继续演进:
- 汇编语言
- 一种将二进制代码直接对应助记符的编程语言;
- 汇编语言与二进制代码一一对应,与CPU型号有关,程序不通用,需要汇编器转换;
- 完成2+3功能的汇编语言:add 2, 3, result
机器语言、汇编语言其实都不适合编程,它只适合计算机底层硬件的设计和开发。在上个世纪六七十年代提出高级语言:
- 高级语言
- 更接近自然语言,同时更容易描述计算问题;
- 高级语言代码与具体CPU型号无关,编译后运行;
- 完成2+3功能的高级语言:result = 2+3
在此基础上是否有其他编程语言类型? 有! 它不仅接近自然语言、与CPU型号无关,它还粘合已有程序,具备庞大的计算生态:
- 超级语言:
- 具有庞大计算生态,可以很容易利用已有代码功能;
- 编程思维不再是刀耕火种,而是集成开发;
- 完成2+3功能的超级语言:result = sum(2,3)
至于sum()是自己写的,还是来自于生态库,便不重要了。
高级语言
世界上有超过600多种编程语言,全部的语言首字母可以覆盖A-Z全部的字母表:
Basic、C、C++、C#、CSS、Fortran、Go、HTML、Java、JavaScript、Lisp、Lua、Matlab、Object C、Pascal、Perl、PHP、PostScript、Python、Ruby、Scala、SQL、Swift、VBA、VB.NET、Verilog、VHDL、Visual Basic……
编程语言,也是一个江湖!
辣么多编程语言,事实上当初不同的语言的初心和适用对象都是不同的。
- C 学习内容:指针、内存、数据类型等——处于计算机系统结构时代
C语言的本质,是希望编程者能够理解计算机系统结构,使得你编写的程序更符合计算机的结构,让它运行起来的效率更高。C语言核心解决的是性能问题,这是因为C语言诞生在计算机系统结构时代,是用来编写操作系统的语言——在计算机诞生之初,内存只有几兆,计算机的硬件无法提供更多的资源来支撑程序运行。
它适合计算机类专业,做计算机底层程序的设计和开发。
- Java 学习内容:对象、跨平台、运行时等——诞生于网络与视窗时代
网络和视窗时代,当时所有的计算机都期望能与其他计算机进行交互,但是在一台计算机上编写的程序是否能在另一台计算机上运行?因此Java语言提出了面向对象的编程方式,通过跨平台的方法去解决跨平台的问题。面向对象又进一步抽象了计算机编程代码的级别,使得代码复用变得更为高级和更为灵活。这一语言希望我们去理解程序设计过程中主体和客体的关系,本质上它是用来解决跨平台和程序中的交互问题。
它适合软件类专业。
- C++ 学习内容:对象、多态、继承等面向对象的概念
它既是C语言的演进,又具有面向对象的特点,并希望我们理解主客体之间的关系。它适合于大规模程序的编写,比如操作系统的编写、大规模图像处理的程序的编写等等。
它适合计算机类的专业作为核心的编程语言来学习。
- VB(VB衍生的.NET)学习内容:对象、按钮、文本框等——诞生于网络与视窗时代
通过VB程序,我们能实现一个小的桌面窗口,它希望使用者能理解交互逻辑,但这种交互不是程序之间的交互,而是人机之间的交互。我们已经很少在桌面上编写程序,大多数程序要求既能在桌面上运行、又能在手机上运行,最主要是一种网络程序,VB的使用对象变得已经很少了。
它比较适合做桌面应用的开发。
- Python 学习内容:编程逻辑 第三方库等——发展于复杂信息系统时代
Python是一种面向编程逻辑,使用第三方库来完成程序设计的语言。它的本质是希望使用者去理解问题的求解,去解决各种各样问题的计算部分的实现。
它适用所有专业。
超级语言
Python语言是目前世界上具有最庞大生态的语言,其他所有语言的计算生态加起来都不如Python的计算生态大,Python语言是目前世界上唯一的超级语言。
Pyhton语言是:
通用语言:普适的计算问题求解的开发(图形运算、操作系统、发现引力波…)
脚本语言:使用解释器
开源语言
跨平台语言
多模型语言
……
Python优势 | Python优势 |
---|---|
C代码量的10%(10×) | 13万第三方库(10×) |
强制可读性 | 快速增长的计算生态 |
较少的底层语法元素 | 避免重复造轮子 |
多种编程方式 | 开放共享 |
支持中文字符 | 跨操作系统平台 |
- C代码量的10%、13万第三方库,直接将开发速度相对于C提高了100倍。