微信号:programmer_club

介绍:程序员第一自媒体,与你探讨码农人生路上遇到的各类泛技术话题,定期为你推荐码农人生思考、感悟以及启迪!

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

2015-09-13 20:06 程序员之家

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

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

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

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

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

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

 
程序员之家 更多文章 我们这一代人的困惑 神剪辑,揭秘程序员加班内幕,不能看,看完想笑又想哭! 美国12位创新型程序员:让科技永远改变 说说怎么写clean code 500,000+年薪程序猿出身哪里 猎聘网揭秘前十大学校
猜您喜欢 Charles 特惠活动 干货分享:让你分分钟学会 javascript 闭包 12c特性解读:RAC MGMTDB资料库的转移与维护 iOS基础入门(三)- iOS备忘录应用 【直播预热】 Connect();//2015 开发者活动