编程语言对我的思维的影响
今天看到一句话,深有感触:
A language that doesn't affect the way you think about programming, is not worth knowing." -Alan Perlis大概的意思就是说,不能够影响你的思维的编程语言,是不值得学习的。 以前,我对这个,理解得并不是很深刻:语言就是一个工具而已,还是要靠我的思维去指导。起决定性作用的,还是我的脑袋而不是某一门语言。不过,最近这个渐渐发生变化了。 记得刚上大学的时候,学习c语言,基本语法还好,谈到编程、解决语言问题,简直是不知所云。对我这种,大学之前,就没有接触过电脑的学生来说,实在是太难了。所以我坑坑巴巴的把c语言学完了,可是还基本不会写什么东西。后来第二学期学习c++和数据结构,数据结构这门课,我真的很喜欢,因为可以有成就感,同时教材中的算法都是用c++实现的,又在学习c++所以可做到相辅相成,这样,c++和数据结构都进步了,而且,我几乎把数据结构那本书中的每一个算法,我都自己实现了一遍,自己亲自调试通过。我到目前位置,这方便吃得都是那个时候的老本儿,没啥进步。后来和学长们交流,说下学期要学习java,我就在过年的时候,提前学了一遍,当时在图书馆借了一本儿《Java完美宝典》,可能很多同学,都没有听过这本儿书,但是,我入门就靠这本儿。通过这本儿书,我好想理解了什么是编程,而且,越来越认为编程就应该是这个样子。后来,那个春节,我把java学完了,那本书里例子我基本自己在ultredit中敲了一遍,然后javac,java的编译运行调试。我对java的理解相对比较什么了,继承下的静态变量,静态函数的处理啊,内部类、匿名内部类啊,我自己觉得理解的都不错。而且,对java的api也比较熟悉。以致后来上课的时候,我能够指出老师授课中的错误。我非常的喜欢java,这么多年来,我一直用的java,而且,我对java很熟悉,绝大多数java相关的,我都或多或少知道一些,其实也算半个精通吧。当时就觉得,java真是一个很方便的工具,什么都能干,而且都能干得不错。 这期间,我也看过不少其他的语言,什么ruby、puthon、groovy、scala。我都有所涉猎,但是都觉得不如java方便,一方面java太熟悉了,解决起来问题,还是java快,而且java的类库太丰富了;另一方面,没有什么强制性的要求,没有那么强的动力去学习这些语言,或者说去换换思维。直到我了解scala,进一步了解clojure之后,我的思维逐渐发生了转变。 scala像是一种集大成的语言,很庞大,号称支持面向对象和面向函数,又支持强大的Actor模式。scala确实很强大,支持面向对象,java程序员可以很快的转过来;支持面向函数,java程序员转过来之后,可以慢慢的面向函数,可以使写出的代码更加精简。scala在国外的一些公司,如Twitter和linkedin都有广泛的应用。但是我个人不喜欢scala,原因如下:
- 太庞大了。
- 混乱,如果团队中,不同的人有的采用面向对象,有的采用面型函数,不统一
- 性能。目前scala的实现,还是有问题的,OOM比较严重。