我先说一个例子:
在一个理想化的蚂蚁狩猎场上,如下:
************
| |
| & # |
| |
| |
-----------------
蚂蚁由底线出发,将食物推向终线.&一个蚂蚁可以推动,
#要三个.请给蚂蚁智慧吧!
我会说:"1)向前走.2)遇食物推,超过5秒不动相左走,遇食者遇壁停.
3)不遇食者,碰壁向左.推食终不渝.
4)在时间T后返回初始化.
这是自组织.因为简单所以生存!
当然出于竞争策略两族蚂蚁会有不同的T.(对于不同的食物周期会有不同的胜利者.)
这是一个小小的鲜活实例。
你可看到这是一个思路,即指明了工业化的软件路是可行的。工程的构思和组织是可以在智力密集的软件制作中走出一条路的,但具体方法不是自组织,尽管在形而上上似乎相同。现在除了直观上的感官,我们还需要更深层次上分析,庖丁解牛贵在娴熟!所以下面给出了一些思路与鲜活的资料。
一种新的编程语言
1):推翻面向对象编程,应该面向“概念”编程,每个“概念”的转变作为模块的划分边界,转变操作由“消息”完成。
2):将重型循环和GO...TO利用“消息”完成其实现。轻型循环仍然归入基本代码块。
3):将变量的类型转变,和同类型之间的内部影响,以及模块属性值转变,作为“消息”实现。
4):操作也由“消息”实现。
技术路线是:
以Windows或Linux下的多应用程序和交换文件作为手段实现多线程,将面向“对象”转为面向“概念”编程;
以保留词全局变量的设置实现消息,相应补充关键词处理函数。
1):的实现如下:
列出涉及自动化及人工操作的重要概念,一个概念的操作在一个模块实现。消息用来实现概念的转变(TurnNews)与相互作用(EffictNews)及同类型之间的内部影响(FriendEffictNews),还有模块属性值转变(AttributeNews)。
2):的实现如下:
重型循环是指涵盖了不同“概念模块”的自动化操作,使用If for&nextEndFlag=True Then End =True; 处理函数和循环消息实现。
Go...To同理。
3):的实现如下:
编写消息表,利用标出消息的索引发出消息。Simaple: 101; /*The Function for news Will be send a news for 101 news.*/
编译为Tc2.0 *.c 时在源文件中加入关键词处理函数,处理消息并且也发出消息来实现消息处理。
4:)的实现如下:
在模块中发出消息实现概念的转变及影响完成程序功能。
重点:
a):程序功能由概念的转变及影响实现。消息作为封装和孤立的手段被广泛应用。
b):Vc++和其他重量型语言太复杂所以不可控。使用TC2.0轻量型语言结合“概念模块”和“概念要转换”条件来分隔模块边界。
c):只要编写时使用文件来获取和显示数据,就可与Linux下的C兼容。使用文件来互传数据与消息,可并行运算。
建模实例:
先用面向对象方法
咖啡机由以下部件构成,有PIA(可编程接口适配器),还有CoffeeMaker(咖啡壶),和Simulation(驱动器)构成。加上GUI。
再用面向概念方法
PIA有开关A,B,C“概念”,CoffeeMaker有咖啡豆,动力,水“概念”
,Simulation有电能,开关E,F,G“概念”
具体实现代码时,咖啡壶的循环水将由合适的“水循环”巨型循环消息实现。跳转为保温可由“GOTO”消息实现。
PIA开关A,B,C“概念”的“按下”将会产生重要的PressTrue消息,从而改变了概念“Simulation开关E,F,G概念”的Press属性转为True。
主函数只要处理消息便足矣。可谓“好处多多!”
跳转新解:copy跳转处直至区域结束,在同区域用:
If 0==0 Then
"copy"
Else if
据此提出猜想:所有goto前跳都可改写为后跳。
庖丁的牛也该鲜活地呈现在脑海中了吧。接着分析:
工业化之路,微软的确做到了,如果你在任何一个程序中在保存文件时想要删除上一次保存的鸡肋,可以毫不犹豫的在保存对话框中按shift+del,这是大厂的技术,起于精心的设计,产生无穷的简约。(更可能是比尔的狗屎运。)但是在达成大厂之前,死去了无穷的小厂,不管他是否纪律严明。但是在正态分布的成功者中,这是一种必然的现象。
我的拙见,C++的类思想只不过是一种对逻辑的封装,以获的工业化生产上的逻辑直接。
所以下一代的“类”应是一类适用于工业的逻辑封装以获得自由,形式上的以及分工及时间序列上的工业化!
中国人的软件,应是符合工业化大生产的产品,而不是工艺品,否则其发展只会是如同中国的丝织品与西方的机织品。时代就在眼前,失去只会徒生遗憾!
起来吧!
起来吧!
起来吧!
作者:盛波 单位:哈尔滨理工大学 控制科学98