前言
自 2001 年起,TIOBE 编程语言排行榜的三甲位置一直被 Java、C 与 C++ 长期占据。那么接下来就跟大家简单说一说 Java 和 C/C++ 之间的关系和发展历程。
大家知道,编程语言的发展,其实是经过了三个比较大的阶段阶段,那就是汇编语言 –> 面向过程语言 -> 面向对象语言。
什么是汇编语言
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。由于汇编语言由于其难度太大,需要记忆的语句命令过多,但是其对计算机底层的控制和操作能力还是很强大的,由于学习成本太大,效率较低,已经不作为现在计算机系的重点教程了。
什么是面向过程语言
面向过程的语言也称为结构化程序设计语言,是高级语言的一种。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数则用于完成这些任务,解决问题的焦点集中于函数。其概念最早由E.W.Dijikstra在1965年提出,是软件发展的一个重要里程碑。它的主要观点是采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构构造程序,即任何程序都可由顺序、选择、循环三种基本控制结构构造。C语言可以作为面向过程语言的一种代表,算是一种比较纯正的面向过程语言了。C语言的基本单位也是函数。
什么是面向对象语言
面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分,有识认性、多态性、类别性和继承性四个主要特点。Java 便就是面向对象编程中的的一种代表性语言。
他们三者有什么不一样
简单来说就是他们是一个在一个基础上发展而来,C语言这种的面向过程语言的最大的优势就是适合模块化设计。一个程序可以分解为多个函数,通过函数调用过程,使得可以用一条函数调用语句实现函数所完成的复杂运算过程。这种方法使得可以将一个复杂问题的解决过程分解为较为简单的几个子问题的解决过程。
首先通过编写函数用语句描述解决每一个子问题的解决过程的步骤,然后可以用一条函数凋用语句描述解决某个予问题的过程的步骤,最后在一个主程序中用多条函数调用语句描述解决分解为多个子问题的复杂问题的解决过程的步骤。但是当我们在做研发系统诸如此类的问题时,开始肯定不清楚这个系统完工后的架构是怎么样的,所以说,利用模块化设计的语言,就很难对开发出来的系统进行调整(或者工作量会很大)。在此类诸多问题的压力下,面向对象语言便体现出了其独一无二的优势。
C++ 相对于C语言的基础上就添加了面向对象和模块的思想,这也可以理解成 C++ 中两个加号的来历啦。
但是C++做的并不好,比如说 C++ 支持多继承,多继承会引发不确定性。C++ 同时支持指针,指针直接对内存底层操作,虽然效率高,危险系数却非常高,比如,一个简单的病毒程序就可以靠指针完成:你通过一个程序的中给指针随机赋值,能够获取到访问不属于本程序执行空间的其他空间的权限,那么这也就是一个计算机病毒。当然,真正的病毒不可能那么简单,但这是基本特性,所以 Java 在 C++ 的基础上移除了指针,增加了引用,提高了安全性。
Java 由 C++发展而来的,它保留了 C++ 的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Java 从根本上解决了 C++ 的固有缺陷,形成了新一代面向对象的程序设计语言。
所以发展历程如下:
C 语言 19 世纪 70 年代初问世,1978 年美国电话电报公司(AT&T)贝尔实验室正式发布C语言。
C++ 在 C 基础上,1983 年贝尔实验室推出了 C++。
Java 由 Sun 公司于 1995 年 5 月推出。
由上文我们了解了Java和C/C++最基础的区别,但是具体细节还得继续学习并深入了解哟!