我的编程之路 - 写给学习计算机专业的同学们(转)

我的编程之路 - 写给学习计算机专业的同学们

其实严格说来我的本科并不是计算机专业,而是信息与通信工程。从我小学的4年级第一次看到中华学习机的那一天,我就被它彻底迷住了。从那以后,对电脑和编程的热爱与日俱增,直到后来来到国外攻读计算机专业硕士,从事软件工程师工作,才正式开始了软件开发的职业生涯。


回想过去20年间一点点接触电脑和编程的经历,再看看现在计算机(或者说广义的计算设备)如此普及,以及如此丰富的编程平台和开源软件,最想说的一句话就是:现在的同学们太幸福了!


记得我还在读初一的时候,参加了学校的计算机兴趣小组。那个时候,我们学校资金比较宽裕,专门配置了一个机房,主要以中华学习机为主,还有两台苹果II。这些在那时对我们这些半大不小的孩子来说已经相当了不起了。可惜的是学校没有系统学过编程的老师,只是让一个懂无线电的老师带我们,从BASIC语言学起。我就是从BASIC语言明白了顺序,循环和分支。不管怎么说,他也算是我的启蒙老师吧。初中最大的成就是写了一个考试成绩的统计程序,后来用于我们初中三个年级期末考试的排名次。接触到真正的PC应该是初三的时候,我们机房突然多了5台神秘的台式机,藏蓝色的屏幕(那时候还不是彩显)让人非常向往。后来知道那些连286都不是,估计是8086的PC。对这些真正PC的向往,让我充满了动力,于是我在一个我在一个晚上学会了DOS的基本命令,又在一个下午学会了盲打输入。从此就告别了中华学习机,转向PC的GW (长城)BASIC。


到了以后的高中时代,学校机房换成了清一色的286,老师有一台386。那时是WPS的时代,我整天就忙着摆弄各种DOS软件,偶尔打打小游戏,至于编程就没有什么长进。后来迫于高考压力,机房去的少了。不过对于电脑的热情未减,每次有机会开机的时候,看到C:/提示符就有一种莫名的兴奋感。


我系统化的学习编程,数据结构和操作系统是从大学开始的,当然因为中学的一点点基础让我学起来比别人容易一点,我的计算机相关课程都是优秀。另外一个原因是父母在我考上大学的时候立刻给我买了台电脑,于是我有了完全属于我的第一台电脑,上机的时间就多了许多。


我在大学前三年都是以C语言为主,做课程设计也是。其实通信专业的计算机课老师水平真不怎么样,除了操作系统之外其他老师水分都挺大。于是我自己凭着兴趣,学习一些图形库的调用,使用绘图命令。还有实现一些算法,比如著名的八皇后。我当时只有一个编程环境,就是Turbo C 2.0。其实中间也有想学C++,可是读起教材就像是看天书,太多术语,只好暂时作罢。直到大四的时候,因为我不考研,闲的时间很多,所以硬着头皮开始自学C++。后来自己入门了,而且对C++的面向对象方式产生了极大的兴趣。那时微软的Visual C++很红,我当时误以为Visual C++就等于MFC和Windows图形界面编程,于是狂买书自学Windows编程。猜猜我当时对Visual C++痴迷到什么程度?我记得大四的那个春节,我家人都出去拜年了,我就一个人在家里编程。


后来出国以后,由于国外开放式的教育,让我眼界大开。这才认识到Visual Studio只不过是一个开发环境,如果不做Windows上的GUI开发,不需要学习MFC。另外除了Windows平台的工具之外,还有其他很多平台比如Mac和Linux, Unix系列。到了公司以后,认识到作为一个软件工程师,其实并不是在学校那样总是从零开始写算法,而是要经常用到API,用到第三方的组件。当然还有如何写出平台无关的代码,软件工程这些方面的就不多说了。


讲了半天都在说历史,其实本文的真正重点是给同学们一些建议,希望大家在学习中提高自己的编程水平,少走弯路:


1.尽量不要太依赖Windows和微软的开发工具。国外著名的计算机学院如Waterloo,UBC给学生使用的默认操作系统都是Linux/Unix系统,如Suse Linux,Fedora,Sun Solaris等。对于个人电脑我比较推荐Mac,因为Mac OS X是Unix内核,既可以使用Unix的开发工具和开源软件,又具有漂亮的图形界面,Windows上的众多软件基本都可以找到相应的Mac版本。至于开发工具,使用Linux并不一定要求必须使用命令行编辑器比如vi,其实图形界面的IDE往往编程效率更高,因为有语法显示。我比较喜欢Eclipse,虽然主要为Java设计,但是它对C++支持也还不错,而且可以单步调试。


最后说说Visual Studio,其实我还是常常使用VS,它确实是非常优秀的代码编辑器和调试工具,甚至可以说是微软最好用的产品(我个人认为)。现在Visual Studio Express 可以免费下载,真的非常方便。如果实在喜欢Windows环境,它是个学习编程很不错的环境。像我之前所说的,使用VS不要急与去了解Windows图形界面开发,而是把它当作编译环境,学习标准的C/C++编程语言和STL。学习编写动态链接库也是非常重要的。


2.计算机绘图和动画:喜欢graphics编程的同学们,我强烈建议从OpenGL学起,理想的课本是Computer Graphics (A Top-down approach with OpenGL)英文原版。这本书从图形学原理讲起,结合OpenGL实例,是非常好的教材。OpenGL是学术研究和工业设计标准图形接口,而DirectX往往用于游戏,而且局限于Windows平台,所以前者更适合学习使用。现在OpenGL也用于iPhone上的游戏开发,因为它的可移植性非常好。


3.图形用户界面GUI:如果对GUI感兴趣,建议使用Qt。Qt现在是开源软件,支持多个平台,可以轻易编写出跨平台的图形界面软件。从学习难度来讲,Qt比MFC容易太多太多了。我认为Qt的signal-slot模型比Windows的消息和事件模型更容易理解,也很好使用。其实Qt除了GUI之外,还有许多组件库,例如字符串,文件读写,XML,网络等等,几乎涵盖了开发应用的各个方面。


4.数据库:现在太多应用离不开关系数据库了,所以一定要学。同样我建议使用开源或免费的平台,例如MySQL。可以在了解数据库原理之后,学习MySQL的API,写一些基于数据库的应用。


5.网络及面向服务:在网络时代一定要懂得Java和面向服务的思想,感兴趣的话可以了解Web application,AJAX这方面的开发和应用。现在这个方向是热点,如果留意的话可以发现很多网站都提供API调用他们的服务,例如Google,  Flicker等等,接口可以是REST,JSON,SOAP等等。其实这也概念虽然新,但学习起来并不困难。特别是Java对网络编程的支持相当好,如果你习惯了C或者C++,用Java会觉得容易很多。


其实计算机学习的涵盖面实在太广,我不可能一一涉及。我的重点是想让同学们开阔自己的眼界,充分利用现在良好的条件和丰富的开源软件,使自己迅速的成长起来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值