如何选择编程语言

随着认识的积累,对编程语言的看法也在改变。

以下内容,纯吐槽。

C,C++,Java

本科的时候只接触了C,C++,Java,那就先吐槽一下他们吧。

期初很狭隘的认为学习一两个编程语言就足够了,这样就可以做许多东西了,学那么多编程语言有必要吗?

学C++的时候,终于可以简单的使用输入了,然而输出格式反而不太好控制了,更重要的是,感觉C++有更多的库呀,不用重复造轮子了。

然而,现在看来,造轮子也是一件很伟大的事情,如果没有造轮子汗如雨下的付出,你哪有那么多轮子用。

学Java的时候,感觉比C++好使,可是代码怎么就不能一句两句写清楚呢,非得封装封装再封装。整的本来一两句说清楚的事,码了10来行。

回想本科时期,基本都是在用C,这个老师用C,那个老师用C,所以你交作业的时候,也不得不用C啊。Java只是在选Java,J2EE和写Android小程序的时候用过,至今都不太愿意看Java代码,写的感觉长,读起来,感觉也漫长无比,若是码代码的之前不加注释,简直感觉坑die。

C#,Ruby,Python

研究生阶段又接触了一些语言,比如C#,Ruby,Python,那就再吐槽一下他们。

进入实验室后,需要维护or改造一个软件,现在回想起来,那软件简直就是一个深坑,耗费了大半年青春,唯一的收获就是让我码了半年的C#,现在可以吐槽一下他。

反正学过C++,Java写起C#来也不费劲,期初就了解一下STL中的那些功能在C#里面是什么东东,也顺便学习了Windows的事件响应机制。不过画说回来,在VS中写C#还是很爽的,与写C++相比,简直是66666666666的一B,用起来那叫一个顺手。当初当助教,为了批处理学生的作业,还能整个界面小程序,省了不少事。

在研一春节的时候,在家无聊,那时家中只有电线,没有网线。每年回家,那叫一个苦啊,只能玩玩手机什么的。那年初一,在我堂哥家下载了一个Ruby,安装在自己笔记本上了,然而Ruby安装后,文件夹里有简要的教程,用Ruby写代码果然精简,省事呀,那几天过的也是挺爽的。

为嘛在初一写Ruby,脑进水了吗(⊙o⊙)?

都是Steve Yegge惹的祸,他写了一本书《程序员的呐喊》吐槽了不少编程语言,我看的也正High,并且他还夸赞了一下Ruby,当时我对Ruby的概念就是,这是一个脚本语言,标志是一个红宝石,岛国某程序员开发的。

当时,我还在看另外一本书,Paul Graham(什么!你不知道他是谁!请自行百度or Google)写的《黑客与画家》,保罗本人酷爱函数式编程,在书里面没少夸奖了Lisp,最后的附录里面还是哪里还对比了,Lisp,Ruby,Python,在他眼里虽然Ruby比不上Lisp,但至少Ruby接近Lisp的简洁了,然后再试Python。所以我也就看了一下Ruby,反正寒假在家也没什么事情做。

学起来Ruby还是很有意思的。这也为我后来学习Python省了不少力气,毕竟二者还是很相近的。

寒假悠然远去,终于开学了。

那段时间C#那个坑die的项目还有结束,后面又改了一段时间。边改边看Rails,因为都说没有Rails估计用Ruby的程序员会缩减到所剩无几。看Rails多少让我了解了一下web的框架,对后面学习Django多少也是有帮助的。

暑假之前终于回归到数据挖掘的正途上,毕竟这才是实验室的研究方向嘛。

在数据挖掘方面,如今Python非常流行,虽然实验室的师兄有的用Java,有的用Matlab,但是和我同级的小伙伴相对来喜欢Python,原因超级的简单,工具包丰富,写的代码还短,用起来方便,也许这就是为什么Python在科研界流行的原因。

从此,开始了Python的征程,至今也在天天写Python代码。有了一定的Ruby基础,Python学起来还是非常快的,虽然这些丰富的语言特性记不住,写的代码也不够Pythonic,为了练习先是去用Python刷题了,效果还是不错的,经常看到大牛写的代码,那叫一个牛掰,自己写了七八行,人家一两行搞定了,写的还简洁易懂,不易懂的,我是不会给他点赞的。

如今实验室的项目也是用Python做的,如果不是带着一门助教,平常是不会写C的。

总结陈词

过去认为是,我们是主体,语言是客体,我们选择了语言。

如今感觉,项目/工程是主体,语言是客体,是你参与的项目选择了语言,而不是我们选择了语言。

将来,也许还会在写Java,C++等等,原因请见上一条。

2016年5月28日补充

现在看Java感觉易读性更高了,虽然比较长,但包含的信息量大,读起来更舒服。