如果说计算机专业的学生与非计算机专业的最根本的差别绝对是数
据结构(数学大家都一样学了,主要看你自己学得好坏)。对数据结构的掌握与
运用能力是衡量你编程能力的一个很重要的指标。有的人对于看了链表,栈,树
广义表这些东西就头痛。然而这些东西往往能使你的程序的效率比别人高出百倍
由于一直搞信息学竞赛,到了大学又搞
ACM,所以我对数学和数据结构都掌握
得相对较好。这使我在应聘与工作中明显感到胜人一酬。记得自己大学时去一家
公司应聘的经历,当时去应凭的还有
3 个人,有 2 个大学毕业,有个也工作了
一段时间了。他们几个都在大讲自己的能力如何之强,会使用的语言及编程工具
如何之多,经验如何之丰富。按理说我应该是资质最浅的。当时也是初生牛
X 不
怕虎,也就硬着头皮去了。当时面试的题目是一个公司的资金管理项目的一个问
题,要求每个人都在思考后给出自己的设计方案。其中比较核心的一个问题就是
要计算一个资金最小波动值的问题,给出的数据量相当大,对效率要求很高。对
于整个程序的面向对象化的分析我们几个都是差不多的,毕竟这些东西在学校
里是很重视的,而且不是真正的难点。然而到了最关键的问题时其余的人都卡壳
了,有两个是用简单的双重循环,时间复杂度
(N^2),惨不忍睹。还有一个在冥
思苦想了好一阵以后说用树,具体技术细节又讲不清楚,效率分析也很马虎。只
有我当时很快就给出了采取
AVL 树的方案,并且利用
高等数学
推导作出了很详
细的效率分析和时空换算,并提出了引入
汇编
的方法。很自然的我得到了这分工
作。在这里大家显然可以看到数学和数据结构对于一个优秀程序员是多么重要,
“
”
它们是和一般的程序员打开档次的最关键的地方。这样向 枣子 碰到的那种情况
应该很轻松的就可以想到。 如果你是一位想学习编程的朋友,我经过多年的学
习总结出来了一个学习的线路希望对你有所帮助。要学习编程是要有很大
恒心
和
毅力
的,首先你要明确自己的目标,想好自己编程是为了干什么。如果你学习仅
仅只是一时想编出
QUAKE 和成为比尔盖次的冲动,那么我劝你还是应该还是
不要开始学习,应为这样的目标很难支持你日后大量的学习。而且你的年龄不能
太大(最好是中学或者大学生)。如果你想好目标并决定开始奋斗,那就让我们
开始吧。如果你一开始对电脑一无所知,那么你应该
先熟悉一些电脑的一些最基
本的原理和操作
,这个不需要特别细致的学习,只要大概知道二进制和一些基
本操作就可以了。
接下来你应该先学习
BASIC 语言
,这个语言并不会耽误你太
多的时间,学习它完全是为了入门,让你对电脑编程有一个比较初步的认识。这
时候你应该多编一些小的程序,知道一些最基本每条语句的功能,搞清楚一些
基本的数据结构(尤其是数组)对于一些其余用途的函数最好不要做任何学习,
因为这样只会分散你的注意力。当你能够可以熟练的运用
BASIC 编出猴子选大
王,以及电脑出题考试之类的程序时,你就可以开始后面的学习了。
接下来如果
觉得自己接受能力强的话就可以开始学
C 了(注意不是 C++),
如果感觉
有
困难也可以先学
Pascal 过度一下
。还有很重要的一点就是千万不要一开始就学
VB,DELPHI,VC 之类的东西,这些东西在一开始学会对你造成很坏的影响。
有可能会把你引入另外一个错误的学习方向而忽略了真正应该掌握的东西。学
C
主要是学过程话的程序设计,学会把自己的程序分成许多的函数(或过程),
养成良好的编程习惯。这时可以多看一下高人的程序,不一定要懂意思,主要是
学会别人程序的格式(比如变量如何起名,怎么划分函数)。除开掌握基本的控
制流语句外,应该学习一些很简单的
I/O 函数和数学函数。C 的学习主要是你舍
弃原来
BASIC 程序那种把所有语句积成一大堆的风格,要学会使用函数,提高
代码重用性。对于指针之类的东西如果实在看不懂可以先不去管,到后面会有办