日常20161030
昨天晚上看阮一峰大神的博客,中的一篇《Java语言学校的危险性(译文)》。
当中讲到了java中是没有指针和函数式编程。
但是,对于某些最激动人心的编程任务来说,指针仍然是非常重要的。
比如说,如果不用指针,你根本没办法开发Linux的内核。如果你不是真正地理解了指针,你连一行Linux的代码也看不懂,说实话,任何操作系统的代码你都看不懂。
如果你不懂函数式编程,你就无法创造出MapReduce,正是这种算法使得Google的可扩展性(scalable)达到如此巨大的规模。单词”Map”(映射)和”Reduce”(化简)分别来自Lisp语言和函数式编程。回想起来,在类似6.001这样的编程课程中,都有提到纯粹的函数式编程没有副作用,因此可以直接用于并行计算(parallelizable)。任何人只要还记得这些内容,那么MapRuduce对他来说就是显而易见的。发明MapReduce的公司是Google,而不是微软,这个简单的事实说出了原因,为什么微软至今还在追赶,还在试图提供最基本的搜索服务,而Google已经转向了下一个阶段,开发世界上最大的并行式超级计算机—-Skynet[8]的H次方的H次方的H次方的H次方的H次方的H次方。我觉得,微软并没有完全明白,在这一波竞争中它落后多远。
除了上面那些直接就能想到的重要性,指针和递归的真正价值,在于那种你在学习它们的过程中,所得到的思维深度,以及你因为害怕在这些课程中被淘汰,所产生的心理抗压能力,它们都是在建造大型系统的过程中必不可少的。指针和递归要求一定水平的推理能力、抽象思考能力,以及最重要的,在若干个不同的抽象层次上,同时审视同一个问题的能力。因此,是否真正理解指针和递归,与是否是一个优秀程序员直接相关。
(20161031)
昨晚拜托老师帮问了这个问题。今天看到的回复。
不要吐槽我问题渣啦~~慢慢会晋级的。
不过第二点个人觉得有点离题了。
昨晚快睡觉的时候看到这篇,《为什么Lisp语言如此先进》。
希望能够找个时间学习这方面的知识