看似努力

最近一直在思考一个问题,什么是真正的努力。

前几天看到一个事情,说印度学生的努力程度比起欧美学生要高很多。只要一有时间,印度学生就会抓紧时间学习,看书,不会浪费丝毫时间。然后每年的大公司实习申请中,印度学生的申请占了申请总数的大部分。结果是,像facebook,或google这样的大公司的实习生录取名单中,欧美学生占了绝大多数,只有很少的印度学生。这说明了什么问题?

我所理解的努力

之前一直很幼稚,当然现在也很幼稚,以为努力就是单纯的为了某一件事而罄尽自己的全力。努力可以分为两种:

第一种是这样的,上课会努力地记笔记,下课会努力地复习笔记,认为逃课是可耻的。看书的时候恨不得把整本书都刻到脑子里去,他们做什么事都很努力,他们一直在努力,所以很少思考,于是没有自己深刻的认识,一门课考试考完一段时间差不多就全忘了,但这并不影响他们努力学下一本书,继续努力把下一本书刻到脑子里。这些人的努力程度不亚于全宇宙任何一个星球上的人。

第二种是这样的,他们怕麻烦,怕重复劳动。有时他们会开发一些脚本来完成繁琐的工作,如果是一些大家都用得到的脚本会推到github上让大家一起修改,有时他们会参加一些开源的项目,对开源社区做出贡献。他们有自己的项目,并经常活跃在像stackoverflow这样的社区。他们有自己的博客,总结遇到的问题,定时更新。他们对计算机领域感到兴奋,他们想要做的是解决问题。

思考

上面两种人的差距在于努力后思考的时间和思考的深度。一部分原因要归结给教科书填鸭式的方式。计算机领域还算好,很多国外的教材还是讲得很循循善诱,但引发人去思考的佳作真的不算多。

就计算机本科学习来举例吧,我们都知道要带着问题来看书,真正能做到的都变成了牛人。

我自己思考得也不多,现在回想起来,觉得很多课程当时都思考得不够深入。

学算法,自己思考过Dijkstra算法和Prim算法的核心是没有区别的吗,思考过快排的非递归怎么写吗,思考过如果解决了NPC问题,那意味着什么吗,思考过学习算法的终极意义是什么呢。

学数据结构,自己写过B+树吗。

学数电,思考过怎么通过时序电路的寄存器和组合电路组成了CPU流水线的基本框架吗。

学C++,搜索过C++11的特性吗,不能说写了一个class,用上封装,继承,多态,就说会C++吧。

学计算机组成,深入思考过CPU流水线是怎么处理数据冒险和控制冒险的吗,分支预测失败了怎么处理,ret语句怎么处理,push的寄存器是esp的话怎么处理,自己模拟实现过流水线吗。

学体系结构,思考过几种主流的ISA的区别点在哪吗,思考过怎么根据硬件的限制优化代码达到加速的效果,思考过superscalar是怎么使IPC小于1的吗。

学计算机网络,思考过一个用户先从DHCP申请IP,再到发送一个HTTP包到互联网的全部过程吗。

其实这篇文章的目的是批评自己,希望自己以后多思考多总结。

学而不思则罔

以前学这句古语的时候,体会不到这句话里面的意思。

而现在经历了大学快4年,算是经历了些事情,发现古人真的是那么早就参透了世间深刻的道理。

学而不思则罔。

共勉。