程序
程序的本质是对现实生活的建模,反映真实世界。程序是对现实的抽象。那我们拿现实与程序对比着看,在现实生活,最重要的是处理人与人之间的关系,处理好人与人之间的关系,生活不会太难,而反映到程序是,在程序里最重要,最关键是处理类与类之间的关系,处理不好类与类之间的关系,到后期,一个项目将会分崩离析。在程序中有个分析关注点思想,也就是MVC思想。其实在现实生活早有体现,不能这么说,感觉程序脱离了现实,应该是现实早有体现,程序将其抽象出来,起了个名字叫MVC。举个例子,比如说一个公司,从上至下,总裁,经理,项目经理,程序员。比如总裁想要做一款APP了,他只会对经理说,去,我要个APP,他不会管你咋做,他只要结果。经理对项目经理说,去,我要做个APP,项目经理负责进度,让程序员做个APP。这是真实生活,其实程序世界也是如此,这才是真正的面向对象思想。现在说程序,比如,老师有个完成一项很复杂功能的题,我全部写到一个main()函数中去了,这是其实就是面向过程思想。而我们需要建一些类来协同完成这些工作,但是类建哪些呢,我不清楚啊,这就是真正的面向对象编程,这是真正提升水平的一个点。只有思想层次的提高,才是升华。
说到底,面向对象编程就是处理类与类之间的关系。
语言
说到程序,不得不说一说,程序设计语言,我不清楚语言在大家心里什么地位,反正你如果经常看博客啦,就会看出几大派系之争,这里仅限于服务端语言,其它我也不懂,.NET PHP Java Node.js Python,每大派系都说自己是最好的语言,尤其是PHP,不清楚为啥,每次网上搜资料时,下面总有几个评论,PHP是世界上最好的语言,也是让我很无语。拿出个有意思的事和大家分享一下,我当初学C#的时候,看到C#已死等等各种批评C#的文章,吓得我不清,当时一度想学安卓去,后来我学PHP的时候,又看到了一下PHP只能做些小项目,挣不了大钱的文章。到现在学习Java,博客也有一些说Java存在这么多年,已经老旧了,迟早会被Python Node.js取代,幸亏我承受能力强,要不然这样也顶不住啊。好了,说了这么多,我对语言的看法是工具。既然是工具,就有它最适合的方面。只有在最合适的方面使用工具,工具才是最完美的。反映到现实世界是,一群开车上班的人,说,看,轿车是世界上最棒的工具,而另一群飞行员说,看,飞机是世界上最棒的工具。语言本来不比争来争去的,在最适合的地方使用它,那它就是最好的语言。
说到底,语言这玩意就是个工具而已,在最适合的地方使用它就好了。
架构师
在程序世界中,有个称谓让所有程序员心仪神往,那就是架构师,一个程序世界中的老大,掌握着一个程序世界中所有对象的生杀大权。而普通程序员则在他定义的规则下,补充着这个世界。所以,下面我要说的是,架构师和普通程序员。拿我自身举例子,我曾经做.NET PHP项目的时候,就是我老师,他当然是架构师啦,我,普通程序员,这么说,这个项目离了我照样如期进行,而这个项目离了我老师,就是架构师就会崩溃。这就是两者的区别。不知道大家听过一句话没有,那就是开发者做项目几年之后就是架构师了,我只想说去他妈妈的(此处禁言),普通程序员一直在架构师的框架下工作,面向对象思想根本建立不起来,除非你主动学习框架,尝试打破这个架构师建立的规则,否则你会一直在这个规则下生存,做着70%的工作,拿着30%的工资。普通程序员其实一直锻炼的是面向过程思想,在架构师定义好的对象世界中,工作,这就是普通程序员为啥成不了架构师,因为他没有架构师的面向对象的思想。这是根本原因。其实,面向对象思想没那么简单。在我看来,架构师深度理解面向对象思想,而普通程序员深度理解面向过程思想,就这样。
我希望有一天自己不再是别人框架下的补充者,有一天自己成为一个独当一面的架构师,自己定义这个世界的规则。
思想
因为对架构师的向往,对面向对象思想的向往,我一度认为面向过程是旧的思想,注定要被面向对象替代,我发现自己错了,其实面向对象思想是对面向过程思想的补充,面向对象可离不开面向过程,面向过程可以离开面向对象。当前主流的思想有,面向过程思想,面向对象思想,面向方面思想。多层次看程序世界,最底层其实还是面向过程编程,从这个点处理到另一个点,现实生活做事情也是有个顺序的。其次就是面向对象思想,考虑的层次更高级一些。而发现有一些面向对象无法处理的事情,比如权限验证,日志管理,所以又出来了面向方面思想。
而我理解的思想体系是,面向对象思想是对面向过程思想的补充,面向方面思想是对面向对象思想的补充,就这样。
PS:
1 吝啬定律:当一件事你发现它的本质(即最少),那就能发挥它最大的作用。
2 欲戴王冠,必承其重。
2016-08-28 12:24:46
一个欲戴王冠的人