说起编程语言,我们脑海里可能先会浮现几个名词:
汇编语言(Assembly Language),C语言,C++,C#,Java,Javascript…
机器语言:
我们都知道,机器是以二进制作为运算的基础的,0和1构成了对机器的指令,人们用工具(如纸带打孔)来输入1和0的组合,来让机器按照指令执行动作,1801年,JosephMarie Jacquard用打孔卡为一台织布机编写指令,在挂毯上织出了“hello, world”字样。
汇编语言:
在机器语言之后,出现了汇编语言。机器预言由于太过晦涩,当时的计算机科学家们就用一些通用的指令符去代替一些固定的机器语言代码,比如下面的代码:
操作:寄存器BX的内容送到AX中
1000100111011000 机器指令
mov ax,bx 汇编指令
C语言:
C语言来源于之前的B语言。B语言是贝尔实验室开发的一种通用的程序设计语言,它是于1969年前后由美国贝尔实验室的计算机科学家肯·汤普森(Ken Thompson)在丹尼斯·利奇(Dennis Ritchie)的支持下设计出来。后来,为了描述和实现UNIX操作系统丹尼斯·利奇和汤普森以B语言为基础开发出C语言——目前世界上最常用的程序语言之一。
C语言的伟大之处在于把高级语言的基本结构和低级语言的实用性结合了起来。C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者则是计算机最基本的工作单元。
C语言在发明之后取得了难以置信的成功,此后许多编程语言的发明都是基于C,包括:C++(1976)、Objective-C(1986)、Perl(1988)、Java(1991)、Python(1991)、JavaScript(1995)、PHP(1995)、C#(1999)、Go(2007)以及其他很多语言。
C++与Java:
为了应对因代码量日益增多而导致的无法控制的程序错误,出现了另外一种新的程序设计方式和程序设计模型,即面向对象程序设计,例如C++和Java,这些语言以新的观点去看待问题,即问题是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言因此必须支持新的程序设计技术,例如:封装与隐藏、数据抽象、用户定义类型、继承、多态等等。
C++在设计时因为必须要完全兼容C语言又必须提供所有的面向对象特性所以它的结构变得特别复杂,当引入泛型编程STL(标准模板库)之后显得更加复杂。
Java是在C++的基础上开发出来的,比C++简化很多,但在某些方面没有C++灵活。Java是目前最流行的语言之一,特别是目前B/S系统和移动端开发日益繁荣的情况下,Java的优势得以发挥。
JavaScript:
JavaScript已经成为一个非常重要的语言。其在网络设备上几乎无处不在,大多数Web和移动应用程序都离不开它。而多亏了Node.js,它在服务器上也是能运行的。
Netscape公司的Brendan Eich受命发明这一种浏览器脚本语言,他本来是想基于Scheme。后来公司为了蹭当时Java的热点,让其将语法修改为更接近于Java。最终,JavaScript借用Java的语法,Scheme的函数模型,以及Self的原型特性。由于当时Netscape的艰难处境,JavaScript在两个星期内实现并发布。
结语:
编程语言的发展后来又为我们带来了python、PHP等语言,相信将来一定也会出现更多不同的编程语言与程序设计理念。我们作为编程者,不可能每一门语言面面俱到,我们要做的是在比较中、历史中、以及实践中进行学习,提炼编程方法的精髓与共通点,夯实基础才能筑起高楼!