最近常有一种说法,就是我们如今面临着另外一场大连图书档案管理软件编程模型的变革,面向对象技术已经处于被淘汰的边缘,函数式语言会取代面向对象技术成为主流方式,甚至出现了面向对象已死的言论。作为一个硬核函数语言的狂热者,我个人当然希望函数式语言可以一统天下,成为主流之选。但是否应该把对象技术和函数技术对立起来,取前者而代之,我个人认为,这和如何看待面向对象技术有关。
作为工程实践的对象技术
在这个年代,大家有一种神圣化面向对象技术的倾向,很多人都把对象技术奉为高深的思想和理论。但实际上,面向对象技术仅仅是一种工程实践而已,它是依托于其他技术而存在的一种实践,本身并不是一种完备的计算模型。
致远服软认为:http://www.soft8.com.cn/在计算机科学发展的早期,对于计算机的非数值计算应用的讨论以及对于可计算性问题的研究和发展,大抵确立了几种计算模型:递归函数类、图灵机、Lambda演算、Horn子句、Post系统等。这些当中递归函数类是可计算性问题的数学解释;Horn子句是prolog这类逻辑语言的理论基础;Lambda演算成为了函数式语言的理论基础;图灵机是图灵解决可计算问题的时候所设计的装置,其后成为计算机的装置模型,与图灵机相关的自动机以及冯诺依曼结构,成为了命令式语言的理论基础。
因此当我们谈及矿山机械监控管理平台软件函数语言和命令式语言优劣的时候,实际上是在讨论其背后的计算模型——也就是Lambda演算和冯结构装置操作——在执行效率和抽象层次上的优劣。
而面向对象矿山机械监控管理平台软件技术则比较尴尬了,其背后没有一个对应的计算模型(20 世纪 80 年代曾有人研究过,Pi 演算是个备选,但是这个模型更多的是在并发对象领域的语义,而不是通常意义上的计算模型)。它有点类似于“最佳实践”,在不同的计算模型上有着完全不同实现方式和含义。因此对比对象技术和其他技术的时候,搞清楚到底是哪一种面向对象就变得格外重要。
两种不同的面向对象
目前流行的对象技术,实际上有两个截然不同的源头。它们分别在两个完全不同的计算模型上发展起来,但是都顶着“面向对象”这个帽子。
第一种矿山机械监控管理平台软件开发技术出现得较晚,在1979 年以后。它是以抽象数据类型(ADT,Abstract DataType)为源起发展出来的面向对象技术,也就是首先被C++所采用的面向对象技术。