-
java教程之Java的由来
Java的由来java教程
Java总是和C++联系在一起,而C++则是从C语言派生而来的,所以Java语言继承了这两种语言的大部分特性。Java的语法是从C继承的,Java许多面向对象的特性受到C++的影响。事实上,Java中几个自定义的特性都来自于或可以追溯到它的前驱。而且,Java语言的产生与过去30年中计算机语言细致改进和不断发展密切相关。基于这些原因,本节将按顺序回顾促使Java产生的事件和推动力。正如你将看到的一样,每一次语言设计的革新都是因为先前的语言不能解决目前遇到的基本问题而引起。Java也不例外。
1.1.1 现代的编程语言的诞生:C语言
C语言的产生震撼了整个计算机界。它的影响不应该被低估,因为它从根本上改变了编程的方法和思路。C语言的产生是人们追求结构化、高效率、高级语言的直接结果,可用它替代汇编语言开发系统程序。当设计一种计算机语言时,经常要从以下几方面进行权衡:
• 易用性与功能
• 安全性和效率性
• 稳定性和可扩展性
C语言出现以前,程序员们不得不经常在有优点但在某些方面又有欠缺的语言之间做出选择。例如,尽管公认FORTRAN在科学计算应用方面可以编写出相当高效的程序,但它不适于编写系统程序。BASIC虽然容易学习,但功能不够强大,并且谈不上结构化,这使它应用到大程序的有效性受到怀疑。汇编语言虽能写出高效率的程序,但是学习或有效地使用它却是不容易的。而且,调试汇编程序也相当困难。
另一个复杂的问题是,早期设计的计算机语言(如BASIC,COBOL,FORTRAN等)没有考虑结构化设计原则,使用GOTO语句作为对程序进行控制的一种主要方法。这样做的结果是,用这些语言编写的程序往往成了“意大利面条式的程序代码”,一大堆混乱的跳转语句和条件分支语句使得程序几乎不可能被读懂。Pascal虽然是结构化语言,但它的设计效率比较低,而且缺少几个必需的特性,因而无法在大的编程范围内使用(特别是,给定的Pascal的标准语言在特定时间是可用的,但将Pascal作为系统级编码是不切实际的)。
因此,在C语言产生以前,没有任何一种语言能完全满足人们的需要,但人们对这样一种语言的需要却是迫切的。在20世纪70年代初期,计算机革命开始了,对软件的需求量日益增加,使用早期的计算机语言进行软件开发根本无法满足这种需要。学术界付出很多努力,尝试创造一种更好的计算机语言。但是,促使C语言诞生的另一个,也许是最重要的因素,是计算机硬件资源的富余带来了机遇。计算机不再像以前那样被紧锁在门里,程序员们可以随意使用计算机,可以随意进行自由尝试,因而也就有了可以开发适合自己使用的工具的机会。所以,在C语言诞生的前夕,计算机语言向前飞跃的时机已经成熟。
在Dennis Ritchie第一个发明和实现在DEC PDP-11上运行UNIX操作系统时,一种更古老的由Martin Richards设计的BCPL语言导致了C语言的产生。受BCPL语言的影响,由Ken Thompson发明的B语言,在20世纪70年代逐渐向C语言发展演变。在此后的许多年里,由Brian Kernighan和Dennis Ritchie编写的《The C Programming Language》(Prentice-Hall,1978)被认为是事实上的C语言标准,该书认为C只是支持UNIX 操作系统的一种语言。1989年12月,美国国家标准化组织( ANSI )制定了C语言的标准,C语言被正式标准化。
许多人认为C语言的产生标志着现代计算机语言时代的开始。它成功地综合处理了长期困扰早期语言的矛盾属性。C语言是功能强大、高效的结构化语言,简单易学,而且它还包括一个无形的方面:它是程序员自己的语言。在C语言出现以前,计算机语言要么被作为学术实验而设计,要么由官僚委员会设计。而C语言不同。它的设计、实现、开发由真正的从事编程工作的程序员来完成,反映了现实编程工作的方法。它的特性经由实际运用该语言的人们不断去提炼、测试、思考、再思考,使得C语言成为程序员们喜欢使用的语言。确实,C语言迅速吸引了许多狂热的追随者,因而很快受到许多程序员的青睐。简言之,C语言是由程序员设计并由他们使用的一种语言。正如你将看到的,Java继承了这个思想。
1.1.2 对C++的需要
在20世纪70年代末和80年代初,C成为了主流的计算机编程语言,至今仍被广泛使用。你也许会问,既然C是一种成功且有用的语言,为什么还需要新的计算机语言?答案是复杂性(complexity)。程序越来越复杂这一事实贯穿编程语言的历史。C++正是适应了这一需求。下面介绍为什么对程序复杂性的更好管理是C++产生的基本条件。
自从计算机发明以来,编程方法经历了戏剧性的变化。例如,当计算机刚发明出来时,编程是通过面板触发器用人工打孔的办法输入二进制机器指令来实现的。对于只有几百行的程序,这种办法是可行的。随着程序不断增大,人们发明了汇编语言,它通过使用符号来代替机器指令,这样程序员就能处理更大、更复杂的程序。随着程序的进一步增大,高级语言产生了,它给程序员提供了更多的工具来处理复杂性问题。
第一个被广泛使用的高级语言当然是FORTRAN。尽管FORTRAN最初给人留下了深刻的印象,但它无法开发出条理清楚易于理解的程序。20世纪60年代提出了结构化编程方法。这种结构化的编程思想被像C这样的语言所应用,第一次使程序员可以相对轻松地编写适度复杂的程序。然而,当一个工程项目达到一定规模后,即使使用结构化编程方法,编程人员也无法对它的复杂性进行有效管理。20世纪80年代初期,许多工程项目的复杂性都超过了结构化方法的极限。为解决这个问题,面向对象编程(object-oriented programming,OOP)新方法诞生了。面向对象的编程在这本书的后面详细讨论,但在这里给出一个简短的定义:面向对象的编程是通过使用继承性、封装性和多态性来帮助组织复杂程序的编程方法。
总之,尽管C是世界上伟大的编程语言之一,但它处理复杂性的能力有限。一旦一个程序的代码超过25 000~100 000行,就很难从总体上把握它的复杂性了。C++突破了这个限制,帮助程序员理解并且管理更大的程序。
1979年,当Bjarne Stroustrup在新泽西州的Murray Hill实验室工作时,发明了C++。Stroustrup 最初把这种新语言称为“带类的C”。1983年,改名为C++。C++通过增加面向对象的特性扩充了C。因为C++产生在C的基础之上,因此它包括了C所有的特征、属性和优点。这是C++作为语言成功的一个关键原因。C++的发明不是企图创造一种全新的编程语言,而是对一个已经高度成功的语言的改进。C++在1997年11月被标准化,目前的标准是ANSI/ISO。
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程