首页 > 代码库 > 辛星漫谈软件思想

辛星漫谈软件思想

    之前我也走不出语言的圈子,感觉语言对于软件开发上如此重要,不过一个软件并不应该是依赖生产它的语言,真正让这个软件闪光的是软件本身,并不是生产这个软件的语言。

       软件工业的革新速度是绝对的速度和效率,先后出现了N种思想不断的冲击着软件工业,那么我们来看看吧,好吧,我承认可能我写的不全,因为这也是我随手写写,并未经过深思熟虑。

       第一种思想就是“语言“这种思想,这种思想太重要了,我感觉从0和1到汇编语言是相当大的一个突破,它开始产生了“语言”的概念,虽然这种所谓的语言只是一个记号,只是单纯的翻译,但是它却给出了一种在人和计算机之间进行沟通的方案,我们既可以看得清,也可以让计算机可以得到运行。

      第二种思想就是结构化编程的思想,通俗的理解为面向过程也是可以的,这种思想是如此的重要,以至于现在大多数语言都支持sp,没错,我承认很多时候面线过程更加符合人类的思维习惯,我应该先做什么,后做什么,而不是我们一开始就想到分为一个个的类,然后去设计这些类。

       第三种思想就是面向对象的思想,这个思想真的是彻底颠覆了整个行业界,现在主流编程语言大都会支持面向对象,虽然具体实现方式上有很大的不同,但是不可否认的是:面向对象思想是如此的有用。面向对象比面向过程添加了一个东西,因为我们面向过程的时候只是简单的封装了功能,但是并未封装数据,但是面向对象同时封装了数据,这就使得它的封装性更深。

       从这个角度来说,面向过程可以看作是面向对象的一个特例,也就是说如果一个类没有属性,而且只有一个方法,也就是退化为这种简单形式的时候,面向对象和面向过程是一回事。当然,从数学上这一点太好理解了,前者是后者的简单情形,所以说后者功能更加强大。

      第四种思想就是面向组件的思想,这种思想提供了封装了特定功能的组件。每个组件就像一个个的小应用程序,但是它们就像整个软件的零件一样可以被自由的拆卸,我想任何一个使用过MFC、Qt等这些界面编程的都有拖动“控件”的经历,这些控件的使用是如此的方便,它们的封装也是如此的深。当然,组件并不等价于控件,在界面编程上就表现为控件了,在web开发中也有很多组件的例子。

      我感觉面向组件编程相对于面向对象并未有质的飞跃,更多的说是一种补充,它把多个对象组织起来,并且添加了一些内部的规则,而且独立性更强,但是它还是基于面向对象的,而这些内部的规则还可以是通过面向对象来实现的,因此,我感觉它并未有本质性飞跃,但是这种思想的提出依然是非常不错的进步。

    第五种思想就是面向服务的思想,他通常是将软件设计成一组可以互相操作电费服务的一套原则或者方法论。当我们在考虑系统构架的时候通常才会考虑SOA。它更加重视规范,而且越来越弱化语言的作用,也就是说,一种语言可以很轻松调用另一种语言实现的服务。它更加重视数据的传递,因为各个服务之间靠什么进行交流?没错,数据。而且很多数据都是跨语言的,比如xml、json等等,这些跨语言的数据使得我们的面向服务更加简单。

     我感觉面向服务相对于面向对象也并不算质的飞跃,它们是两种思考方式,面向服务是从构架的角度去考虑的问题,而面向对象自始至终是从编程的角度去考虑问题,也就是说,面向服务真正去实现起来,还是通过面向对象或者面向结构的,也就是说,它并不是从编程的角度去思考问题的,而是从设计的角度去思考问题的。

     其实还有很多其他的概念,但是这些概念的提出究竟是创始人的一厢情愿,还是会席卷整个软件工业呢?我不知道,对于其他的思想我就不介绍了,不是我感觉不好,而是我感觉这些都是比较主流的思想。简单来说,面向对象和面向过程都是从编程的角度去做的,它们直接给出了咱们的代码组合去写,并且有相应的语法规范。但是面向服务和面向组件更多的是从设计的角度去思考问题的,也就是说,真正的落实到代码的编写上,通常还是需要依赖于面向对象和面向过程。

      而且面向服务和面向组件通常可以跨语言,这就和面向对象、面向过程产生了本质区别,面向对象的思想是跨语言的,但是每个语言都会有自己的实现方式,它们之间的差别也不容忽视,因为随时都会有暗礁告诉我们语言之间的不同有时候还是蛮深的。

       我是辛星,上面只是浅显的一点分析,说的不对的地方,笑一笑也就过去了。

辛星漫谈软件思想