大学杂念集 –关于学习和技术
大学常思,极少为文,杂念闭胸,不舒不畅。诸君不喜勿扰。
学习,当然我们先说说学习学校的课程,大一一年下来,课程不少,学得倒是不好不坏。不喜这部分的直接到第四段。大学我们常常会感觉学校开的一些课程用处不大,诸如微积分,线性代数,离散数学,数学实验之类的,只为去谋求个不挂科,学霸们则为了绩点而拼搏。我也一样,并不把这些课程放在心上,只是平时水水学,临考前突击。而事实上,这些课程是非常有用的,只是学校老师基本上不会告诉你这有什么用,于是我们便陷入了枯燥课程的×××大海。
关于这些课程,我根本谈不上什么造诣,不过是一个忐忐忑忑完成了课程的学生,但是我知道在计算机中,数学是计算的根本,在计算机中有很多研究领域需要数学的支持,毫无疑问的是,计算机科学是在数学的土地上生长起来的,这一方面大家可以参看《数学之美》,你大概就会了解数学和计算机的关系。
另一方面,matlab有什么用?我在上学期开学之后也有过同样的疑问,又因为对老师不甚感冒,于是每次上课就一水而过。在接触到Machine Learning以后,我才知道它的作用。因为其庞大的数学计算库,应用级别的算法当然不会只需algorithm.h或者math.h里面的函数那么简单,当然matlab或者octave也极少单独用来制作可发布的软件,更多地是用来展示一个模型,计算该模型是否有效,如果你要再C或者其他语言中实现这些模型,你会感觉到十分地痛苦。同时matlab和octave提供了到C或者其他语言的接口,在验证了模型之后,我们就可以实际化程序了。当然这只是对于我们,对于其他专业的同学,matlab有更多的作用,在此不赘述。
其实学校里的课程并不是我想说的重点,学校能教多少?如果只是按照学校的标准完成学业,那这个大学算是读废了。我是软件工程,对于所谓的“卓越工程师计划”我并不完全感冒,只是国家缺少这样的人才,于是学校试图用模子把你培养成工程师,如果你只是老老实实地完成规定的学业,bingo,工程师一号。所以,我们得谈谈自学,当然这和我们的技术也是息息相关的,大学十分看重自学,因为很多人把应该上课学的放在了自学时段:)看过一篇文章,有一句话说是“人类社会实在太复杂了——一个人的价值并不是那么容易就能体现出来的。而且我们很难去判别一个人的价值”,遗憾的是,我们也没有一个特定的标准去判定一个人的技术,虽说是计算机技术,但是也分许多门类,可能一些人擅长这个,一些人擅长其他。我只是谈谈我的见解。我们应该自学什么?我的答案是应该学在职业学校学不到的!
我并不是反对大家去追求流行的技术,毕竟我们得紧跟时代,但是要知道你随便报个学校班就可以学到这些东西,而且基本没有任何基础要求,一些学校一开始就是C++,JAVA,然后各种Android,IOS开发。说实话,我感觉没用,练手还可以,如果你只接触这些,很快就可能被抛弃。信息时代变化之快超出想象,你能100%预测以后的技术潮流吗,你能保证现在火热的移动APP开发能火到你工作吗?所以我们必须接触随着时间变迁而越发经典的东西:数据结构与算法、计算机系统及原理等等看似无法展示的东西。真正有用的东西是学过之后很难展示,但你知道它已经成为你的一部分,会伴你走过你的技术生涯。
数据结构和算法,很遗憾并不是你手上薄薄的课本能讲得完的,也极少有人能把这条路学得通,课本上的知识,根据我的理解,不过只是给大家描绘了一下大海的样子,你如果确定想要探索这片大海,你得做好读研,读博的准备。数学可能更多地在这方面有所展示。因为这方面实在是牛人辈出,做ACM的也大有人在,实在不敢在此班门弄斧。但是我们必须知道的是,数据结构与算法是最好的语言,而C/C++/JAVA/C#……不过只是工具罢了,把编程技术比作枪,那编程语言不过只是枪托,重要的火力系统是数据结构与算法。
接下来是计算机基础,你说我们为什么还去了解计算机系统?这大概是很多人的想法,我们连枪都有了,还缺什么?要以德服人的话,我们是不是还缺少足够的修养?对,看似底层的东西我认为就是一个程序员的自我修养,你可能知道有一本书叫做《程序员的自我修养》,遗憾的是他只讲了关于程序的链接,编译等知识,个人认为可以出成一个系列,好好讲讲系统,讲讲汇编。看起来漂亮的建筑,没有基础,也无非只是空中阁楼,我们的知识体系也一样,你说你可以做个网站,写个应用,但是问你服务器的架构,应用底层如何交流信息?你却不知道,毫无疑问,你建立了空中阁楼,你不过是一个知道怎么贴好瓷砖的建筑工,却不知道建筑怎么设计,水泥和泥沙如何调配。你使用的不过是其他人为你调好的水泥(底层架构),做好的瓷砖(SDK),贴好了一个建筑,然后说:看,那是我建的建筑。当然,你如果决心做一个UI设计师,也无可厚非,UI设计跟多地与人的心理,与美打交道,并不适用于我们谈论的技术。
最后我们来谈谈心态,这是我思考了很久的东西。首先,先哲告诉我们应该谦逊,对人对物对技术都一样,当然我知道这是很难的事,坚持自己,不认可他人几乎是计算机技术领域的流行趋势,你大概可以从各大语言之争中以窥端倪,吵得是不可开交。现实中我也不止一次地听到有人说诸如“360太垃圾了”,“微软比苹果2多了”的话,当然,如果你是一个消费者,我并不一定认可你,但我一定双手支持你的判断。因为消费者是上帝,你可以俯视这些公司,但作为一个从事这方面的未来的技术人员,请保持谦逊,360比你牛的人大有人在,微软更是不必说,在你扪心自问能在技术上俯视这些公司之前,请不要说这种傻了吧唧的话来体现你特立独行的风格。
另一方面,技术在于坚持,选择一条路,在有正确的判断后坚持下去,这大概并不是成功的捷径,但总会比绕路来得快,技术上,求深不求广。当然在这之前,你可能会试图去了解很多东西来找出最适合自己的路。祝你走上康庄大道。