艰辛的面向对象

所有的操作系统都不是面向对象的。

所有的操作系统都是基于函数的。ANDROID框架里面的好多类也是基于函数的。很多都是静态的方法。这个框架包括两个部分:一是JAVA部分,一是本地类。本地类不用说全是函数,JAVA部分则很多都是静态的。而所有这一切,象极了JAVA里面的开发环境:一切都不过为了创造一个纯粹的面向对象的环境。甚至JAVA语言本身,J2EE框架的全部,都逃不出这个范畴。

有点“举国”的感觉。

费这么大力气,到底值得吗?

一切的一切,最终目的都是为了更加贴近程序员或者说人类的语义。都是为了解决语义鸿沟的问题。JAVA是进步,ANDROID是进步,下一步又将会是什么呢?

ONTOLOGY?好像不太可能。因为ONTOLOGY其实已经超越自然语言,进入下一个阶段:科学语言或者说哲学语言。这样的事实本来在人类本身是很自然的,我们本来也是先有自然语言,然后再有学术语言。事实上,也是在自然语言之后再有的所谓机器语言。因此,从机器语言向自然语言的发展可以算是某个程度上的一种语言或者说描述论意义上的回归。也因此,学术语言其实是一种完全相反的方向。这可能是它现在为什么没有并且以后也不太可能得到欢迎的原因。所谓的语义网看起来的确是遥遥无期。

与其这样,还不如在面向对象上面多花点精力,比如把语义网的语言层次再向下降一个层次,重新回到自然语言或者面向对象。这样也许会得到更好的结果。总之,无论如何有些东西需要改变,这是毫无疑问的。比如说通过对语言的更进一步或者说纠正方向后的研究,我们发现一种更好的方法或者说更贴近自然语言的方法。总之,需要对语言本身作进一步的研究而不是一条路走到死。

这篇文章的意思其实是要提醒我们,面向对象的环境来之不易,所以一定要珍惜。要好好学习面向对象的思想,要严肃对待面向对象这个东西。试想给你一堆函数环境,这样的东西现在的程序员很少会有人喜欢的。有点回到原始社会的感觉是吧?

其实我更PREFER的容器的概念。面向对象只是一种非常抽象的方法论提法。但是容器非常具体。并且这个容器,指的并不是对象容器,而是指具有理高语义层次的所以具有更具体语义的所以使得它更贴近人类语义的像SERVLET,EJB,ACTIVITY这样的容器。意思并不是说描述的或者API的层次越高越好,而是说,这是个很好的方向。从抽象的面向对象到更具体的语义编程环境,本来就是一大进步。或者说,我们作为程序员,更喜欢的正是这样的东西是吧。事实上,这也是业界本来的发展方向--商业总是朝着让她的“客户”HAPPY的方向前进。朝着相反方向前进的供应商,很少会有好果子吃的。这是市场经济的必然结果是吧。

有些人动不动就喜欢提底层,提实现机制,比如SOCKET。这些东西。但是却连自己的领地都还不熟悉。比如现在很多程序员并不能真正体会什么是真正的面向对象,却总喜欢一钻就到底层。一说就到底层。好像自己写个SOCKET来通信是多么光荣的事情。这不是正确的工作态度。正确的工作态度是,尽量精通,深入地理解你自己的领地。然后在这个基础上,基于需要出发作一些有针对性的研究比如IO,比如硬件特性,比如数学,比如网络。但是这些东西始终不是你本来的目标,并且还要记住:它们之所以是现在这个样子也是迫不得已的。不要以为那些东西就是好的,就像不要以为机器语言就是好的一样。那么到底什么才是好的呢?---好的就是好的。产品是好的,客户满意度是好的,易用性是了的。好的只应该STICK在产品这个概念的周围,离开了产品,便没有什么是好的。面向对象不底层,但它是好的,因为它对于产品的构建好,对于生产过程好,对于维护过程好,对于相互沟通理解好。而不是因为它的某些技术特性或深度。它的确非常深奥,但这并不导致能从它推导出它是好的这样的结果。一切关于“好”的推论,都应该从用户价值开始。离开了用户价值,便没有什么是好的。当然这是从生产的角度考虑的结果。如果从纯学术的角度考虑,无论对任何事物具有非常深入,深刻的理解,都不是一件坏事。但是同学们,在这样思考以前,请确定你要走或正在走学术的道路。

你要确立你的价值观。否则就会失去方向。

你很幸福,Don't ruin it.

 

你可能感兴趣的:(艰辛的面向对象)