那些与我有关的计算机语言

从学计算机开始,接触过很多语言。一直想写篇文章来着表示下我的热爱,也算作怀旧。

最早接触的是Visual Basic,听邻家大叔的忽悠,认识这门语言,从郑州科技市场淘到一本VB 6的书,然后回到家就是对着机器一阵乱打,画了几个界面,拖了几个按钮,也写了好几个”Hello World”。就是觉得没有意思,不像电影里那么酷,也不知用来做什么。

然后,如果Fox Pro也算的话,因为总是要对别人拿来的数据库进行归整,所以经常用到一些简单的Fox语法,至今一点都记不得了,但还是觉得比Basic上得到的更多一些。

高二时,从当当买了一本叫C#语言的书,天那,那时谁知道C#是个什么鬼东西,但看了微软的.NET计划,我觉得这语言将来一定会火。那时每天C井的给同学讲个没完。五张的光盘去装.NET Fx,把书上的简单的示例写了一遍,那时脑袋瓜小,总想不明白计算机里面的那些事。由于高考,复读,说实话,这些东西都只是个小过路客。

大学不二的选报了计科专业。然后开始一展我的特长,大学开了不少计算机语言相关的课程,像Java入门,C#编程…因为有个教授出版了一本C#方面的书,结果全校多加了两门该课程,大多数的项目也都由C#来做。我因参加校方的不少项目,也不例外的加入MS的阵营。

内心来说,我更偏向于Java,总觉得在Linux, Java等给人的是一种自由的象征,是Geek精神的完美体现,而Windows和C#则是充满商业的铜臭。

不过这一梦想从未得到实现,大学毕业后,为了找Java相关的工作,还买了一堆的烂书,为了应对面试。却不想工作3年,都是和C#息息相关。但这一想法并没消息,只是换了个角度。

从大学开始,我的开发视角就关注在架构,每天和同学讨论来回的都是三层架构,领域模型等,虽然现在看来并不是多深。在在这些领域实践中,Java一直是先行者,无数的创新理念被提出,被实践,被.NET复制,看多了NHibernate, Sprint.NET。直至找不到.NET的原创,才明白语言终究是有灵魂的,这些魂在整个社区,每个使用它的人心中,而C#还是被定义在商业中。

通过对JVM的学习,进而了解.NET,学习Maven来懂得软件开发流程,然后又懂得Nuget。也有时会觉得Java没有Linq而不爽。总之,这二者之前会很紧密,不再是排斥,而是通过对比学习,来了解语言的内在。

Python是我见过很美的语言之一,平实而高效,绝对是完美之选。抱着相关的书读了又读,在Web Fx上选了很久,定下Django。然后用GAE,写Demo和教程。看社区约定,真的Py是一门很棒的语言,只是我当时选择它去写Web,这不是它的强项,虽然有很多家公司用它来写Web。

直到我遇见了Ruby,在学Py时,就看过Rb的介绍,用魔幻来形容。然后无一例外的是从Rails开始,后来慢慢的Ruby without rails,真正的去了解这门语言,当然我对语言的感觉远不如对这门语言所形成社区的认识那般强烈。

快速和简单是Rails的一项,但绝不是Rails最独特的一面。ASP.Net的随意拖拽和最近的Scaffold也让其够快够简单。在Rails中体验更深的是那种社区反复在强调的设计哲学,DRY、CoC,REST,Agile。这些理念潜移默化的植入这个社区,在我看来,这才是我从RoR中最大的收益。

说从RoR中获益最多不为过。这真的是计算机语言最美的地方,让语言语义化。于是在后来的一年中,我都在想办法例行这一原则,设计更好的API,为方法起更好的名字,使用链式调用… 特别是其在RESTful上的最佳实践,让我在使用ASP.NET MVC中一直对其念念不忘,当有同事在炫耀他发明了面向URL编程的时候,Rails的使用者只能默默的为他祝福。

作为Ruby语言魔幻性的一面,每人都有自己的看法,我的观点则是,魔幻是技术层面的,简约是管理层面的。也就是说,语言本身提供更可能多的解决方案,而使用哪种则是公司内的约定,追求简约易沟通的公司,可以使用编码规范来强制代码的易读性。HTML5大会也提出过同样的观点。

而Rails在Web方面的无可替代性更是体现在其周边的应用上,看下rubygems.org上有关Rails 扩展的功能包,多的不胜枚举,更不用说Github上那些个人的专门解决方案了。这也是社区的魅力,就像大教堂和集市中所描述般。这里的贡献者,大多是为了爱好,使得质量更高。

相对于Ruby在Web,Python在系统级的应用也让人惊叹。这得由于所有的Linux发生版都有预装Python的缘故,更多的人使用Python来代替复杂的Bash来做系统调度,使用在这一层面上Python的应用达到空前。但在Web上,Python站在Ruby面前就像一个中学生去挑战成年男人般。选择它的人,都是对语言有着某种天生热爱的人。

JavaScript是一门不得不说的语言,一向不大喜欢,却又紧紧的充斥着生活中的各各方面。得由于Web发展的越来越快,应用越来越广,JS借浏览器也得到了飞速的发展,现已走出浏览器。但这门语言天生有着缺陷,加上各浏览器对其实现的标准不一,让人不是很喜欢。连JS之父都公开声明其对JS的厌恶,只用十天设计,为使其简单使用原型链继承…等等。

JS一直是感觉很简单的,但每次理解了去应用时就觉得巨烦,有点像前端共有的特性,简单很烦靠经验。

node.js的出现,让所有人都为之一亮,JS的一些特性使得其在某些方面有着天然优势,像异步。但还是感觉它有很长的路要走,毕竟产品要的是周边,而不只是语言。