购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 编程语言的发展方向

综上所述,计算机编程语言在出现和发展的几十年中,从机器语言发展到汇编语言,再从汇编语言发展到高级语言,各种编程语言轮番登场争奇斗艳,在各自擅长的领域各领风骚数十年。那么,计算机编程语言后续的发展方向是什么呢?这是选择学习一门编程语言之前需要了解的信息,也是值得每一个程序员思考和重视的问题。笔者认为,计算机程序语言发展的下一阶段,应该称之为“智能语言”。智能语言的特点,也就是当前编程语言发展的方向,体现在如下几个方面:

首先,编程语言之所以被称为“语言”,是因为它是给人读写的。从数字天书一般的机器语言,发展到用单词来帮助记忆的汇编语言,是为了方便人类书写和记忆;再从汇编语言发展到高级语言,更是为了适应人类的思维方式,简化编程人员的书写和操作。此外,编程语言从不能跨平台发展到可以跨平台,从必须编译发展到可以解析执行,从需要严格的变量类型定义和内存管理发展到由编程语言自动进行变量类型定义和内存管理,无不是在简化和方便人类的操作。简单来说,编程语言的发展史,就是一部从靠近机器变得越来越靠近人类,从考虑机器的效率变得越来越方便人类使用的进化史。因此,计算机编程语言的后续发展,也将保持和更加明显地体现这种趋势:编程语言更加接近人类的语言,人们将能够更加容易地学习、书写、阅读和运行程序代码。而计算机硬件性能的不断发展,也极大支撑和促进了这种变化。未来,除了专业程序员,普通人也能够方便地进行计算机应用开发,程序编程将变得像Word和Excel一样,成为每个人的基本技能。

其次是跨平台。在移动互联网的时代,跨平台显得无比重要。如今的计算机系统和计算机网络,早已不是个人电脑一统江湖的时代。即便不算服务器市场,仅在个人终端领域,就有台式电脑、笔记本电脑、平板电脑、手机、智能手表、智能电视等各式各样的终端设备。这些林林总总的设备,使用的操作系统也各不相同,有Windows、Linux、 iOS、iPadOS、Mac OS、安卓、鸿蒙等。如果开发程序语言不能跨平台的话,对于发布全平台的软件开发者,将是十分痛苦的经历。多平台开发不仅预示着巨大的人力成本和经济成本增加,也会极大增加后续功能维护和升级的难度。这也是跨平台开发语言Java、Python和JavaScript等越来越流行的原因。未来编程语言的发展,也必将越来越偏向于拥抱跨平台。不能跨平台的编程语言将像汇编语言一样,越来越局限在小范围的专业应用领域中。流行的应用程序和软件领域,必将会成为跨平台编程语言的天下。

最后我们来讲讲编程思想的发展,这里主要有两个概念:“面向过程的编程”和“面向对象的编程”。面向对象的编程思想,要晚于面向过程的编程出现,但这两个概念其实是相对的,在面向对象的编程思想出现前,也没有面向过程的编程这种说法。面向过程,其实就是程序设计的基本思想,现在被称为“传统的方式”。所谓“面向过程”,就是在程序设计时把计算机程序视为一系列指令的集合,也就是一系列对电脑下达指令的过程。而面向对象编程(Object Oriented Programming,OOP),是把计算机程序视为一组组对象的集合,把对象作为程序的基本单元。每个对象都有自己的属性和功能,计算机程序的执行就是在各个对象之间发送、接收和处理一系列数据。

说起来比较枯燥,我们用一个例子来作比喻:大侠郭靖收了徒弟,要教授武林绝学“降龙十八掌”给徒弟们,于是郭大侠运气发功,用潇洒的动作打出一套降龙十八掌,徒弟们无不叫好。然后让徒弟们来练,有些徒弟可以打到第十五掌,有些徒弟能打到一半,有些打到一招半式就不行了,能打完全套的徒弟凤毛麟角,就算打完全过程的,中间也有好多掌打得不好。郭大侠又亲自演示了好几遍,徒弟们还是进步缓慢,打完十八掌的过程中总是有好多问题,纠正了几遍都记不住。后来郭靖学习了一本面向对象的武林秘籍,恍然大悟,他将复杂的降龙十八掌拆分成一个个对象,每个对象就是其中一掌。他还总结出每一掌的特点和属性,给徒弟们明确了每一掌的动作起势和打出的效果。徒弟们针对每一掌分别学习,很快学会了每一掌的打法,再连起来打出十八掌。如果其中哪一掌打得不好,郭靖就单独针对那一掌的问题进行纠正,最后保证了降龙十八掌的顺利完成。而且,在将降龙十八掌模块化之后,郭大侠还举一反三,针对其中某些动作不够完善的掌法,单独进行了优化发展,还调整了每一掌的顺序,将一些厉害的掌法重复多打几次,威力就更强了,最后发展成为面向对象的“降龙三十六掌”,威震江湖!

上面的例子生动地说明了面向过程编程的局限性和面向对象编程的优点。在计算机语言的发展历史中,最初的计算机编程并没有面向对象的思想,但随着程序规模的快速发展扩大,在程序代码维护、优化和扩展方面出现很大的问题,使程序员在面对大型程序开发时感觉困难越来越难克服。后来面向对象编程的思想出现,模块化开发理念使程序代码的重用性、灵活性和扩展性得到极大的提升,如今其已成为程序设计开发的主流思想。但面向对象和面向过程这两种编程思想并没有优劣之分,也不是谁取代谁的问题。我们也不赞成把编程语言严格按照面向对象和面向过程两种类型来划分,说某些语言是面向过程的,另一些语言是面向对象的,都不是完全准确的。比如,通常认为C语言是面向过程的编程语言,但C语言也可以按照面向对象的思想来编程,也可以进行模块化开发。所谓“面向对象”的开发语言,一样可以按照面向过程的思想来开发。两种程序设计思想,可以根据所要开发的程序的需求,进行有针对性的选择,也可以共存。

我们说面向未来的编程语言,应该具备面向过程的开发能力,更应该支持面向对象的程序开发,这是最基本的要求。在此基础上,编程语言发展的下一阶段,笔者认为应该是“面向应用”的编程。什么是面向应用呢?我们还是通过前面讲编程语言发展阶段那个拨打电话的例子来说明:汇编语言解决了机器指令的记忆问题,高级语言解决了打电话的具体执行步骤的问题,但是,即便打电话这个完整的过程,也只是做了很小的一件事情。在程序开发的过程中,这可能就代表“打印”,或者“循环”,或者“拆分字符串”这些仍然相对简单的事项。而开发一个应用程序,需要安排计算机执行很多这种事项才能完成整个程序的工作,如有哪些事项、怎么执行、先后顺序怎么安排、出现问题怎么处理等,现阶段的编程语言都需要程序员通过程序代码去逐一书写和明确下来。就像我们给老张打电话这个事情,它可能是“召集部门会议”这项工作的其中一个事项。但召集部门会议,还需要做很多事情,比如除了老张还需要给哪些人打电话、会议时间的确定、预订会议室、给所有与会人员打电话、准备会议的材料、测试会议要用的设备等。我们这个时候最轻松和简单的办法是什么?就是告诉秘书去召集一个部门会议。具体召集会议要做的事情,我们不用关心,那是秘书要考虑的问题,他自己去梳理、安排并且执行。那么以后“面向应用”的智能语言,就是要成为“秘书”。我们只需要告诉计算机我们的需求,比如召集会议,编程语言不仅要能“听懂”我们的话,还要能智能地设计出程序的架构和代码。

智能语言的发展目标,肯定不是一次性快速完成的,但一定是通过计算机软硬件的逐步发展,通过自下而上、模块化、拟人化的方式迭代实现的。而编程语言的易读易学、机器学习、人工智能,这些都是本书的主角——Python语言——的特点和优势。 jo+6HSOIjpQK8fuTsvcgqI+gwtvZOCeA5wjBB2eVMQ8f7SGNdyE7dd+Y2F9HwRsY

点击中间区域
呼出菜单
上一章
目录
下一章
×