我心目中的理想软件开发语言

来源:互联网 发布:炮姐捏脸数据 编辑:程序博客网 时间:2024/04/28 01:08

 

主动学习各种新程序语言是我的习惯,我经常到PLnews网站上,看看各种语言的消息,我自己有一套语言评分标准,我理想中的语言必须符合这篇文章所描述的各要点(依重要性依序排列)。不过,我到现在都还没有找到完全符合这些严苛条件的语言。

支援Unicode虽然Unicode早就已经是主流,但是还有许多语言不支持Unicode,这是相当重大的缺点。许多语言即使号称支持Unicode,也有支持程度上的差异,例如:有的语言对Unicode的支持是添加上去的,有点格格不入,有些语言则对Unicode的支持相当有限。

写一次,任何地方都可以执行(Write once, run anywhere):该语言最好能跨平台执行,支持WindowsMacOSLinuxBSD等主流OS,甚至最好能支持Windows MobileSymbian等手机的OS

超小的执行环境:现在的软件都大得很可怕,几乎所有的语言,都需要10MB以上的执行环境,而30MB以上的也不少见。执行环境太大会有以下缺点:(1)下载、安装时耗费时间与资源;(2)执行速度「可能」会比较差;(3)潜藏其中的bug「可能」比较多。

包含GUI大多数Open Source的语言,都不包含GUIGraphical User Interface,图形用户界面),而是使用外部的TkwxWidget等套件,这些外部套件往往:(1)相当庞大;(2)效率「可能」不是很好;(3)不见得和语言本身的Paradigm吻合。除了具备GUI套件之外,我也希望该语言具有较佳的2D/3D绘图引擎。

用更少,做更多:程序代码写得越长,不代表越有价值。能够用精简的程序代码,做出许多重要的事,才是我们追求的目标,另一方面,写出来的程序如果较简短,也会比较好维护。

支援Meta-Programming我希望能够不用再透过ANTLR等语言工具,而是可以直接用语言本身,轻易地写程序处理另一种(我自己发明的)小语言,并让两种语言之间可以互相融合,达到最佳的DSLDomain Specific Language)境界。如果重要的DSL都已经有人先建立好,让我可以直接采用,特别是Web、数据库、GUI这些部分,这样就更完美了,开发的效率会相当高,而且需要的程序代码会相当少。

好用的剖析器:现在的程序需要剖析文本文件的机会很高,我不喜欢Regular Expression,也不想用外部的ANTLR,我希望语言能具备更方便使用的剖析器,让我可以利用BNFBackus-Naur Form)的语法。

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

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

嵌入汇编语言:C程序时,我们可以嵌入x86汇编语言,以提升速度。我希望现在一般的语言也能够有类似的作法,让我可以嵌入比较低阶的语言,舍弃一些检查(例如型别检查,数组边界检查),换取执行速度的提升。

丰富的资料型别Literal我希望语言具有丰富的数据型别,能够用Literal的方式写出这些型别的值,如此一来,程序代码写起来会非常简短方便,表达力更好,并可能有让DSL的设计更容易等优点。

轻量级的RPC/SOA该语言能够支持RPCRemote Procedure Call,远程过程调用)/SOAService-Oriented Architecture,服务导向架构),只需使用轻量级的方式就好,不需要像IBMSOA那么复杂。

支援RIA能够支持RIARich Internet Application)技术,提供浏览器外挂,让程序可以在浏览器内执行,也可以独立于浏览器而执行。不过,前提是必须提供许多网络标准协议,例如HTTP

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

免费与开放源码:软件开发成本相当高,使用免费软件可以节省一部分的成本。另一方面,开放源码的语言比较有保障,比较不会因为厂商关门而使得该语言产品的用户变成孤儿。

组织坚强的社群:社群可以帮我们解决技术问题,提供相关资源,帮助语言健康地发展。

以上大致是好的程序语言应该具备的条件,你可以用来检视你目前使用的语言(例如:JavaC#Ruby)体质是否够好,也可以依照个人需求,当作开发语言选择的评比标准。 
 

原创粉丝点击