Dancing On The Other Side

上个月底发了条微博:“抽了点时间用MindMap整理了下最近想学的东西及要做的事情,发现其实并没有想象中的那样繁多。只是每一样都要耗时不少,短则几月,长则数年,甚至有的值得一生的Devotion。时间果然是一把灭人于无形滴杀猪刀啊。”

感叹归感叹,学无止境的路上还是需要一步一脚印地走下去。在此整理成文,记录下近期所学的东西。

NodeJS

前几天把三个月前做的NodeJS介绍部署到了Heroku上。重新翻看了一下,发现所讲的还是比较简单。呵呵,毕竟也只是一个Intro,暂时不打算修改了。有兴趣的童鞋可以点这里围观一下。

最近其实都没怎么折腾这方面,不过在Twitter上倒follow了不少相关信息。从本月初刚结束的NodeKnockout中,可以不少看到基于Node架构所带来的实时互动Demo。(插一句,大部分参赛队伍都选择了MongoDB来做数据存储,这两者的结合真是绝配啊)

国内的CNode社区最近的活动进展也是如火如荼。前阵子在上海的分享会上Joynet的亚太区执行总监Jim Blom也能亲临现场,着实体现了Joynet开始对亚太区的重视。期待着哪天Ryan Dahl也能来北京吧。。。

全国首届“Nodejs开发者大赛” 最近也开始报名了。一直想搞个NAE的帐户,因为Heroku现在还只是提供node0.4.7,而NAE可以用上0.5.5版,可以试试不少新的feature。只不过最近事情真是多,不知道有没有时间抽得出身>_<

CoffeeScript

喜欢CoffeeScript,并不需要太多的原因。有时仅仅只是因为省略掉大括号后代码显得更简洁而干净。毕竟JavaScript是门非常灵活的语言,在一个函数作为头等对象的世界里,随处可定义function的宽松、将没加var的变量当作全局的自作聪明、以及回调嵌回调时的视觉障碍,使得在写JS代码时难免需要提心吊胆。

灵活与严谨,本身就是一对不可调和的矛盾。Douglas Crockford在写《JavaScript: The Good Part》时,从中提取出相对这门语言的整体而言具有更好的可靠性、可读性和可维护性的JavaScript的子集。CoffeeScript则将其更推进了一步,从更高级的语言层面着手,提供了很多语法糖, 让代码更优雅可读。毕竟,当摒弃JavaScript中一些容易造成问题的evil tips后,简洁清晰的代码更容易维护。另一方面,其将JavaScript作为一个中间替代,是以它也可以很自然地与先前的JS代码结合,从而确保了兼容性。

当然,关于CoffeeScript的质疑其实也不少。一方面是对于JavaScript这样的语言作为JVM机器生成码的可靠性的争议,毕竟现在CoffeeScript只是一家之言。另一方面,现有的JavaScript解析器只能识别JavaScript代码,虽然有js2cofee之类的工具(其生成效果无法与CoffeeScript代码一一对应),但在调试过程中,还是无法直接确认出错的位置,是以使用起来难免有些不便。但无论如何,JavaScript现在已经跟不上高交互的互联网应用的需求,一言以蔽之:JavaScript已死,JavaScript长存

虽然NodeJS和CoffeeScript都还有不少不足之处,不过基本上已经前后端通吃了。配合着PhoneGap框架,顺着HTML5的热潮,不管是做应用还是做服务都基本上进可攻退可守了。

Scala

最早听说Scala是在老赵的博文《Why C# Rocks And Java Sucks》,转眼之间,已经过了一年有余。那时候还是在校学生,在学校也用SSH写过一点东西,是以一眼看到这样的标题还真热血上涌了一番。不过随着出来实习之后,也的确感受到Java语言本身的臃肿与繁琐,以及它这几年群龙无首的情况下的停滞不前。

相比之下,Scala所带来的好处可谓数不胜数:简洁明了的语法,近完美的互兼容性,纯面向对象,灵活的异常处理……当然,最重要的一点是函数式编程与指令式编程的结合。在经历了面对对象的炮轰之后,认识并了解函数式的思想无异于打开了一个新的编程世界,至少其Actor的处理机制就能让人从Java复杂的多线程编程中解脱开来,也注定了Scala天生就适合于分布式应用的优质基因。

与NodeJS和CoffeeScript这样的新生事物相比,Scala的发展显得更成熟,相应的学习资源与更加丰富。除了《Programming in Scala》这样的电子书籍之外,Twitter新开放的Scala School也提供了很不错的入门教程,值得一读。官方的插件功能也挺强大,只是推荐分配内存就至少一G,我的Y450基本上是无福消受了。今天读《浪潮之巅》时看到Andy and Bill’s Law,大意是硬件的升级会一定程度上纵容软件的发展使得软件会消耗更多的硬件资源从而促进硬件的再升级,深感于此。

Git & Github

虽然很早就听说了Git的大名,但真正换用Git来管理项目代码却是最近几个月。原因一是最近办公环境换成了Ubuntu,二是NodeJS的不少项目都托管在Github上,用Git来获取会方便得多。

与SVN相比,用Git来做VCS确实要高效得多。一来用Git建立branch时只是指针的重新定位,比起SVN的hard-copy自然是要省时省空间,也更适合目的明确的Feature Oriented Programming;二来基于分布式的无中心架构,使得commit都在本地即可执行,免去了SVN服务器出故障时无法提交的尴尬—-当然,这点对码农来说,不一定是什么好事:P

SVN Down

Github就不多说了,因为现在我用得其实还不多。不过有句话说得好:日阅代码三百行,不会编程亦枉然。真正想好好学好一门编程语言,找几个优秀的开源软件认真研读一番,即使不能了解得八九不离十,也可以依葫芦画勺写出点东西来。关键还是要静得下心,好好地去Read the freaking source code。至于好的开源项目在Github或者Google Code上随处可见,择其善者而从即可。

Vim

君欲善其工,必先得其器。作为一个整天敲键盘的人,选择一款高效的文本编辑工具的确很有必要。虽然之前也试用过一阵子Vim,但因为种种原因便放弃了。这几个月重新上手,逐渐习惯了它的操作方式,便感觉电脑键盘似乎成了自己思维的延伸,愈发体会一个好工具用得得心应手是多么地心旷神怡。

不过,Vim的学习曲线的确是相当地“平坦”,但其高起点让不少用户都是浅尝辄止,自然是无法体会Vi文化的博大精深。配合着其强大的定制功能以及种类插件,Vim完全可以打造成一个适合自己的IDE。当然,这个打造的功能也难免要折腾一番╮( ̄▽ ̄)╭

如果没有接触或在犹豫要不要学Vim的同学,可以看看StackOverflow上的《Is learning VIM worth the effort?》 如果有接触过Vim却被吓倒的同学,不妨循序渐进,按酷壳上的《简明Vim练级攻略》慢慢升级打怪吧~

不过有一点还是不得不说,Vim在处理中文的时候还是不够方便。一方面中文输入内容英文确定命令的中英混合输出也就意味着输入时需要来回切换,另一方面中文不像英文那样用空格来区分开每个单词,使得Vim在移动时的效率大打折扣。至少原先我在Vimwiki里面写下这篇日志的时候就觉得相当不习惯。所幸的是平时写代码和写文章的场合不需要统一,索性也就不折腾着拿Vim来处理中文了。实在什么时候觉得不爽了,以后就开始写英文博客吧╮( ̄▽ ̄)╭

后记

发现换用Linux后,开发的习惯与所用的工具也发生了不小变化。再回首时,默然发现这些工具其实显得有些小众。呵呵,就算真的小众那又如何呢?正如痞子蔡《第一次亲密接触》中所写的那样:

我轻轻地舞着
在拥挤的人群之中
你投射过来异样的眼神
诧异也好,欣赏也罢
并不曾使我的舞步凌乱
因为令我飞扬的
不是你注视的目光
而是我年轻的心

Dancing On The Other Side。承前启后,是以为题。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: