冬Blog

醉心技术、醉心生活
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

乱弹程序语言

Posted on 2008-05-28 14:19  冬冬  阅读(3061)  评论(36编辑  收藏  举报

昨天在Info看到了对于《学习新语言通常是在浪费时间》讨论,描述了很多人对于学习新语言的观点,让我想起了以前ThoughtWork上看到的《混合语言编程》。我也来乱弹一下编程语言。

我觉得,语言,就像刀!

不同的刀用来做不同的事,而不同语言应对不同情景,只是语言的历史不像刀的历史那么源远流长,也就没有那么多花样。

不同类型的语言其实没有可比性,因为它们的理念完全不同,就像菜刀是用来做菜的,而金丝大环刀是用来杀人的。如果一个冷峻的刀客在与宿敌的巅峰对决中,凝视对手半个时辰之后抽出一把西瓜刀,那他的敌人肯定是笑死的。

《食色无双》一书中对食和色的描述令我叹为观止,我就斗胆拿厨艺类比编程,把程序员比作厨子,那么,语言就是程序员手中的刀。工业语言,C#、Java,就像普通的菜刀,切、剁、削、拍、雕,样样都成,无非顺手不顺手、效率高不高的问题;脚本语言,Ruby、Python,就像是雕花小刀,对付冷拼那是拿手好戏,但是用来剁肉馅肯定是和自个过不去;底层语言,C、C++,就像剁骨刀,大开大阖,威力无穷,用好了再硬的骨头也能啃得动,用不好就地小心自己的手指头。

当然不排除有厨子把刀法练到了覆履归一的极境,用汇编从头到尾开发一个企业级应用,那是一种执着、一种意境,常人永远无法企及。

同类型的语言学一种应该就够了,就像两把菜刀,大小款式各有不同,两把都用,大概哪一把都用不精;而不同类型的语言最好各学一种,使用水果刀切水果,使用剁骨刀切肉,才会事半功倍。

其实我们早就学会用不同的语言做不同的事情:访问数据库会写SQL、格式化页面会用CSS、交换数据会想起XML……或许将来的一天,写Web就是Ruby、写网站就是XAML。

但世界上还存在一种叫“瑞士军刀”的东西,代表了“毕功于一役”的理念,现在的.Net俨然正在向这方面发展:用Linq代替SQl、用SilverLight代替Html,然后把动态语言也拉上了战车,大有一招鲜、吃遍天的架势。好与不好就只有各位看管自己心里知道。

而我的看法是,不要被刀光耀花了眼,挑一把趁手的,真正的体会它的意境,做到收放于心,圆融自然;当手里的家伙不好用的时候,也不要抱着磕死的信念和它死磕,或许不远处就有一把应景而生的利器。

但,刀,终究只是工具,用刀的人,才是根本,只有人境界到了,才能以无厚入有间,游刃有余!