早期初略的学过一些编程语言,如Pascal,VB,VC,C++,C#,PHP,JSP,ASP之类的。这些语言在当时环境下学习的时候,更多的是考虑实现的过程。如Pascal,几乎是一种纯粹为入门和数学打造的。以前还有全国计算机竞赛,也是Pascal去解决数学问题。
考虑问题去实现的过程,大部分时间是在算法上去考虑,怎么实现,如何实现。一步步去推敲,直观的来说是这样的思考过程,在做一些特定的东西,会比较方便快捷,因为这样的思考有着直观的逻辑思维。像太阳在地球上永远是东升西落,这就是一种与生俱来的逻辑。缺点上呢,在打破了传统逻辑上,就显得不那么方便,你需要去更改逻辑,比如在木星上的太阳是怎么样,火星上是怎么样。写出来的代码就会变得很冗余也很复杂。而且你需要考虑更多的逻辑思考,为什么会这样又为什么会那样。
之前其实也学过一点java,不够深入,并没有体会到面向过程的和,面向对象的到底有什么的区别,在之前学习的过程中,无论是自己的练习,还是自己的看书学习,始终没有跳出面向过程的这个思维模式。对面向对象还有一点懵懵懂懂。昨天,胡老师在课堂上,仔细详细的讲解了一下面向对象的思维,让我有一种醍醐灌顶的感觉。对之前的所学进行了一次新的领悟。对面向对象的思考方式有了一种自己的清醒的认知。虽然还不敢说自己懂了,但是自己似乎是已经明白了。
在思考的时候,不会在拘束于首先思考如何去解决他,而是会在思考的时候,首先思考的是,怎么去认识他。当然,同样的事情需要从不同的角度去看,并非是单纯的只从某个方面去看,这样你对这个事情的认知,会更有益的帮助你去完成他,完善他。
我对面向过程的看法是,一个项目一个问题,出发点是how to solve。然后在这个的基础上,向外衍生,由内向外。优势确实是如书上所说,在熟知的领域,这样做很方便,因为你不需要考虑额外的东西,而是考虑去完善一个已有的东西。缺点也是很明显,有不明白的新事物进来的时候,就要层层考虑相互之间的关系,是不是要在代码上改变什么。
而面相对象这种方式,彷如开启了一扇大门。他出发点不再是how to solve。而是what is object?如抽丝剥茧,把一个事物,层层剥开,然后对剥开的每一样东西,每一样东西拥有的属性和行为,归纳,总结。然后把他们作为一个零件,一个个写出代码,在一个大的框架下,把他们组合在一起,成为一个总体。
这两种方法,谈不上谁更胜一筹,因为他们的目的最终都是去解决一个问题、一个项目。因为出发点不一样,思考的方式不一样,在应用起来,不单单是只推崇某一种,而是用这种思维方式,去拓展你的思维方式,不拘束在某一点上。
这就是我在学习JAVA基础中,对JAVA的一些自己的见解。