代码——为什么计算能解决现实问题

  • Post author:
  • Post category:其他


这一段出自我大三时的编译原理实验报告。其中的程序便是我们现在所说的代码。

语言由一些最基本的元素,字,构成。语言的体现是一组无穷句子集及一组有限音节集,如果放到书本上,还有一组有穷标点符号集。发音,符号方面暂不管,先看句子。句子由字构成,句子之所以为句子,是因为有字与字之间的一种特定的次序,关系,这种次序的集合便是语言的语法规则。因此,要定义一种语言,广义上,对于人,莫过于字,序,音,点,狭义上,对于其它,可只需字,序。因为是由计算机来识别语言,只须狭义上的语言定义。语言的句子数可能是无穷的,但句子的构成规则却大多是有限的。因此,语言的创造便成为可能。

文法可以定义一种语言,因此也具有“字”和“序”。由于计算机中大多使用的是字母,因此“字”在文法中体现为字母的集合,也即字母表,只不过在文法中叫“终结符集”。“序”,在文法中体现在两个集合上,一个是非终结符集,一个是文法规则集。非终结符的作用相当于结点,起连结的作用;规则则是语法的具体描述。如果用一棵有重复结点的树来描述文法,则字母表中字母皆处于叶子结点那层,此外其它结点皆为非终结符;根为识别符;对一个句子的识别便是一条从根至叶子结点的路径。至此,文法对语言的“刻画”特性很是显然了。

自从随意聚在一起、毫无意义的一堆文字(文字本身有意义)有了一种对字与字间关系进行约束的法则后,这堆文字便仿佛有了灵魂,活了过来,成为一种语言。这种法则就是我们通常说的语法。语法的魔力是如此的强大,使得只有指示意义的单个文字集在一起便从原始的散乱中脱胎换骨成了一种具有丰富表达、描述能力的语言。同样作为一种秩序保障的工具,语法相对于文字丝毫不逊色于大自然的规律相对于天地间的万事万物。语言之所以为语言,无可否认地应归功于语言的文字的组合符不符合该语言的灵魂——语法。对于人类的语言是如此,对于计算机所能识别的语言也是如此。

所有可能的一切可被计算机识别的只是1和0,更实际一点的说应该是电平信号的高低。所谓计算机的识别,实际上是人为的通过电子元件的特性构造了一种具有逻辑上某种功能特性的功能模块对某种模式的感知。功能模块的功能的实现体现在模块内部由各种电子元件所具有的特性激发出的各种相互作用的信号的交换,特别实际的是,人将自己对外界或逻辑上的各种状态的处理这一思维过程的最基本的共性,通过一堆电子元件固定在一块叫CPU的不知是由什么做的像木板一样的但却有着小金针的板子上,简单的说就是指指令,识别的直接主体是计算机的大脑CPU,实际上是固化成一大堆电子器件的人的那点智慧。正如编译器的自构造一样,自从计算机有了那一点人的智慧后,便利用已有了的那一点智慧构造出了更大的智慧。在有了足够多的智慧后,如一套完整的或不够完整的指令系统,计算机的智慧构造智慧的速度便开始突飞猛进,程序,横空降世了。程序的最终表现形式是计算机指令系统中的指令,指令的最终表现形式又是各种电平信号,电平信号的可按照人的设想而产生或变化或交换的情形又最终体现在在组合成整体后的电子器件在某种条件下器件内部各种电子元件的特性的相互影响。如果不深入至电平信号,计算机可识别的将只是指令。

计算机对指令的识别,从某种稍低层次上讲,是用规则解释规则,最前的那种最原始的规则不用更进一步的解释,由依据电子元件的特性对电子元件组合从而产生某种逻辑上的定义确定,就像用概念解释概念,最前面的那一概念由以一一对应的方式进行定义确定;从某种稍高层次上讲,也是在用规则解释规则,只不过规则都是逻辑上的,在这里前一规则指的是计算机可认知的指令的格式,后一规则指的是输入的指令的各种组合形式。如,计算机知道,对于1,左转两次;对于2,右转一次;对于3,哭;对于4,笑。那么,当有输入1112243124时,计算机会左六右二笑哭左二右一哭。识别,就是用存在的规则去解释符合某种格式的输入。某种格式,便是语法。

指令,以其自身的作为与人进行交流的工具这一特性毫无悬念地成功地摘取了计算机语言这一皇冠。对于计算机自身来说,指令,当然是简单的,清晰的,明确的,可是对于使用计算机的人来说,指令,却自然是晦涩的,复杂的,难懂的,更让人无法忍受的是,指令的表达能力实在是弱小的可以。对于计算机,规则是可以用来解释规则,但规则更是用来创建规则的——用指令编写程序。规则——指令——创造出来的规则——程序——功能的强弱一方面取决于每一条指令本身的功能,更取决于指令系统的描述能力。不可忽视的是,指令的描述表达能力是弱弱的,小小的,不够强大的。福音,高级语言来了!各种高级语言的出现极大程度地扩大了对问题、对思维、对处理过程的描述能力。灾难,计算机成文盲了!对高级语言毫无所知的计算机,谁来充当它的翻译!曙光,编译器诞生了!

就如计算机对指令的识别依赖于指令格式——语法—— 一样,一个出色的翻译——编译器——若想将一门语言很好地翻译成另一语言,对被翻译语言的构成方式——语法——是绝对不能稍有怠慢的。人类语言的翻译是如此,计算机高级语言的翻译是如此,编译器这个高级翻译,也是如此。

看完上面这些,相信很容易理解计算机能够解决实际问题了:人将现实中的情况用代码进行描述,然后转交计算机去处理。计算机不知道现实中的概念,实际上也没必要知道。人只须将现实中的概念及处理过程用计算机知道的概念描述出来即可。在代友中,人可以用a表示公鸡,用b表示母鸡,用c表示小鸡,用+表示结婚,用=表示生育。于是,a+b=c便可以表示一只公鸡和一只母鸡结婚就能生下一只小鸡——计算机永远不知道,但它知道怎样让a+b=c。人,使得代码不再仅仅是符号。人,用代码创造了另一个世界。