写给大学新生 谈大学学习
写给大学新生 谈大学学习
大学里如何学习 ?致学生 - 大学最重要的不是 Java 和 .Net 而是基础,基础才是最重要的 !!!
在这里,我也主要是因为见很多大学生现还在学校里迷茫,毫无方向感,
而刚好自己周末有点闷骚吧,因此也站出来说两句话,希望不会因此受到人身攻击,
当然,我只是扯淡,说出我的建议,至于觉得发言不妥者,自可以飘过,也欢迎提出新的见解,
而这里我对大伙扯的两句,尤其适用于现还在大学里的各位学弟学妹们,
首先,现在大学里过多追求就业率,拿我们学校来说吧,是个二流学校,为了有好的就业率,
学校一直和校外培训机构进行合作,一直主推 Java ,甚至推出学生如果在某个培训学校培训的话,
是可以不用去上课的,这一点,我实在想不通,最后我给自己一个答案,那就是学校已经自认为比不上外面的培训机构了,
这个不得不说是一个悲剧哦 ! ! !
而后就是,我们学校里,好不容易有个博导给我们上课,但是悲剧又来了,博导上的课居然是计算机导论,
最差劲的一门了,唉,现在才发现,大学里真正教书的一般都是助教和讲师,博导可都是有自己的项目要做,
有自己的公司要开,有自己的人际网要拓展,博导这么忙,当然也就只能请个助教了,
这个其实才是现今大学教学的一个大悲剧 ! ! !
还有就是我本科学的是软件工程,大学里,我很悲剧我没有学过组成原理,编译原理等等基础课,
我们听讲座听的最多的居然是培训学校来的老师的演讲(基本上是推销),
呵呵,够悲剧了吧,希望各位的学校不会和我们学校一样 . . .
上面呢,就是我在学校时候的学习背景了。
然后呢,我再根据我自己的经历来谈谈我的看法,我呢,也算是个计算机行业的狂热分子吧,
自大一接触 C++ ,我一直都对这行业很感兴趣,曾经也经常在网吧上通宵(当然那会是为了学习 C++ ),
大一到大二上学期,我一直都是在黑框框里面(也就是 DOS 环境下)写着 C++ 程序,
也潜心写过汉诺塔,迷宫,八皇后等等经典算法题,
那会儿写的呢也很带劲,但一直没有接触过具体界面的实现,所以总是感觉有些不爽,因为总觉得那不是软件,
甚至都怀疑起 C++ 到底能够做什么用,现在想来那时候的想法真是幼稚啊,
并且自己也总是幻想着能够什么时候做一个具体的软件出来(那个时候总是觉得只有有了现在所谓的图形界面才算得上软件),
后来一次偶然的机会,我接触了 . Net ,然后,我发现,做图形界面是如此的爽呼呼,
于是乎,一个人拼命地学,拼命地学 .Net,然后开始拼命地写我那个时候我所认为的所谓的软件,
写一些数学工具,一些小游戏,也将一些诸如迷宫,八皇后的算法题从 C++ 改成 C# 写的应用程序,
然后就是做 Web 开发,学了很多很多,也做了很多的诸如什么什么的管理系统等等,
但一直都感觉不再向大一学习 C++ 那么正派了,有点说不出的感觉,
但也一直总结不出什么内容,
不过现在算是总结出来了,因为我过早的涉及了高级语言,而忽略了真正的基础 ! ! !
因为总结出来了结果,所以我也越发的思考大学里面,作为一个大学生到底应该要学的是什么?
总结了个人所认为的在技术上的几点内容,注意是技术上的,至于做人处事上的,我自己都做的不好,没资格在这里扯淡,
英语很重要,我的英语一直不怎么的,因为英语差劲我也吃了很多亏的,甚至我现在看英文资料,我都得开着金山词霸的划词翻译,
看起来的那个速度自然是不用说了,
曾经我也总是想,现在国内资料那么多,要英语干吗?呵呵,听我一句劝,好好学习英语吧,
因为你会发现,你真正要找的资料是某个不常用 API 的英文解释,而不是要找 HelloWorld 怎么实现的中文资料,
然后就是难道你以为任何一门语言都有向 MSDN 中 C# 这么全面的中文文档?那你看看 MSDN 中 VC++ 的文档吧 ! ! !
或许有人会说:为什么 C/C++ 中文资料这么多?
天呐,难道你想一辈子跟在别人几十年后面,你知道 C/C++ 是一年出来的吗?难道,你愿意永远比别人了解到新知识晚几十年?
数学很重要,大学里,我数学一直都还不错,无论是高数,还是线数,离散,我都学得不错,也一直有些沾沾自喜,
但是到现在看来,我的数学,呵呵,悲剧,学得太烂了,数学的话,我觉得各位在校的,也听一句劝,学得越深越好,
曾经,我也总是觉得数学没一点用处,但是后来看了 OpenCV ,也和同学讨论了 OpenGL ,谈论了一些计算机图形学的内容,
也看了同事的一些不晓得是什么的东西,居然列那么多数学公式,关键是我一个都不懂,
此时我才发现,计算机的世界其实是一个数学世界,
你想深入了解计算机,那你得数学得学得非常牛逼,里头全是数学,所有的东西都是数学,
甚至让我觉得,计算机搞到很牛逼了的话,那么一定可以成为一个牛逼的数学家了,
或许各位会说,我只局限在我所了解的领域里面了,因为在 .Net 中,数学似乎一点都不重要呢,
但是我会反问,难道你又不是局限在 .Net 中了,
或许,你觉得微积分,常微分方程离我们很远,其实,你错了,它离我们很近,你总有一天会发现的,
呵呵,其实数学的重要不重要,关键在于你想不想真正的呆在这一行里面;
汇编很重要,弄到这里,应该会有很多人反对了,因为,向汇编这种东西,在搞 Java 和 .Net 的这些高级语言程序员眼里,
那早就应该是过时的内容了,呵呵,其实我以前也是这么觉得的,毕竟,有本事你拿汇编做个 Web 应用程序出来看看,
呵呵,以前多幼稚的想法啊,人家<<疯狂程序员>>里头的绝影就是弄的汇编,不晓得现在混得咋样咯,应该不会差那头去吧,
毕竟人家弄的是汇编,确实,那汇编做应用软件或者 Web 应用程序的话,确实太牵强了,但是为何我现在搞 .Net 这么多年了,
反而回过头来学习汇编了呢?因为我发现,我对内存的管理,对寄存器中的内容,对整个 .Net 的底层,对所有的一切都掌控不了,
曾经看一本书,好像是<<Sql Server 2005 高级程序设计>>吧(一本 Sql Server 方面的巨著,这里擅自推荐一下),
里面的作者就说了,计算机中最害怕的事情就是不可预料,无法掌控,
而且汇编语言中,对内存的寻址,以及寄存器的使用都有非常好的解释和频繁的使用,
通过学习汇编,你可以更好的理解地址总线,数据总线,控制总线和 CPU 以及内存之间真正的工作流程,
以及它们之间的一些最基层的协作关系,同时也能理会内存最真实的使用,
而不会向无头苍蝇一样,甚至连内存是什么都不知道,只会说,我只要分配内存即可,只要 new 就 OK 了,
当然如果你只想做到你所要的 new 的话,我也没有办法,我只能说你还不够狂热,不够专业,不是合格的程序员;
计算机组成原理和编译原理,计算机组成原理的重要性是不言而喻的,毕竟考研专业课中,这东西好像还占蛮大的比例的,
至于这编译原理吗,肯定又有人反对编译原理了,说,又不让你自己搞编译器,学什么编译原理,
呵呵,说的也不错,但是我想说的是,并不是你想搞什么你才去学什么,眼光放远点,
你会发现,你的世界里并不是只有 .Net 和 Java,
而且在编译原理这东西里面,你确实能够学到很多东西,就比如,如果当初设计 Java 的是你,
你会想到先将程序编译成字节码,然后再使用解释器来解释字节码吗?
我想,你肯定想不出的 ~~~
操作系统,
操作系统,这个名词听着都感觉很严重,毕竟,在操作系统被 Windows 垄断的环境下,
也确实很难有人愿意接受操作系统是很重要的东东了,
甚至觉得学习操作系统就是学习如何在 DOS 环境下,敲个命令出来一大堆东西,
或者觉得学习操作系统就像是学习 <<Windows 操作系统一千招>>一样,
能够打开个注册表,能够优化一下电脑,改变一下电脑启动画面,那就是学习操作系统了,
又觉得以后操作系统这东西就给微软去做吧,
如果你真这样想的话,那我只能说,真是个悲剧 ! ! !
我想说,如果你觉得操作系统不重要的话,那你真是错到家了,
大学里头,我一开始也是带着混的心态混过的操作系统课程的,
但是在考试前一个星期,我居然迷恋上了操作系统,那可真是作死的看操作系统啊,
整整在一个星期里,我拿着<<操作系统概念>>看了 2 遍,甚至在看完 2 遍中文版的之后,
我还准备去啃原版的,无奈英文水平太差,最后只能作罢,
经过了那次的操作系统的学习后,我自以为操作系统我掌握的还不错了,
但是后来,我发现,我一直都在追赶操作系统里面的知识,
从我写驱动程序开始,我就一直在追赶操作系统,为此,我重新学习操作系统,看 Windows 内核原理,
看 Windows 分析,看内存管理,看进线程调度,看 CPU 调度,看 I/O 管理,即插即用管理等等,
看了很多,至今我都觉得,我在操作系统这一块还很欠缺,很欠缺,我越往深处学习,我就觉得我越欠缺操作系统的知识,
现在也还正在打算到哪里再去找些什么资料来填补空缺呢,呵呵,说了这么多,
我只是想纠正现在大学里头很多人认为操作系统不重要这一观念,
操作系统真的很重要,很重要 ! ! !
C/C++,这两个东西我想不必多说了,只是在这里奉劝那些和我当年幼稚想法一样的说 C/C++ 做不了什么用的人,
如果这两个东西,你错过了,你补都补不回,
其实啊,我们被大学里头的老师害惨了啊,
曾经我的 C++ 老师就说,美国什么航空火箭发射上天后失败,直接掉了下来,照成 n 人死亡,损失惨重,
而这一切竟然是一个指针惹的祸,所以,我们 C++ 老师就跟我们说,指针这个东西很危险,少接触为妙,
哈哈哈,真被害惨了,后来才发现 C/C++ 如果没有了指针,那就真的一点用处都没有咯 ~~~
还有,当年老师教 Goto 语句的时候,老师只讲了一句话:这东西,影响程序逻辑性,造成程序可读性差,所以大家禁用 ~~~
呵呵,现在出来,这个 Goto 语句也还是经常看到的
(这里我并不是推广使用 Goto 语句哦,只是有些东西,并不是说老师不教我们就可以不学的,也不是我们不学,以后就不会碰到要使用的情况的)
劝诫各位,千万不要看不起黑框框,来句形象点的:一切图形界面都是过眼浮云 ~~~
我最庆幸的是,我当初对 C++ 还执着过那么一年半,所以,也还算有一点点,也就是一点点底子而已,
拿最简单的说,人家 Windows 还是 C 写的呢,人家 Oracle 也是 C 写的呢,你还敢说 C/C++ 没用 ?
然后,那你又会说,那些都是做的系统集成,系统软件,
呵呵,那我现在给公司里写的也都是 C 写的呢,而且写的环境还是在黑框框里头写的呢 (Dos 环境下编译调试),
那你现在还会很鄙视黑框框吗 ?
数据结构和算法,对数据结构还好,在大学里,还是有很多人意识到了数据结构的重要性的,
而且,基本上上课的老师也会稍微强调一下数据结构的重要性,呵呵,所以,在大学里头,这门课缺课的人还是比较少的',
确实,如果等到各位将来研究一些稍微底层的代码时,或者如果有机会写系统软件的时候,
你会发现,底层里头的链表那个多啊,循环链表,双向循环链表,平衡数,顺序表,最小生成树等等用的到处都是,
当然啦,现在 C# 里头,大家或许很少有机会接触到了,要队列有队列,要表有表,要字典有字典,要什么有什么,
一般来说一个字典,一个 Array , 一个泛型基本上全部搞定,
但是忘了告诉各位,用得这么方便可是需要付出代价的哦 ! ! !
而对于算法的话,现在感觉越来越不受重视了哦,
甚至很多学校都不开算法课了,只是一个简单的数据结构带过而已,
所以很多人也都不晓得贪心算法,动态规划等了(说实话,我也不太懂了,不过打算有时间去补补),
都是高级语言惹得祸(注意,这里不是抨击高级语言哦),把算法都封装的那么好,
说实在的,如果真不做大的系统的话,算法这东西真的很多都可以不需要掌握了的,
但是,如果,这世界上每一个人都这样想的话,就不会有 Windows ,Oralce 了,
殊不知,Windows 整个结构的复杂性,其中调度算法的使用,
也殊不知,Oracle 体系结构的复杂度,其中缓存处理算法的复杂度等等,
如果你只想在 .Net 上用用别人的东东,或者说是有空拿个循环玩玩的话,算法这东西确实跟你隔得很远了,
但是,难道你愿意这样???
你去看现在年薪高的程序员,哪一个不是算法高手?
呵呵,这就是差别哦 ~~~
数字电路和模拟电路,说到这里,更多意见应该会冒出来了,咱搞软件的,为什么要搞这些东西呢?
呵呵,如果真的不用搞这些东西,大学里就不会开这些课咯,博客园里头搞 .Net 的居多,搞 Web 开发和 .Net 应用软件开发的居多,
而现在市场上搞 Java 和 .Net 的又是居多,所以设计到数字电路和模拟电路的内容不多,
甚至是一片空白,所以也就觉得这两东西真是扯淡,说真的,我很能体会大伙的心情,因为我以前也是这样觉得的,
但是,大家眼光放开点,真的放开点,这个世界上真的就只有 Java 和 .Net 了吗?
而除了 Java 和 .Net 以外,很多其他地方,对于数字电路和模拟电路都是要求很高的,
尤其现在社会上很缺模拟电路方面的人才哦,而且,理解了这两个东西以后,对于自身理解程序的具体怎么跑的,
为什么能输出个字符,为什么能执行计算操作都是很有帮助的,而不会像一个码农,连自己在做什么都不知道,
这也就是所谓的不可预知 ! ! !
计算机网络,这个东西呢,说真的,也不好说,当今早就过了以前那个计算机只是用来做计算的时代了,
现在是网络的时代,如果你真不懂网络,说实在的,你连程序员都不适合,不要求你有多深的掌握,
但是 TCP,UDP 还是要分得清吧?TCP/IP 协议五层结构总的知道吧?
数据具体的流动过程也要有所了解吧,呵呵,都是很基础的东西啊,
可是,这些基础却是最重要的东西~~~
总结
上面总结出来的几门课程,都是我认为大学里头,在计算机中最最基础的课程了,
但是,这些课程却被很多大学给忽略了,从而也被很多大学生给忽略掉了,
而诸如软件工程,数据库,软件项目管理之类的课程我在这里没有提及,因为,那一块过多涉及软件方向了,
会限制到一些思维,所以我没有提及。
现在的大学里(像我所在的学校),侧重点已经变咯,培养学生事小,捞到收入才是最重要的了,
学校为什么拼就业率啊?就业率高了,自然学生来得多,学生来得多,自然,国家给的钱多,
自然,腰包里钱更多,然后又大肆拼就业率,拼就业率,那就得多让学生接触所谓的现在社会上所需要的(Java 和 .Net 程序员),
如何培养出这样的程序员呢?交给培训学校吧 . . .
甚至,似乎今年还推出了一个新的专业,是和牛耳培训学校合作的一个软件外包专业,
呵呵,专业外包人才,靠 . . . 名字真?锰?. . . 要我说,学校太不负责了 . . .
说实在的,以前,有一些不同意老赵对培训学校的观点的,
但是,现在看来,也还是有一些同意了(但培训学校确实还是有一些作用的,或许会培养人,但是我觉得也会害死人),
通观全文,可能有读者会觉得我在反对高级语言,其实,我一直都在努力地避开这个话题,
因为,我本身的意愿并不是反对高级语言,只不过,我觉得大学里头的学生,
尤其是大一,大二,大三的学生,他们不应该过早的接触到高级语言,
如果他们基础真的好了,那他们到哪里都可以展翅,当然,等到基础好了,
学起高级语言来也是手到擒来的 . . .
还有就是需要解释一下,现在大学里头流传的:学基础课程是找不到工作的 !只有 Java 和 .Net 才是王道;
我的回答是放屁 !
【写给大学新生 谈大学学习】相关文章:
2.大学新生学习指南
7.大学新生指南
8.大学新生必读