1.1 计算机语言的分类
计算机语言的种类非常多,总体来说可以分成机器语言、汇编语言和高级语言这三大类,本书重点介绍高级语言,对于机器语言和汇编语言只是简单论述,不进行举例说明。
1.1.1 机器语言
机器语言是指机器能直接识别的程序语言或指令代码,无须经过翻译,每个操作码在计算机内部都由相应的电路来完成,或者是指不经翻译即可被机器直接理解和接受的程序语言或指令代码。机器语言使用绝对地址和绝对操作码,而不同的计算机都有自己独立的机器语言,即指令系统。从使用的角度来看,机器语言是最低级的语言。机器语言的这些特点注定了开发者需要具备极丰富的计算机知识才能编写机器语言,工作量十分大。机器语言只能在某种机器上运行,不利于机器之间的移植,这显然不利于计算机编程的发展,所以它很快就被历史淘汰了。但是机器语言并非没有优势,它最大的优势是执行速度快,只是在硬件性能过剩的今天,这个微弱的性能优势已经可以忽略不计了。
说明 什么是可移植性?
计算机的内部实现,包括操作系统都可能存在不同,有些程序只能在某种机器或某种操作系统中运行,所以这些程序不可移植,或者可移植性弱。如果程序在不同的机器和不同的操作系统中均可以运行,那么该程序可移植,或者可移植性强。可移植性是指程序移植的能力的强弱程度,如现在大部分的开发都是基于Windows操作系统的,而运行则部署在UNIX/Linux等操作系统中,如果不可移植则会引发很大的麻烦,因此,可移植性是评价计算机语言优劣的核心指标之一。
1.1.2 汇编语言
由于机器语言存在巨大的缺点,因此很快就被汇编语言取代,汇编语言(Assembly Language)是一种基于机器语言发展而来的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的计算机中,汇编语言对应不同的机器语言指令集,通过汇编过程转换成机器指令。所以,汇编语言的设计思想仍基于机器,其作用也只是在一定程度上简化机器语言,对代码的可读性有了一定程度的提高而已,它只是减少了一部分代码的编写工作,依旧不具备不同平台之间的可移植能力。汇编语言的性能略弱于机器语言的性能,但是高于高级语言的性能,同样,在硬件性能过剩的时代,汇编语言的性能也不再是一个优势。
1.1.3 高级语言
由于机器语言和汇编语言晦涩难懂、开发工作量大且不可移植,因此这两种语言都在历史潮流中渐渐被计算机的高级语言所取代。高级语言(High-level Programming Language)是一种独立于机器,面向过程或对象的语言。高级语言是参照数学语言的思想设计的,是更贴近日常会话的语言。高级语言现今已经有几百种,其中,Fortran语言早在1954年就被提出,并于1956年推广使用,当前主要应用于工程计算。而后来的C语言以其简单化、结构化、面向过程等优势成为时代的主流,至今C语言在高性能应用软件、系统软件和图形处理、数字计算和嵌入式设备等领域都有广泛的应用。自20世纪90年代以来,互联网的兴起改变了世界,而互联网中广泛使用的Java成为时代的主流,与C语言相比,Java更加简单易用,更适合互联网的开发。2015年左右,人工智能(Artificial Intelligence,AI)、虚拟现实(Virtual Reality,VR)、增强现实(Augment Reality,AR)等新技术渐渐兴起,这个时候Python脱颖而出,成为新一代的语言。
为了让读者对高级语言有一些基础认知,下面以网页脚本JavaScript为例简述高级语言的特点:
在上述代码中,以“//”开头的行是注释,注释在编程语言中是不会被编译和运行的,开发者编写注释的目的是对代码进行说明,以便于其他人或将来自己能够快速地阅读代码。由上述代码可以看出,高级语言允许编程人员按照接近人类数学语言的特点进行编写,只需要经过一定的学习就可以写出对应的编码。这样高级语言的开发就脱离了机器底层的约束,能够应用于多个平台,具有更高的可移植性,学习、开发和应用的成本也由此大大降低。高级语言凭借其优势取代了机器语言和汇编语言,成为现今编程的主流方向,当前谈到编程,大部分都使用高级语言。
1.1.4 高级语言的发展趋势
高级语言可以根据语言特性不同用于不同的领域,如Java适合开发互联网后端应用,JavaScript适合开发浏览器客户端应用,C/C++适合开发高性能和硬件领域应用,Python适合开发AI、AR和数据分析等领域应用。只是不同的时代由不同的领域所引导,所以会引发高级语言的兴衰和变迁。可以根据TIOBE官网的统计分析高级语言的兴衰起伏,由此展望未来的趋势。图1-1是从TIOBE官网上截取的从1985年到2020年各种计算机语言使用率的排名,当然这里主要关注的是Python语言的情况。
图1-1 各种计算机语言使用率的排名
由图1-1可以看出,目前Java和C语言依旧占据主导地位,但是Python从2000年之后快速发展,已经赶超了原来排名第三的C++,迅速占据第三名。2020年4月,TIOBE官网发布的各种高级语言的使用率如图1-2所示。
图1-2 各种高级语言的使用率
由图1-2可以看出,Python的使用率已经逼近10%,随着AI、AR和VR等新兴技术把Python作为主要开发语言,可以预计Python会进入一个更辉煌的时期,成为主导的开发语言。目前学习Python的人越来越多,以适应未来的发展。正如360公司的创始人周鸿祎所说——有一个竞争对手永远打不败,那就是趋势,所以掌握Python的人在以后的工作中更有竞争优势。