程序是自由而强大的存在,因为它总可以将思维方式和问题分析结合而创造出属于自己的形态,因此,在灵活的思维方式之下,程序不应该以生涩、累赘、庞大、无组织甚至无生命的形态存在着,如果这样,那肯定是有什么地方不太对劲。而实际上,我们身边的确也存在着大量的编程思想和编程方法,他们在改变和影响着我们的世界,每一种思想和方法都以自己的方式在影响着世界,无所谓好坏优劣,也无所谓谁比谁更具前途,只是在描述世界的过程中,我们都寻找到了自己的乐趣或者纠结,并且最终解决了预定问题。但,思想革新的步伐不会轻易停止,一定会有不一样的架构或者方法,因为总有问题还在。这里将要介绍的是一种完全不同于传统编程架构或者模式的编程方法,并尝试阐述一种更加另类的编程思想,另类是因为目前还没发现被阐述过,我把它命名为状态化的编程思想。
当把这种思想实现的时候,我惊讶地发现,其代码显得特别奇怪,但它又的确实现了一个用常规方法可以实现的功能,若没有理解这样的代码背后的思想,也就是我即将描述的状态化编程思想的话,代码就显得很无理。不断深入之后,我发现,这样的一种新方法却意外地具有无限的潜能,它可以轻易实现交互界面和功能代码的分离、可以思路清晰地实现复杂逻辑功能的程序并且可以大大减少程序漏洞出现的可能性、可以更加容易编写出更加稳定和可控的程序、可以让编程工作变成画图工作却完成复杂的事情,可以让代码修改和变更变得更加让人愉快、还可以为模型设计和代码自动生成领域添上浓浓的一笔,最让人惊讶的是,它甚至还以活的状态,略带人工智能的方式编写出让自己都惊讶的程序,并且其强大表露无遗。
传统的编程架构,不管是过程化编程、结构化编程还是模块化编程,更多地只是改进了一种代码管理的手段以适应庞大代码量发展的现状,从而达到让人更加容易去驾驭大量的代码和重用大量代码的目的。编程思想的发展,从面向过程到面向对象,让人开始使用人的视角去思考程序,但我们知道的所谓的高级编程架构,所能够提供给我们的只是一种静态的组织和描述,这似乎还没能彻底地把“人的视角”这样的观点发挥得淋漓尽致,其发展空间仍宽阔。事实上,模块化的静态描述并没能让人对问题进行更加有效的分析,反而总有一种无法言语的别扭,因为不管我们如何努力,已有架构本身似乎已经确定了一切,对问题和任务进行模块划分和静态建模,组织和建立问题的静态的复杂逻辑和数据交互。纵然,我们也考虑使用活动图、用例图等动态手段对问题进行附加的动态分析,但是,众所周知,其发展也是障碍重重,效果牵强。这里之所以特别强调“静态”和“动态”,因为状态化的编程思想就是在这个问题上进行深入的思考而诞生和发展的。这是一种全新的描述架构,它要求站在“动态”观念下描述所有的问题,而程序也以“活动”的状态呈现,静态的描述只作为辅佐的手段存在。状态化的模型能够更切实际地描述问题,也可以做到以“人的视角”统领整个软件,并且在成熟的面向对象的编程技术基础下,状态化的程序也容易实现。
在思考这样的一种全新的描述架构时,它毫无疑问需要具有一种颇为让人兴奋的特征,那就是“动态”的、“活动”的,“具有自我演变”的能力,这说明它首先自己要活动起来。不同于“静态”地只被他人“调用”,那是一种自我组织、自动演变的功能,外界对它来说,只有激励和数据,并且都由状态内部提供。状态机,毫无疑问是实现该思想的理想原型,不同于现在对状态机的描述,这里给予状态机一个全新的定义,因为从它的特性来说,状态机具有极大的潜能。状态机天生就具有了以“人的视角”统领问题和组织问题的能力。状态机是对行为、数据、模型、功能和封装(分层)的统领。数据流总跟随状态变化而变化,若站在活动状态机架构的角度,把类作为描述和实现的手段时,加之作为程序实现细节的核心原理的数学模型,状态机似乎具有传统理念有过之而无不及的优势。也就是说,状态机的作用远远大于现在所赋予它的。把状态机的概念进一步的提升、改进,同时赋予它全新的特征和描述能力,对它进行重新的定义,这样就建立了一种我认为是完全不一样的编程架构,命其名为,基于活动状态机架构的编程方法,简称为状态化编程方法(Statefulization Programming Method)。新的方法也将会为代码重用和快速开发提供一种全新的思考,而这也是思想提出的原始目的所在。该博客将会对它进行不断的探讨,有兴趣的关注吧。