新的一年开始了,我大学的所有课程也刚刚结束不久,想一写篇文章谈一谈我对计算机专业的认识。博主学的专业是“计算机科学与技术”,今年大四,三年半的校园生活使我对计算机专业的认知一次又一次的改变;由于没有一个好的“引路人”,自己总是摸索着前进,走了不少的弯路。刚上大学的时候对计算机没有什么概念,当时除了会打字以外也不会什么,印象中的计算机专业是编程,是写软件,或者是做些什么PS,网页三剑客,甚至修电脑之类的东西。
在大一下学期,有了编程课,对编程有了初步的认识,也改变了原来的想法,把计算机专业认为就是编程,也尝试着做一些入门级“项目”;在大二上学期学习了数据结构,当时也不觉得它有什么用,视乎跟我那些所谓的“项目”没什么关系。由于我们学校没有开设“算法分析与设计”这门课,根本不知道“算法”为何物,直到这学期结束,才认识到编程的本质是数据结构+算法,记得当时花了一上午的时间写了个不到40行“快速排序”感觉满满的收获,相比而言,那些我做了十天半个月所谓的“项目”显得那么的空虚,直到大二结束,我对计算机的认识虽然还只是编程,但对编程的理解深入了,意识到了数据结构,算法和架构的重要性。
大一,大二的时候我一直想计算机考研为什么是数据结构、组成原理、操作系统、网络四门课,除了数据结构我认识到了它的重要性外,其他的理论课跟以后的“软件开发”有什么关系,而且这些理论课无一例外都是高学分课,这个问题一直到大三大量开了专业课我才意识到这些理论课的重要性,这些都是计算机基础,想成为一个好的科研人员或者高级码农,这些都是必备的,这些才是“计算机科学”,以前只看到了后面的“技术”两个字,我觉得“计算机科学与技术”专业中要学的“科学”要占80%,“技术”占20%。大三开始随着读的书多了,网上的各种大牛见的多了,看的多了,见的也多了,越来越觉得“编程”只是计算机的一部分,甚至是“冰山一角”,或者说只是一种实现或验证“科学”的工具(这里的科学不仅包括计算机,还有数学,物理,化学,生物等),但是编程还是很重要,并且大师级人物都是软硬通吃的,不仅对软件理论很熟悉,模电数电,组成原理,微机原理等硬件原理也十分了解,典型的例子就是著有经典的《windows程序设计》的Charles Petzold,很多人不知道他还是另一本神作《编码的奥秘》的作者。这是我大三上学期对计算机的理解,跟以前的认识还是有不小的转变。
刚上大学时就听说计算机学的好的人,数学也好,但一直不知道它们之间有何种联系,而且大二的时候也有老师告诉我“数学不能扔,要经常拿出来做一做”,但是我一直也没理解,直到大三下学期,随着读一些科研领域的初级东西,有了对计算机更深一层次的认知,觉得概率论、线性代数应用是如此之广,高数更是哪里都会用到,还有像数论,组合数学,复变函数,随机过程等等,视乎计算机每一个领域都与数学有着密不可分的关系,印象尤为深刻的是《数学之美》中那用余弦定理计算文本相似性的一章更是让我大呼过瘾,当然后来才知道那是KNN算法中一种求距离的方法而已,再看看那些图灵奖得主和那些真正搞学科研究的人大部分研究的都是数学相关。以前只知道计算机教授是很多数学专业转过来的,或者像物理这种理科专业教授是数学专业转过来的,没想到甚至很多经济学老师也是从数学系转过去的(经济学对数学的要求视乎比计算机更高),才体会到数学是一切科学的基础。
离散数学: ★★★★★
高等数学: ★★★★★
组成原理: ★★★★★
数据结构: ★★★★★
概率论: ★★★★
线性代数: ★★★★
数值分析: ★★★★
编译原理: ★★★★
操作系统: ★★★★
数据库原理: ★★★★
英语: ★★★★
数字逻辑: ★★★
体系结构: ★★★
计算机网络: ★★★
C语言: ★★★
PS:以上是我的学过的课程,还有几门我们学校没有开设的课程我也觉得很有必要:
算法分析与设计:★★★★ 数理统计与随机过程:★★★★ 汇编语言:★★★
所以我觉得计算机专业(打算从事软件方向)本科阶段,学习以上课程足够了,其他的课都不是很重要对于本科生,本科阶段最重要的是打下扎扎实实的基础。很遗憾,我的弯路走多了,没有在最恰当的时机学习必要的内容。
从上大学开始,就经常听到类似“大学学的工作中都用不到”,“大学读完感觉没学到什么”这样的话,虽然我是一个尚未工作的本科生,但不可否认的是我所列举的“重要课程”在工程上大部分都不会直接涉及。短期来看,想得到高薪酬好像还不如学一些像嵌入式,ios,hadoop等来的实惠,因为找工作时候面试官视乎更看重经验丰富比基础扎实多一些,但为什么我们要学这些理论课,记得我的软件工程老师说过“大学的课程学完不用很快也就忘了,但为什么还要学,因为大学中,学的是学习的方法”,这句话我觉得还是很有道理的,但我不是完全赞同,我觉得不仅是学习“学习的方法”,内容本身还是很重要的,因为它们都是计算机基础,在潜移默化的体现在程序,算法,或者架构中。就在前不久我去某校招的BOSS面试的时候,BOSS跟我从数据库原理谈到离散数学,令我吃惊的是人家位高权重,离开校园那么久,离散数学的知识掌握的那么好,很有耐心的给我讲了十分钟离散数学,实在令我自惭形秽。
当然,不是每个人都能到达一定的职业高度,或者接触不了很多高端研发,那这些基础科学就对我们不重要了吗?我想不是的,因为这些基础是计算机出身的人的职业文化,或者说是职业素养,就好比大部分中国人都会背“窗前明月光”,但我们生活中几乎遇不到说“床前明月光”的时候,但我们为什么还要背?这就是中国人的文化,这就是中国人的“职业素养”。学其所爱,爱学所学,才是积极向上的人生哲学。
随着“大数据时代”的到来,我觉得“大基础”的重要性不但没有降低,反而更加凸显出来,计算机的提升空间还是不可想象的大,所以我想理解计算机的本质才能不断创新,不断提高,从而应对不可预知未来。
最后祝大家元旦快乐,新的一年里学习愉快,工作顺利,最重要的是健康平安。
==================================================================================================
作者:nash_ 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/nash_/article/details/8428118
===================================================================================================