十年总结-开篇:歇一歇,才能走的更远
经常见坛子里有人问,学习java该如何入手,或者是该学java还是学XX语言。
我一直觉得,编程跟语言关系不大,重点是要有解决问题的思路。
学习一门语言,其实只是寻求如何将编程的思路落地。
学习软件开发,可能还是先从原理入手比较好,很多人喜欢例子,
但我觉得例子所能提供的信息虽然直观,但也非常有限。
而且通过例子入手学习,由于例子先入为主,可能会带来一个后果:
限制了对一种技术手段的灵活运用。
这种限制,会导致学习者无法充分发挥某项技术的优势,
也可能使他无法在技术和要解决的问题之间做出最好的匹配。
所以,我说,用自己会的东西去解决所有问题,还是基于问题去寻找适用的技术,
应该是能力高与低的重要差异。
什么是原理?
以武侠小说为例,
高手都是内外兼修,而且往往先通过各种方式积累了深厚的内力,
有此基础,在修炼精妙招式的时候,才能达到事半功倍的效果。
那么,内功修为是激发人体潜能的原理,而招式则是一种技能,
招式是容易传承和模仿的,可以速成,但内功修为则没有取巧的可能性。
那么在编程学习过程,什么可以看作原理?
以很多人曾问过的,将来必定还会有更多人问的“多线程聊天代码”为例,
我认为其中可以看作原理的知识点有:
线程(进程)的同步与互斥模型,
TCP/IP通信协议
进程控制方面,计算机科班出身的兄弟们应该知道,进程的同步与互斥是在操作系统中学习的,而不是在哪门编程语言中学到,
java有自己的线程控制机制,c++也有,但他们的原理是相通的。
而TCP/IP协议,可能会引起争议,有人会觉得学这个没有实用价值。
的确,现代语言对底层通信封装的非常好,但我觉得还是有必要了解TCP/IP中的IP/UDP/TCP这三层的工作原理,
平常没用,可一旦出现问题,这些知识才是解决问题的根本。
再说两句现在的J2EE,
我觉得学习J2EE,最先要看的就是SUN官方的tutorial,必须理解J2EE的架构,
并至少了解jsp、servlet在J2EE架构中的位置、作用和工作方式。
J2EE架构,可以认为是现在所有J2EE相关框架、容器、工具的核心原理。
--------------------
一篇文章难以承载太多内容,我今后要陆续发帖,表达我的看法,
主要是关于软件开发学习过程、软件开发过程本身、我对自己所掌握的技术的看法,
以及软件开发过程中的非技术因素(主要是人的因素)。
这是我从业10年的一份总结,以证明我这10年没有白混,
也是我未来五年的一个新起点。
无论您有什么想法、看法,只要是善意的,欢迎您与我讨论、辩论。
如果这一系列的文章能够帮到某些人,我也会非常开心。 |
|