我心目中的理想语言

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

文 / 蔡学镛

主动学习各种新语言是我的习惯,於是我经常到PLnews网站上,看看各种语言的消息,遇到不认识的语言,就会花一些时间研究一下值不值得学。我自己有一套语言评分标准,我理想中的语言必须符合这篇文章所描述的各点(依重要次序排列)。我到现在还没有找到完全符合这些严苛条件的语言。

你也可以拿这些条件来检视目前你正在使用的语言(例如Java、C#、Ruby),看看你的语言表现如何。

【支援Unicode】 所有不支援Unicode的语言,都应该被埋在上个世纪的历史灰烬中。虽然Unicode早就已经是主流,但是还有许多语言不支援Unicode,这是相当重大的缺点。即使号称有支援Unicode,也有支援程度的差异,例如有的语言对Unicode的支援是添加上去的,有点格格不入,且有些语言对Unicode的支援相当有限。

【写一次,任何地方都可以执行】 最好支援Windows、MacOS、Linux、BSD等主流OS,甚至Windows Mobile、Symbian等手机的OS。

【超小的执行环境】 现在的软体都大得很可怕。几乎所有现代的语言,都需要10MB以上的执行环境,而30MB以上的也不少见。执行环境太大有什麽不好:(1) 下载、安装时耗费时间与资源; (2) 执行时速度「可能」会比较差;(3) 潜藏其中的bug「可能」比较多。因此,我极度抗拒痴肥的语言与框架。

【有包含GUI】 大多数Open Source的语言,都不包含GUI,而是使用外部的Tk、wxWidget等套件,这些外部套件往往:(1) 相当庞大;(2) 效率「可能」不是很好; (3) 不见得和语言本身的paradigm吻合,使用起来可能会导致精神错乱。除了GUI套件,我也希望具有比较好的2D / 3D绘图引擎。

【用更少,做更多】 程式写得越长,不代表越有价值。能够用精简的程式码,做出许多重要的事,才是我们追求的目标。写出来的程式短,会比较好维护。

【支援Meta-Programming】 我希望能够不用再透过ANTLR等工具,而是可以直接用语言本身,轻易地写程式处理另一种(我自己发明的)小语言,并让两种语言之间可以互相融合,达到最佳的DSL(Domain Specific Language)境界。如此一来,开发的效率会相当高,且需要的程式码会相当少。

我希望重要的DSL都已经有人先建立好了,我可以直接采用,特别是Web、资料库、GUI这些部分。

【好用的剖析器】 现在程式需要剖析文字档的机会很高,我不喜欢Regular Expression,也不想用外部的ANTLR,我希望能有更方便使用的剖析器,让我可以利用BNF(Backus-Naur Form)的语法。

【能够呼叫C】 许多时候,光靠语言本身还是做不到的事,必须呼叫OS或其他厂商的C程式库。如果语言和C之间能有良好的介面,那麽呼叫外部程式库就会很容易。我希望不只能呼叫C,也可以做成call-back函式,被C回头呼叫。

【具有良好的Web与资料库方案】 现在做软体开发,十之八九都是Web加上资料库。如果该语言可以轻易地做出这样的方案,会相当具有吸引力。

【嵌入组合语言】 写C程式时,我们可以嵌入x86组合语言,以提升速度。我希望现在一般的语言也能够有类似的作法,让我可以嵌入比较低阶的语言,舍弃一些检查(例如型别检查,阵列边界检查),换取速度的提升。

【丰富的资料型别Literal】 我希望语言能有丰富的资料型别,且能够用literial的方式写出这些型别的值,如此一来,写起来非常简短方便,表达力更好,并可能有其他的好处(例如让DSL的设计更容易)。

可惜目前主流的语言,Literial的写法都只有不到10种,不外乎是整数、小数、字串、阵列,距离我所谓的「丰富」,还有好几倍的差距。

【轻量级的RPC / SOA】 我希望语言能支援RPC / SOA,且使用轻量级的方式,不要搞得像IBM的SOA那麽复杂。复杂的东西又贵又难上手,失败告终的机会很高。

【支援RIA】 提供浏览器Plug-In,让程式可以在浏览器内执行,也可以独立於浏览器而执行。为了要支援RIA,也要提供许多标准协定(例如HTTP)。

【有互动模式】 对於初学者来说,互动模式是相当好的学习方式,而且也可以当作Shell,进行日常一些基本的操作(例如档案系统管理)。

【免费与开放源码】 软体开发的钱很难赚,能省则省。另外,开放源码的语言比较有保障,比较不会因为厂商关门而使得该语言产品的用户变成孤儿。

【有很强的社群】 社群可以帮我们解决技术问题,告诉我们到哪里取用资源。社群的存在,可以帮助语言健康地发展。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jerryxycai/archive/2008/02/29/2132485.aspx


蔡学镛 2010-07-15 08:32:44

[新一篇] 蔡學鏞:2008編程語言走勢解盤

[舊一篇] 蔡學鏞前輩《Java夜未眠》摘要
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表