我看JavaScript(五)——程序构造与工程构造

前一文在尝试分析面向对象通识定义时,发现【面向对象】的定义其实只是一种工业演化的成果,成熟度不见得会很高,并且发现了主要原因是【面向对象】的理论基础——程序构造理论不成熟。文中举例了两种有关程序“抽象操作”的程序构造理论,并指出芭芭拉女士的一些不足,本文就这些业已发展的程序构造理论,再作一些推进。以此为解释JS的面向对象的特性打下基础。

程序构造的理论基础的发现

为什么我说芭芭拉等人对编程“抽象操作”的理论分析是一种【程序构造理论】?我想他们本人都没有意识到,这是常见的,任何一片待开发的领域都是存在着各种初步的理论尝试,理论带有直观性,无意识且不成熟。“抽象”的确在程序构造活动中起核心的作用,然而要发现“抽象”的本质,完善【程序构造理论】,必须再往前一步,再抽象一步。

面向对象是一种特殊的程序构造技术,并不是唯一(请参考编程范型);而程序构造技术是一种特殊的工程构造术,像建筑也是一种工程构造。此结论揭示了发现“抽象”本质的方法:

  •  第一,【工程构造理论】是程序构造技术的理论基础;
  •  第二,我们可以通过对比建筑工程和程序工程,从中归纳总结出工程构造理论。

程序工程与建筑工程同属异种

面向对象技术是程序构造理论的一种应用,然而程序构造理论本身也交叉了多种基础理论,现在我们大概了解到交叉了两种,第一是程序理论,第二是工程构造理论。建筑构造理论同样交叉了工程构造理论,但是构造的目标是实物建筑,而不是精神过程的程序。

没有学术研究背景的同学可能对上面这段话一时不好理解,理解关键是明白【应用理论与基础理论的关系】;交叉就是重叠应用了多个基础理论的意思。参考下面这个图:

工程构造理论

基础理论剔除具体内容,它的理论结论是一般的、通用的。例如工程构造理论适用于指导建立程序构造理论和建筑构造理论。

建筑工程与程序工程的结构对比

软件工程演化多时,关于程序及其结构的理论前面的文章已经介绍了一些,现在简述对比一下建筑常规结构,并与程结构作简要对比。先看程序的一般构造:

程序工程

再看建筑的一般构造:

建筑工程

乍看之下,建筑的构造比较复杂,然而事实上,此例的建筑工程,其【构件】(注意这个概念)是比较具体的,程序没有具体的例子,构件是抽象一般的,是构件种类,具体的程序其构造可能是如下的样子:

程序工程(具体)

同样建筑工程构件可归类:

    2

功能空间:睡房,客厅,走廊,楼梯,厨房

隔断:墙,天花和地板

工程构造理论的核心——中间构件

常识里,工程都是大项目,规模大任务复杂,相对于手工劳作。对比建造一间野外茅厕和建造广州市地标建筑(例如广州西塔),可直观具体的认识到手工劳作与工程建造的区别。这种区别不能停留在复杂二字,必须依赖一系列的工程技术将工程任务精确分割,和有序安排。从以上对两种工程构造例子可看到,从原料(砖头或指令语句)到目标(建筑物或应用程序)之有多层中间构造物,此种可称为【工程构件】的中间构造物应该是工程构造理论的核心。

参考

裸男
Nakeman.cn 2023 Build by Gatsby and Tailwind, Deploy on Netlify.