记得自己第一次接触计算机编程是在大一的下学期。那是开的第一门专业课——《C++ 程序设计》,教材用的是久负盛名的清华大学出版社出版、谭浩强编著的《C++ 程序设计》。
老师按着书本的章节讲,前一半的课讲的是面向过程的程序设计,后一半讲的是基于对象的程序设计,也大致介绍了多态与虚函数的概念、面向流的概念、面向文件的概念等等。我们是用一个学期的时间上完的,记得老师那时说,清华是上两个学期的。那时觉得,牛X的学校就是不一样。因为刚开始接触程序设计,以前脑子里根本没有那种概念,所以,课刚开始听的昏昏沉沉的。
当然,这门课也有相应的实验课,用的软件是Visual C++ 6.0. 说实话,我第一眼见到它就感觉那界面它很土,很难看,到现在也是!实验课,一开始的面向过程的题目感觉还可以,后面的基于对象的题目感觉就有点晕了,后面的一些提高题就不用说了,看都看不懂啊!
一晃实验课就结束了。后来才知道,实验课一结束,也就意味着大学里的程序设计课结束了,剩下的就要靠自己去学了。这一学期,也算是对程序设计有个初步的了解吧,会用VC 编一些小程序(小的、很小的、没有多少逻辑性的)。说实话,感觉自己学的不怎么咋的,不过自己也花了七八分的时间去学习了。
到了第三学期,也就是大二上的时候,有软件课程实践课,也就是在学了C++ 的基础之上,加强锻炼程序设计。练习的题目在上一学期的基础之上,加上一些可视化编程,也就是做些带窗口界面的程序。记得当时做实验差不多也就是把前面的部分(面向过程和基于对象的)做了个大概,而后面的带窗体的就不行了。还记得可视化编程那些题,什么编一个小型计算器啊等等。不会啊!老师从来没有讲过这种东西,也没见老师在课上运行例题时有什么窗体界面出现啊,老师用的也是黑屏的那种啊!怎么做啊!于是上网翻找,看看里面代码,什么玩意啊,看都看不懂啊!自己按着步骤做,一会儿就出错了,出错了没关系,难就难在连错误都看不懂!所以那些题也就没怎么看!而且也一直拖到现在,说实话现在让我用VC(Visual C++ 6.0 简称) 写个窗体也写不出来!
由于感觉挺难的,所以我的编程之路也就先放了放。在加上那时没有电脑,想要多实践也难啊。这一放也就是差不多四五个月。
到了大二下学期,终于自己组装了台式电脑,3000 RMB,那时这价格的配置是相当牛逼的,就算放到现在,也很牛逼!还记得我是当时班上第一个买的,后来班上的同学也全带了,笔记本的就不用说了,台式的都是按照我的配置买的,哈哈!
因为买了电脑,我的学习的热情又被激发了!一下子去图书馆借了很多书,什么Ubuntu 详解、 Red Hat 9.0 基础知识、 C#从入门到精通、 Apache + PHP + MySQL网站开发、 Java 完全面向对象学习等等很多的书。那些书也只是看个大概,没有多少真正深入的学习。
有一天,也不知道是怎么想到的,可能是心里早就这么想过的吧,思考了下自己在程序设计方面的能力,虽说学过C++ ,但自己也知道自己是个什么水平:只会编几个题目,可视化界面都不会,更不用提什么数据库编程等等的高级的知识了,就一菜鸟中的菜鸟级别,还是计算机专业的,拿出去丢啊!想到老师也不会再教了,觉得得自己去学了,不然以后毕业了去哪混饭吃,而且一定要学好,要学的牛X!可能就是在那一天,小小的下了一次大的决心:要精通一门编程语言,至少一门。
首先考虑学什么,硬件不感冒;程序设计,还不错,学什么呢?可能是之前对用C++ 编个带界面的程序尴尬的原因,我没有选择继续学习C++ ,想换一门语言去试试。也许是当时经常听到周围的学长或者在网上、图书馆书籍中看到的Java 比 C++ 的优越性(完全面向对象、一次编写,到处运行、没有指针等等),我试着去接触Java ,去图书馆借了几本书,网上下了尚学堂——马士兵的J2SE 视频教程,慢慢的开始学习起 Java 来 .
因为个人觉得学习先看视频、再仔细看书比一开始就往书堆里扎的效果要好,于是我就先看视频。看了一段时间,觉得讲的挺好的,也都能理解,当然有一部分原因是因为我学过C++ ,有编程的概念以及面向对象对象的基础。慢慢的,我发现我越来越喜欢马老师的讲课的风格:首先他讲课先讲学习的方法、为什么而学、该怎么学习、怎么学好。这点对我的以后的学习有很大的影响,改变了我学习的方法,应该一生受用。其次是他讲课时一步一步引导学生思考的授课方法让我很喜欢。尤其是在面向对象的学习中让我收获颇多,因为自己觉得在——C++ 程序设计的课上根本就好像没有学到面向对象的知识,什么多态、封装、虚函数都没学好。于是又下载了他的Java 高级视频: J2SE 项目训练、 JDBC编程、 Html&CSS&JavaScript、 Java Web<Tomcat、 JSP 、 Servlet 、 Struts 、 Springs、 Hibernate> 等等,当然很大一部分原因是我自己越学越有兴趣、越自信啊!后来我也用 JSP 写了一个小型聊天室。随着不断的深入学习,发现自己也慢慢的对 Java 情有独钟。
学了一段时间,感觉自己Java 学的不错。有时就感觉自己与 Java 有着很密切的关系。比如:听到别人在讨论 Java 和 C++ 的优缺点或 Java 比C++ 怎么优越时,恨不得告诉别人自己是学Java 的,而且学得也不懒。有时上网看到编程排行榜时,看到Java 占据第一的位置,心里就感觉很自豪,而看到Java 的比率下跌,心里就有点落空的感觉,好像Java 语言就是自己开发似的。 当然这种心态后来慢慢地就没了,也许是自己了解的更多了。我的那种偏爱Java 、甚至有些鄙视 C++ 的心态没有一直持续,因为经常逛 CSDN ,看一些文章、自己了解的更多了,对那些语言的认识也不再那么肤浅。
现在回过头来想想,当时学习C++ 感觉很难,其实并不难,当然其中有些知识点确实有点难: 比如指针操作很麻烦,容易带来错误。那时感觉难,其实只是刚刚接触编程,没有那种逻辑思维,对代码不敏感,没有多看看、多熟悉!
另一点也是后来才明白的,在编写带窗口的程序时,总觉得不知所错,《C++ 程序设计》书上也没有讲过啊,也没见写一段程序就出来一个窗口啊,难道C++ 还没有学好?后来才知道其实 VC 和 C++ 是两码事, C++ 是一门语言,一门讲解程序设计的语言;而VC 是一个开发工具,一个开发 C++ 程序的工具,它是 Microsoft的产品。直到后来才明白要学好 C++ ,能熟练运用 C++ 编程,不仅要很好的掌握C++ 程序设计,而且还要掌握 VC这个IDE ,熟悉 MFC类库,这样才能算是一名合格的 C++ 程序员。
以前一直以为Java 有多么的好,其实真有那么好吗?
Java 的解释执行的速度难道有 C++ 的编译的快吗?没有!
用VC++ 编写一个杀毒软件, Java 能吗?不能!
用C++ 编一个大型网游, Java 能吗?不能!
用C 能写一个操作 Unix 系统, Java能吗?不能!
所以任何一种语言都有其优势,哪种语言也替代不了其它语言!
最近在CSDN 上经常看到发表一篇关于什么开发平台升级的文章后,下面跟帖的就分成两个阵营在那吵:一个说什么垃圾,一个说什么怎么好。其实那些都是非常片面的想法,编程语言没有优劣之分,任何一种编程语言都是随着需求而产生的,在前一种语言的基础之上进行改进提升。比如因为需要面向对象所以在C 的基础之上产生了 C++ 、因为网络应用发展所以在 C++的基础之上产生了 Java ,随后又在 Java 的基础之上产生了C# ,每一种都有其优势及应用领域,都无可替代的!经常看到学 Java 的和学 C# 在那叫嚣,他们也不想一想,如果没有Java, 会有今天的 C# 吗?可能今天还是有很多人在叫 C++中的指针怎么这么不安全啊!有谁开发一种新的语言啊,把指针给简化一下啊!没有 Java 会有今天网络应用的辉煌吗?
所以我对Java的心态,也慢慢平和了。因为任何一种语言,曾经都创造了奇迹,哪怕N 年以后可能会慢慢的消失于人们的视野。
当然我也不再死扎于Java ,开始接触或是深入学习其他语言。之前很欣赏这样的一句话:高手不在于熟悉多种编程语言,而在于精通一种编程语言。后来自己想明白了这样的一句话:真正的程序员不在于用他所精通的一门编程语言解决所有的问题,而是对于不同的问题,能给出最佳的解决方案,而不在于何种语言!
这就是我的编程之路上的一些思考,写下来与大家一起分享!共同进步!