目录

为什么现代编程语言支持更多的编程范式

现代编程语言支持更多的编程范式是因为编程语言的进化动机,不是工具和语言本身的简化,而是将通过这些工具和语言所得到的结果(解决方案)更简洁地表达出来。

一、现代编程语言支持更多的编程范式的原因

现代编程语言支持更多的编程范式是因为编程语言的进化动机,不是工具和语言本身的简化,而是将通过这些工具和语言所得到的结果(解决方案)更简洁地表达出来。通过反观过去半个世纪以来编程语言的进化方向,编程语言绝对不会按照保罗格雷厄姆所说,向着“小而干净”的方向进化。现在的编程语言,无论时功能上还是语法上都已经不是那样单纯了,虽然也曾经有人努力尝试将这些语言变得更小更简单,但包括保罗格雷厄姆自己所设计的Arc在内,都决不能算是成功的尝试。近半个世纪以来,编程语言不断提供愈发高度的抽象化特性,也正是为了达到通过这些工具和语言所得到的结果(解决方案)更简洁地表达出来这个目的。因此我们可以很自然地认为,这种趋势在将来也应该会继续保持。

延伸阅读:

二、汇编语言简介

在前面的章节里,我们讲到了处理器,也讲了处理器是如何进行算术逻辑运算的。为了实现自动计算,处理器必须从内存中取得指令,并执行这些指令。

指令和被指令引用的数据在内存中都是一些或高或低的电平,每一个电平都可以看成是一个二进制位(0 或者 1), 8 个二进制位形成一字节。

要解读内存中的东西,较好的办法就是将它们按字节转换成数字的形式。比如,下面这些数字就是存放在内存中的 8086 指令,我们用的是十六进制:

B8 3F 00 01 C3 01 C1

即使是很有经验的技术人员,要想用这种方式来编写指令,也是很困难的,而且很容易出错。所以,在名列前茅个处理器诞生之后不久,如何使指令的编写变得更容易,就提上了日程。

为了克服机器指令难以书写和理解的缺点,人们想到可以用一些容易理解和记忆的符号,也就是助记符,来描述指令的功能和操作数的类型,这就产生了汇编语言(Assembly Language)。这样,上面那些指令就可以写成:

mov ax,3FH

add bx,ax

add cx,ax

对于名列前茅句语句, mov 是 move 的简化形式,意思是“移动”或者“传送”。“ax”,很明显,指的就是 AX 寄存器。传送指令需要两个操作数,分别是目的操作数和源操作数,它们之间要用逗号隔开。在这里, AX 是目的操作数,源操作数是 3FH。

对于第二句语句,add 的意思是把一个数和另一个数相加。在这里,是把 BX 寄存器的内容和 AX 寄存器的内容相加。相加的结果在 BX 中,但 AX 的内容并不改变。

有了汇编语言所提供的符号,这只是方便了你自己。相反地,对人类来说通俗易懂的东西,处理器是无法识别的。所以,还需要将汇编语言源程序转换成机器指令,这个过程叫做编译(Compile)。

从字处理器软件生成的是汇编语言源程序文件。编译软件的任务是读取这些文件,将那些符号转变成二进制形式的机器指令代码。它把这些机器代码存放到另一个文件中,叫做二进制文件或者可执行文件,比如 Windows 里以“.exe”为扩展名的文件,就是可执行文件。当需要用处理器执行的时候,再加载到内存里。

一站式研发项目管理平台 PingCode

一站式研发项目管理平台 PingCode

支持敏捷\瀑布、知识库、迭代计划&跟踪、需求、缺陷、测试管理,同时满足非研发团队的流程规划、项目管理和在线办公需要。