附录2 编程的本质
===
N
尼古拉斯·沃斯(Niklaus Wirth,1934年2月15日—),生於于瑞士温特图尔,是瑞士计算机科学家。Pascal语言之父。
让我们暂时撇开平台、框架、技术、设计模式、对象思想、敏捷开发论等。 追问程序本质。
2.0 什么是编程?
编程的本质是创造世界。
从本质上来说, 程序就是一系列有序执行的指令集合。 如何将指令集合组织成可靠可用可信赖的软件(美妙的逻辑之塔), 这是个问题。
N有一句在计算机领域人尽皆知的名言:
算法+数据结构=程序(Algorithm+Data Structures=Programs)
所有编程语言的最终目的都是提供一种“抽象”方法。这里的抽象,就是思维的对问题空间的映射。语言,只是为了表达我们的思想。
每一次“抽象”都抛弃了一些非本质特征而提炼出更普适的精髓特征,因而每一次抽象都是在透过现象看本质,每一次提炼都是一次质的飞跃和升华,从而使由此得到的新理论更具普遍性与包容性。例如量子力学不仅能解释经典力学的各种现象,还能解释微观世界里特有的(不能被经典力学或经典电动力学解释的)现象,如AB效应。
从硬件电路上的高低电平,到机器代码的01组合,再到汇编指令的mov、add,再到,中高级语言中的for、print, 编程语言的从底层到高层的发展,在做一层一层抽象的,正是编译器。
就好比是在数学中,无论多么复杂的问题,最终都可以拆分化归到最基本的运算和公理上一样;对于编程来说,每一个程序最终都可以被分解成一个一个最基本的指令以及这些指令的组合。
人类对这些问题的分析和理解,对问题的拆分,并用算法和代码来描述的过程,就是“编程”,这样的人,我们称之为“程序员”。
诗人用优美的意象,构建一个美的情感世界。作家用个性鲜明的人物,曲折离奇的情节,创造一个理想王国。音乐家用音符,创造一个悠远优雅的声音世界。数学家,通过最基本的公理推导出定理,数学规律,构建一个庞大的宇宙空间形式的逻辑世界……程序员,通过最基本的算法,数据结构,构建庞大的互联网云端的“虚拟世界”。是的,他们都是在创造一个世界。