优秀的程序员是懂指针和递归的

  上周还是什么时候,和老大的一次谈话,他提到,他觉得Java程序员只能是个半吊子(大概意思是这样)。当时,我反驳说,其实还是可以有牛人的。但元旦琢磨了下,觉得还是一个思考层次的问题。

  如果单从Java语言来看,确实是很简单的。没有指针,内存自动回收,大量的设计模式,简化了递归的思考,真把人当成了一个傻子,希望把所有复杂性都掩盖好,这样就不容易犯错。好笑的是,现在大量的学校开始以Java作为教学语言,这有没有问题?如果教学是以简化编程,更注重计算机科学的学习,那没有问题。当如果天天讲一些Java的新特性,1.4 1.5的区别,讲autobox,那就太好笑了。一个不适合做程序员的学生也可以达到及格。

  我们再看看lisp,看看C。其实一个是递归的代言词,一个是指针的代言词。如果你无法从多个层次进行抽象,那么你很难适应lisp函数式编程的风格,也就不奇怪理解不了Google的Mapreduce。如果你不了解指针,那你几乎看不懂一行操作系统代码。你几乎就很难去架构一个数据的存取方式。

  但还是有一些Java大牛的,James Gosing就是其中一位,他们都是C和lisp或者说指针和递归的高手。我们可以更加一步来抽象,算法其实包含了大量的递归,编译原理是lambda演算,里面也有大量递归,操作系统实现有大量指针,数据库,网络都是指针的天下。

  所以什么是一个优秀的Java程序员呢?从一个特别的层次下定义:他一定熟悉或者精通C和lisp/haskell/erlang等语言。。

  同时,我们公司一博士也发表感慨,说感觉Javascript好难学啊,这门语言太复杂了。其实Javascript的复杂是由于它本身就吸收了C和lisp的精华。所以closure、pointer都可以得到体现。不了解Javascript指针的同学可以看看我的对象真经。所以,Javascript是一门看似简单,但很能体现水平的语言。不过,如果能一开始就抱有这样的一个心态,学习Javascript时就会少了些浮躁。请相信,将来Javascript会有更大的舞台

it知识库优秀的程序员是懂指针和递归的,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。