Java 这门语言如今是互联网行业炙手可热的编程语言,像阿里、美团这些大厂,技术体系都是建立在 Java 之上。这些大厂又是很多新兴互联网企业的技术风向标,因此 Java 使用范围相当的广,对 Java 程序员的需求量就相当的大。
Java 不仅仅是一杯热腾腾的咖啡,还可以是一个靠得住的饭碗!
蜗牛从大学开始就接触 Java,工作之后也一直是使用 Java 这门程序设计语言作为编程首选。希望结合自己的知识体系和实践经验,产出 Java 学习的一系列教程,能够帮助到对 Java 感兴趣或者有志于从事 Java 程序员这个岗位的同学。
学习一个东西,首先要知道它是什么,基于什么样的背景下出现的,后续又是如何演变的。本文就简要介绍下 Java 的历史。
计算机系统层次与编程语言进化史
Java 是一种编程语言,和其他编程语言一样,它解决了人与计算机之间交流和沟通的问题,程序员这个特殊人群能编写,计算机能识别,从而能够设计出计算机的功能,便利人们的工作和生活。
那么 Java 是怎么出现的呢?都有其他编程语言了,为什么还需要它?
编程语言既然是运行在计算机之上的,我们首先看下计算机系统层次与编程语言的进化史。
早期计算机系统是用机器语言进行编程,机器语言也就被称为第一代程序设计语言(First Generation Programing Language, 1GL)。
机器语言简单讲就是由二进制数 0 和 1 组成的一串指令。众多指令构成的指令集,就可以操控计算机硬件。
但如果让你只用 0 和 1 来设计程序,你肯定头大,因为机器语言的可读性,容错性和便捷性真的是太差了!
因此后期的计算机系统用一些容易理解和记忆的字母或单词来代替一个特定的指令,比如:用「ADD」代表数字逻辑上的加减,这就是第二代程序设计语言——汇编语言。
汇编语言需要转换成机器指令,操作系统就提供了汇编语言与机器交互的界面。操作系统将指令集体系结构进行封装,抽象成被上层用户使用的接口,包括用户界面和底层服务。
如果学习过汇编语言的同学会知道,汇编语言是一种低级语言,仍然要和计算机硬件直接打交道,比如它还是要调用存储器存储数据。
这就意味着汇编语言不仅编写复杂易出错,它的可移植性也很差!我换一个有点差异的计算机硬件,这个应用程序就会挂。
为了解决这个问题,现代的计算机系统就支持了高级语言。首先出现的是第三代程序设计语言——过程式高级语言,编码时需要描述实现过程,即「如何做」,像 C 语言这种。
随着过程式高级语言的广泛使用,越来越多的人发现,他们其实不关心问题的解法和执行过程,他们只关心自己的输入记录以及最终的输出结果,其它工作希望都由系统来完成。
基于这样的思路,后来就出现了第四代程序设计语言——非过程式高级语言,编码时只需说明「做什么」,不需要描述具体的算法实现细节,像 Java 语言这种。