红联Linux门户
Linux帮助

蔡学镛:我心目中理想的编程语言

发布时间:2014-01-31 09:18:31来源:红联作者:Denterp
  一个好的编程语言应该让你驰骋在自己的脑海中,自由飞翔,而不是设置重重障碍拖累你。除了这个笼统的说法之外,我自己有一套语言评分标准,我理想中的语言必须符合这篇文章所描述的各点(依重要次序排列)。你也可以拿这些条件来检视目前你正在使用的语言(例如 Java、C#、Ruby),看看你的语言表现如何。

  【支持 Unicode】

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

  【写一次,到处都可执行】

  最好支持 Windows、MacOS、Linux、BSD 等主流 OS,甚至 iOS、Android 等手机 OS。

  【支持各种软件开发】

  我希望能用一个语言做系统开发、驱动开发、DLL 开发、应用开发、服务器开发、脚本开发。

  【超小的执行环境】

  现在的软件都大得可怕。几乎所有现代的语言,都需要 10MB 以上的执行环境,而 50MB 以上的也不少见。执行环境太大有什么不好:(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 那么复杂。复杂的东西又贵又难上手,失败告终的机会很高。

  【有交互操作模式】

  对于初学者来说,交互模式是相当好的学习方式,而且也可以当作 Shell,进行日常一些基本的操作(例如文件系统管理)。

  【免费与开放源码】

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

  【有很强的社群】

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

  【支持浏览器】

  代码可以编译成 JavaScript/HTML5,让程序可在浏览器内执行。

  我到现在还没有找到完全符合这些条件的语言。或者,你已经发现了这样的语言?
文章评论

共有 0 条评论