分类: 胡思乱想

技术评定:不及格

一起实习的一个兄弟今天离职返校了,临走前聊起了一些关于学校、学习、技术和成绩之类的话题,内容略去不提,但却让我惊醒:我已经是一个大四即将毕业的本科生了。

在学校学习了三年,自己究竟有几斤几两?一年后本科毕业,能否称得上是合格的南大(南京大学)计算机毕业生?思前想后,结果是十分悲观的…作为一个在计算机系学习了三年的本科学生,我完全不及格…最悲哀的是,一直以来在学校里自我感觉良好,但仔细想想,却没有任何一个拿得出手的技术方向!

一、语言
“语言不重要,算法、思想才是最重要的”,这样的话不知道听过多少次,我自己也深信不疑,但是却忽略了一个重要的前提,能够忽略语言本身一定是在精通掌握了至少一门语言之后才可以的。并不是说能够熟练写各种“hello world”就能说语言是浮云了,算法和思路是大脑,但语言是手脚,手脚不灵活如何实际构造自己的想法?当你有一门精通的语言并形成了编程思维后,才算是进入了语言是浮云的境界,各种语言信手拈来而没有丝毫混乱。“语言不重要”的本意应该是强调不要拘泥于各个语言的宗教崇拜中,而要忠诚于思想,灵活的使用的各种语言解决问题,而无知的我却将其理解成了掌握语言是不重要的,坑死爹不偿命啊…

反观我自己,通晓各种语言的”hello world”写法,C/C++/JAVA/Python/PHP 都在写,C写的平平无奇、C++不能控制标准类库、JAVA对各种设计理念机制处于完全无知状态、Python强大的类库和美学都只是略微有所感受、PHP更是只能捉起皮毛,完全是当作加$并且没类型的C在写…写来写去,没有哪门语言是真的拿的出手的…悲哀

亡羊补牢:
《C专家编程》
《Python Cookbook》
《Thinking in C++》

二、操作系统
操作系统本来应该是我最有自信的科目之一了,因为大二跟着JYY大神做的操作系统实验,完成了那个虽然mini但是完整的操作系统。不可否认这是个很可以拿出来装X的实验,但说懂操作系统?我真是太天真了…

自己做的操作系统只是个原理性实验性的项目,什么部分都是用的最简单的方法。对现在的操作系统的运行机制缺乏了解,多线程多进程编程经验不足、进程间通信的经验不足、Linux下的进程状态和进程结构也了解的不多、对系统IO模型的了解也很差,摸不透这些,如何能写出Linux环境下的高性能的程序?

亡羊补牢:
《深入理解计算机系统》
《UNIX环境高级编程》
《UNIX网络编程》

三、数据库(关系数据库,非KV)
这一点是最屎最悲哀的。在学校学了一个学期的数据库课程,拿了个90+的分数洋洋自得。现在看真是讽刺的很…

学校教授的都是关系数据库的理论模型、范式理论和根据范式进行规范化设计的那一套,实际用到的学了一点点粗浅的SQL语句,了解了一扭扭的事务和日志。在应用场景下除了无力感还是无力感,记录在磁盘中是如何存储的?按什么顺序存储?怎么根据B+树估计查询的效率?聚集索引和非聚集索引的效率差别的来源?索引应该如何设计?SQL语句该如何优化?这些都知之甚少,更别提高一些层次的反范式设计、分表优化、分布式数据库设计了…

亡羊补牢:
《数据库系统:面向应用的方法》

四、分布式与云计算
这是读研的方向、自己感兴趣所以乱看了很多资料,包括一些分布式的理论和行业上现在的发展和热门技术。但是深度远远不够,Google的几篇论文都没有认真的研读过,真是一大遗憾。

总结
反省一下自己目前的知识结构,确实发现了很多问题,得出一个结论:学术三流、技术坑爹。现在出去工作确实是坑公司啊…感受到差距了,赶紧补上吧,至少在研一结束前,把这些知识的漏洞解决,有了良好的基础才能谈更高层次的发展不是。