辛星漫谈软件思想
之前我也走不出语言的圈子,感觉语言对于软件开发上如此重要,只是一个软件并不应该是依赖生产它的语言,真正让这个软件闪光的是软件本身,并非生产这个软件的语言。
软件工业的革新速度是绝对的速度和效率,先后出现了N种思想不断的冲击着软件工业。那么我们来看看吧,好吧,我承认可能我写的不全,由于这也是我随手写写,并未经过深思熟虑。
第一种思想就是“语言“这样的思想,这样的思想太重要了。我感觉从0和1到汇编语言是相当大的一个突破。它開始产生了“语言”的概念,尽管这样的所谓的语言仅仅是一个记号,仅仅是单纯的翻译。可是它却给出了一种在人和计算机之间进行沟通的方案,我们既能够看得清,也能够让计算机能够得到执行。
另外一种思想就是结构化编程的思想,通俗的理解为面向过程也是能够的。这样的思想是如此的重要,以至于如今大多数语言都支持sp,没错,我承认非常多时候面线过程更加符合人类的思维习惯,我应该先做什么。后做什么。而不是我们一開始就想到分为一个个的类,然后去设计这些类。
第三种思想就是面向对象的思想,这个思想真的是彻底颠覆了整个行业界。如今主流编程语言大都会支持面向对象,尽管详细实现方式上有非常大的不同,可是不可否认的是:面向对象思想是如此的实用。面向对象比面向过程加入了一个东西,由于我们面向过程的时候仅仅是简单的封装了功能,可是并未封装数据,可是面向对象同一时候封装了数据,这就使得它的封装性更深。
从这个角度来说,面向过程能够看作是面向对象的一个特例。也就是说假设一个类没有属性,并且仅仅有一个方法,也就是退化为这样的简单形式的时候,面向对象和面向过程是一回事。当然,从数学上这一点太好理解了。前者是后者的简单情形,所以说后者功能更加强大。
第四种思想就是面向组件的思想,这样的思想提供了封装了特定功能的组件。每一个组件就像一个个的小应用程序。可是它们就像整个软件的零件一样能够被自由的拆卸,我想不论什么一个使用过MFC、Qt等这些界面编程的都有拖动“控件”的经历,这些控件的使用是如此的方便,它们的封装也是如此的深。
当然,组件并不等价于控件。在界面编程上就表现为控件了,在web开发中也有非常多组件的样例。
我感觉面向组件编程相对于面向对象并未有质的飞跃,很多其它的说是一种补充,它把多个对象组织起来,并且加入了一些内部的规则。并且独立性更强,可是它还是基于面向对象的,而这些内部的规则还能够是通过面向对象来实现的,因此,我感觉它并未有本质性飞跃,可是这样的思想的提出依旧是很不错的进步。
第五种思想就是面向服务的思想,他一般是将软件设计成一组能够互相操作电费服务的一套原则或者方法论。当我们在考虑系统构架的时候通常才会考虑SOA。它更加重视规范,并且越来越弱化语言的作用,也就是说,一种语言能够非常轻松调用还有一种语言实现的服务。
它更加重视数据的传递。由于各个服务之间靠什么进行交流?没错。数据。
并且非常多数据都是跨语言的,比方xml、json等等。这些跨语言的数据使得我们的面向服务更加简单。
我感觉面向服务相对于面向对象也并不算质的飞跃,它们是两种思考方式,面向服务是从构架的角度去考虑的问题,而面向对象自始至终是从编程的角度去考虑问题。也就是说,面向服务真正去实现起来。还是通过面向对象或者面向结构的。也就是说。它并非从编程的角度去思考问题的。而是从设计的角度去思考问题的。
事实上还有非常多其它的概念。可是这些概念的提出到底是创始人的一厢情愿,还是会席卷整个软件工业呢?我不知道,对于其它的思想我就不介绍了,不是我感觉不好,而是我感觉这些都是比較主流的思想。简单来说,面向对象和面向过程都是从编程的角度去做的,它们直接给出了咱们的代码组合去写,而且有对应的语法规范。
可是面向服务和面向组件很多其它的是从设计的角度去思考问题的,也就是说,真正的落实到代码的编写上。通常还是须要依赖于面向对象和面向过程。
并且面向服务和面向组件通常能够跨语言,这就和面向对象、面向过程产生了本质区别,面向对象的思想是跨语言的,可是每一个语言都会有自己的实现方式。它们之间的区别也不容忽视,由于随时都会有暗礁告诉我们语言之间的不同有时候还是蛮深的。
我是辛星,上面仅仅是浅显的一点分析,说的不正确的地方。笑一笑也就过去了。