计算机语言的发展史及未来的方向
计算机语言经历了三代:
第一代是机器语言:机器语言通常由数字串组成(最终被简化成01),对于人类来说,机器语言过于繁琐。
第二代是汇编语言:汇编语言以及早期的计算机语言(Basic、Fortran等)没有考虑结构化设计原则,而是使用goto语句来作为程序流程控制的主要方法。
第三代是高级语言:程序员使用汇编语言解决复杂问题出现了瓶颈,出现了C、C++、Java等高级语言。
未来展望:
未来除了普通软件的应用,大批的人工智能应用也将出现;未来自动驾驶、自动翻译、机器人保姆甚至机器人女友都会进入我们的生活,甚至计算机编程和基因工程结合,长生不老都能实现;推荐大家看《未来简史》这本书,把握一下未来的脉搏。
常见编程语言介绍
C语言
C语言诞生于1972年,可以称为现代高级语言的鼻祖,由著名的贝尔实验室发明。丹尼斯·里奇,C语言之父,UNIX之父。C是面向过程的程序设计语言。在底层编程,比如嵌入式、病毒开发等应用,可以替代汇编语言来开发系统程序。在高层应用,也可以开发从操作系统(Unix/Linux/Windows都基于C语言开发)到各种应用软件。
C++语言
作为C语言的扩展,C++是贝尔实验室于80年代推出的。为了解决C代码代码量过于庞大程序员不能从总体上把握和控制这个程序,1979年,贝尔实验室发明了C++。 C++最初的名字叫做“带类的C”,后来才改名叫C++。国内通用叫法:“C加加”,国际通用读法“C plus plus”。
Java语言
Java之父詹姆斯·高斯林,由美国SUN公司发明于1995年,是目前业界应用最广泛、使用人数最多的语言,连续多年排名世界第一。Java广泛应用于企业级软件开发、安卓移动开发、大数据云计算等领域,几乎涉及IT所有行业。
PHP语言
1995年初,PHP1.0诞生。PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。PHP语言,一般用于WEB开发领域;大量的中小型网站以及某些大型网站使用PHP开发。
Object-C和Swift语言
Object-C通常写作Objective-C或者Obj-C或OC,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。OC主要用于苹果软件的开发。
Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与OC共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。
JavaScript语言
JavaScript是一种脚本语言,已经被广泛用于Web应用开发;应用范围越来越大,重要性越来越高。目前,流行的H5开发的核心其实就是JavaScript语言。
Python语言
Python之父 Guido van Rossum 。Python发明于1989年,语法结构简单,易学易懂;Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。Python广泛应用于:图形处理、科学计算、web编程、多媒体应用、引擎开发;尤其是在未来大热方向机器学习和人工智能上有非常大的潜力。
C#语言
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#在基于windows操作系统的应用开发这一领域在取代C++,占据主导地位。
Java的核心优势
90年代,Internet进入了爆发式发展阶段,一夜之间,大家都在忙着将自己的计算机连接到网络上。这个时侯,遇到了一个大的问题。人们发现连接到Internet的计算机各式各样,有IBM PC、苹果机、各种服务器等等,不仅硬件CPU不同,操作系统也不同,整个的网络环境非常复杂。这个时候,程序员们希望他们编写的程序能够运行在不同的机器,不同的环境中,这需要一种体系中立的语言(即跨平台)。Java的研发小组忽然发现他们用于小范围的语言也可以适应Internet这个大环境。
跨平台是Java语言的核心优势,赶上最初互联网的发展,并随着互联网的发展而发展,建立了强大的生态体系,目前已经覆盖IT各行业的“第一大语言”。
Java各版本的含义
JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用。这个版本是Java平台的核心,它提供了非常丰富的API来开发一般个人计算机上的应用程序,包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在上世纪90年代末互联网上大放异彩的Applet也属于这个版本。Applet后来为Flash取代,Flash即将被HTML5取代。
JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用。JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:JDBC是让程序员能直接在Java内使用的SQL的语法来访问数据库内的数据;Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术。
JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上。是JavaSE的内伸,包含J2SE的一部分核心类,也有自己的扩展类,增加了适合微小装置的类库javax.microedition.io.*等。该版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。
Java的特性和优势
跨平台/可移植性
这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。
安全性
Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以很容易构建防病毒,防篡改的系统。
面向对象
面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性,Java则是完全的面向对象语言。
简单性
Java就是C++语法的简化版
高性能
Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高。
分布式
Java是为Internet的分布式环境设计的,因为它能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。
多线程
多线程的使用可以带来更好的交互响应和实时行为。 Java多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
健壮性
Java是一种健壮的语言。Java程序不可能造成计算机崩溃。即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。
Java程序的运行机制
计算机高级语言的类型主要有编译型和解释型两种,而Java 语言是两种类型的结合。
Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;再利用编译(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行。
JVM、JRE和JDK
JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的”虚拟计算机”。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行,边解释边运行,这样,速度就会受到一定的影响。
不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。 Java虚拟机是实现跨平台的核心机制。
Java Runtime Environment (JRE) 包含:Java虚拟机、库函数、运行Java应用程序所必须的文件。
Java Development Kit (JDK)包含:包含JRE,以及增加编译器和调试器等用于程序开发的文件。
网友评论