原文链接:http://blog.csdn.net/jinxfei/archive/2009/06/04/4240771.aspx
2003年以前,我是一只大大的菜鸟,凭着加倍的努力来做好跟软件相关的工作。
虽然我毕业于计算机系,却一度对计算机“不太信任”,对于编程,更是没有任何的驾驭感。
有一阵子学C,语法好掌握,但总是搞不清楚有哪些函数可用,
而一旦涉及到和资源交互,比如Socket通信,数据库连接,
跟着书本一步步的做,更是经常得不到想要的结果。
大家设身处地想一想,我是通信学院毕业的,对TCP/IP协议的原理都门清,
却愣是写不出来一个稳定的C/S网络通信程序,那个WinSock让我郁闷的要死,
你说我能不抓狂吗?
所以,当我碰到Java,并逐渐了解Java的时候,很快就被它征服了。
这就好像你在一群悍妇中寻寻觅觅,正备受打击时,
暮然回首,却见到温文尔雅,小鸟依人的她,
除了一见钟情,你还有别的选择吗?
像我这个年龄的人,刚上大学那阵子接触的都是286,编程从basic学起,数据结构都是Pascal版的,
毕业以后这三年,用过ASP,用过SQL,用过VB,
一直受的都是面向过程的教育,已经先入为主了,要理解面向对象,还是有那么一点障碍,
现在的学生们就幸福了,直接都是面向对象的思想。
不过,困难是用来克服的,况且这点理念上的差异,比起过去遭受的自信心打击,那是小菜一碟。
我之所以选择Java做了这么多年的编程语言,是因为:
1、javadoc。
我觉得Javadoc这种创新的API文档组织方式,大大缓解了学习压力。
它让我在还不熟悉Java的时候,不会充满对未知的恐慌,
因为所有可用的类、方法及其解释,都在这一份文档中。
2、异常处理及StackTrace
出错了,能够知道完整的调用路径,大大方便了代码的调试。
3、对Socket、数据库链接、IO、线程的良好封装。
4、有丰富的基础API,而且引入第三方API的方式很简单。
2002年秋天,公司没有什么具体活,内蒙项目在现场招了一个人做维护,偶尔会传一些日志过来让我们查错。
日志很大,一开始都是用UltraEdit手工找关键字,后来我就想做一个简单的日志分析工具,顺便学点东西。
为什么选择学习java已经忘记了,不过学了就喜欢上了。
我花一个月左右的时间,看了一遍Thinking In Java(实体书),这是我看过的唯一一本Java书,
以后使用过程中,主要靠翻Javadoc和上网搜。
相对轻松的工作环境,也为我提供了验证学校知识的条件,我从老师那里知道了设计模式,并在项目中实践。
当时我带着两个人开发一个“业务建模”工具,可以在界面上拖拽节点、画线什么的,就像流程图,用Swing做的,
我清楚的记得自己在这个工程中用了Composite模式,还有Template模式。
初试牛刀,看着三个人的代码最终整合起来,能够正常运行,心里也有小小的成就感。
不过第一个项目,对java面向对象的特性理解真的十分有限,
所以程序中充满了用于全局调用的静态属性和方法,
整个系统是紧密耦合,分不出模块的。
02年似乎还没有Eclipse,我们编写代码用Ultraedit,手工编译,
这虽然很麻烦,但对java的理解的更透彻,比如你必须真正明白Classpath的作用和设置才能编译通过,
也能养成比较良好的编程习惯,因为没有IDE帮你做格式化和缩进。
现在Eclipse,尤其是MyEclipse,隐藏了太多的真相,
让比较懒惰的使用者越来越“傻瓜“,遇到问题肯定抓瞎。
总结:
学习的过程是一重重的境界,火候不够,就无法体验,
我偶尔回答问题也相当粗放,仔细想想,对于新手也许等于越帮越忙,
因为我也经历过弱弱的阶段,一层薄薄的窗户纸,要捅破有时候也相当困难。
现在的JAVA技术体系太过于庞大,远不像我当初所接触的那么简单,
也许不仅仅JAVA,每一个技术阵营都有越来越复杂的趋势,
但枝繁叶茂、盘根错节的大树,毕竟也只能有一个树干,
越是基本的东西,随时间的波动越小,学习要注意去芜存菁,避虚就实,
掌握了原理,才能触类旁通,用起来才能得心应手。
PS:我至今都觉得,C比JAVA难学!因为我没学会。