7th 十一月 2011
GOTO大会是面向企业级软件开发筹办的全球性技术开发大会,参会者包括开发团队领袖、架构师、项目管理者、技术媒体等。GOTO大会组织者同时也是企业级软件的设计者和开发者,这也使得GOTO大会承载了来自技术型企业和开发社区的最新动态。
今年10月在丹麦举办的GOTO大会上,最吸引人的内容是Google新编程语言的首次亮相。在大会开场的主题演讲中,Google工程师捷拉德·布拉查(Gilad Bracha)和拉尔斯·巴克(Lars Bak)为开发者揭开了新语言Dart的面纱。
Dart语言面向结构化Web编程设计,是继Go语言后Google推出的第二门编程语言。Dart中文释义为“飞镖”,象征着这门语言灵巧高效的特性。Dart的设计目标是创建面向Web应用开发的结构化语言,用以创建灵活的网页程序。为便于开发者掌握并使用,Dart语法在设计上尽可能以开发者熟悉的形式出现。在浏览器兼容性方面,Dart考虑了各种浏览器差异,并在各浏览器平台上保持统一的性能与表现。
在门类众多的轻量级编程语言中,Dart具备不少吸引开发者使用的独特优势。首先Dart简化了Web应用的开发工作量。其次,Dart应用借助浏览器展示给用户,在具备良好平台独立性的同时,无需用户进行任何程序安装操作,并且对现代浏览器、移动设备、平板电脑的支持都具有良好表现。Dart在定位上并非与JavaScript竞争,而是要填补Web编程方面缺少面向对象编程结构、静态类型、难以进行大型应用开发方面的空白,并为传统JavaScript编程带来大幅度的性能改善。
Dart代码运行阶段,可以依托浏览器内置的JavaScript引擎执行程序,同时Google鼓励各浏览器厂商在应用中绑定Dart虚拟机以实现Dart的原生支持。当然,Chrome浏览器已计划在未来版本中内置原生的Dart虚拟机运行时。根据性能测试数据,Dart虚拟机装载5万行Dart代码仅用时640毫秒,而从快照中加载相同的程序则更加高效,仅需用时60毫秒。
Dart开发工具支持上,Google基于Eclipse提供了轻量级的开发组件,用于编写代码并预览Dart应用。同时Google还正在开发一个名为Brightly的云端IDE提供给开发者,值得一提的是,这个IDE也是使用Dart语言开发实现的。目前Dart语言站点上展示了语言规范、实例教程等内容。在Dart项目站点提供了Dart类库、样例代码、Dart虚拟机及源代码、Dart转换JavaScript编译器等内容。
Google面向现代浏览器设计的Dart语言能够给Web编程带来良好的开发效率和优异的性能。随着浏览器应用规模化开发时代的到来,以及移动设备对浏览器应用需求的提升,我们期待新生的Dart语言为Web开发注入新的活力。
本文曾发表于《程序员》杂志-2011年11期“程序天下事”栏目。
Posted in 编程语言 | No Comments »
11th 十月 2011
在Digital Mars公司的D语言首页上,放置着这样一段话“计算机编程语言门类众多,其来源大致可分为两种途径。一类新语言来自于极具创新精神的学术界;而一类则源于关注研发结合和互联网的新技术公司。目前正是在实现编译器的实践经验中诞生一门新语言了。”在九月份的TIOBE语言流行度排行榜中,正是这门支持内嵌汇编的D语言,以其系统级编程的特性而被越来越多的开发者选用而重新入围了排行榜前二十位。
D语言是由Digital Mars公司开发的面向对象、指令式、多范型的系统级编程语言。诞生于1999年的D语言,在其设计开发十年后的2009年开放了D编译器DMD的源代码,包括D 1.0和D 2.0的编译器前端和后端源代码,分为Windows,Mac和Linux三个版本。编译器前端以GUN GPL和Artistic开源协议授权。
可以说,D语言是由数十年来实现多种语言编译器的经验积累而形成,源自C++,并为改进和超越C++而生。D语言对C++的部分特性进行了重新设计,其模板在C++的基础上做了扩充,并在语法设计上借鉴了Java、C#等多种流行语言的优点。D语言在提供C++这样强大能力的同时,又具备与动态语言相媲美的开发效率。
C++应用广泛的一个重要原因是C++进行操作系统底层编程的能力。D语言同样也提供了底层编程的特性,并加入了完善的内嵌汇编支持。内嵌汇编的特性让系统级开发者能够在标准D语言代码中嵌入目标平台的汇编指令,来完成高级语言难以实现的工作。这些处理任务包括底层驱动程序开发、获取任务堆栈信息、获取SP或RA等寄存器的状态、视频解码等各个层面。除此之外,在某些特定的数值运算中,如带进位加法运算,开发者常嵌入汇编指令来增强程序代码执行的效率。
D语言的系统级编程特性,成为D语言区别于Java、C#等其他高级语言的主要特性。如Java语言在语法级别上不提供内嵌汇编的支持,如需在代码中嵌入汇编指令,只能借助于JNI的Java本地调用,通过引用C/C++代码来间接嵌入汇编指令。而D语言则可以直接与只接受汇编指令的处理器进行交互,直接执行汇编指令集来保证操作的精确性和原子性。
尽管现代的高级语言编译器已在编译优化上做了足够大的功夫,但高级语言编译器为了保证通用性,往往只编译生成通用指令集,没有针对特定处理器的专用指令集进行优化,且无法生成新型处理器增加的高性能操作指令集。无疑,D语言将是内嵌汇编的最佳语言,它带来的便利让开发者撰写最高性能代码来充分发挥硬件潜力变得触手可及。
本文曾发表于《程序员》杂志-2011年10期“程序天下事”栏目。
Posted in 编程语言 | No Comments »
8th 九月 2011
源于微软研究院的F#语言因其优良的设计和强大的并行编程能力,正得到越来越多.Net开发者的选用。在本月的TIOBE语言流行度排行榜中,F#语言首次进入了TIOBE排行榜的前二十位。F#是微软.NET框架环境下的静态类型化函数式编程语言,支持以面向对象或泛型编程等多种风格来撰写程序代码。
F#基于函数式编程语言Objective Caml(OCaml)设计,具有OCaml常用的核心语言功能,以及函数式编程语言的其他特性。OCaml是在Perl之外,又一门以骆驼为吉祥物的编程语言。Ocaml被选中的部分原因是它提供了函数式、命令式和面向对象的混合编程风格支持。在OCaml语言中,函数式能够像变量一样被方便的在程序中传递,并且OCaml是能够自动侦测程序范型的函数式编程语言。
F#语言最初由微软研究院的首席研究员Don Syme设计,设计者Don Syme于1999年从剑桥大学计算机实验室获得博士学位,他还参与了C#泛型和.NET CLR的设计工作。在语法设计上F#具备优雅的结构,同时F#被设计为类型安全且具备良好性能的编译语言。在微软决定将F#进一步推广应用之后,F#被转移到微软专门的开发部门维护和更新,并在.NET Framework和Visual Studio 2010开发环境中为F#提供了全面支持。此外,开发者还能够在Visual Studio 2008中使用F#,或借助Mono在Linux系统上使用F#。
作为微软支持的第一个函数式语言,F#在项目中被越来越多的开发者选用,这与F#对程序并发和异步编程的良好支持密不可分。微软为F#添加了不少简化开发者处理程序并行和异步编程的便捷特性,以辅助开发者轻松完成多核并发和Web分布式系统的应用开发。在常见的开发模式下,F#被用于撰写安全并发和异步处理相关的程序组件,用户界面则使用Visual Basic或C#来编写,而最终产品由F#实现组件和其他.Net开发语言组织而成。
不仅如此,F#目前还被广泛用于Xbox 360游戏平台上的代码开发中,为开发者提供了在XNA Game Studio环境下的F#编程支持。微软研究院曾使用F#、TrueSkill以及XNA开发了一款名为“The Path of Go”具备故事情节的3D围棋游戏,以展示F#在游戏开发和人工智能领域方面的并发编程能力。
感兴趣的开发者可以阅读Don Syme及其他几位F#语言设计者共同撰写的《Expert F# 2.0》一书,来深入学习并使用F#语言。也可以阅读游戏开发者Giuseppe Maggiore撰写的《FRIENDLY F# with game development and XNA》一书,来学习F#语言在游戏开发中的应用。
本文曾发表于《程序员》杂志-2011年09期“程序天下事”栏目。
Posted in 编程语言 | No Comments »
21st 八月 2011
TIOBE编程语言排行榜每年初都将统计评出上年度的最佳编程语言大奖,获奖的编程语言被认为在该年度市场份额增长及用户认可度方面获得了最为突出的成绩。历年获奖的编程语言包括2004年的PHP、2005年的Java、2006年的Ruby、2008年的C至2009年的Go语言,这些编程语言都曾拿到年度最佳的殊荣。成为系统脚本事实标准的Python语言,因其简单易用并能成功运用在Web开发等各种不同类型的应用中,而与2010年和2007年两次获得年度编程语言奖项。
2011年已过去一半,从目前市场占有趋势来看,Objective-C已经脱颖而出,相对2010年的市场占有率增长了2.68%,毋庸置疑,Objective-C将成为年度编程语言奖项的得主。其实在2010年,在iOS平台应用快速增长的推动下,Objective-C已成为上年度使用率上升最快(增速超过100%)的语言,但从绝对数量来看,Python以拥有最大的市场份额增长率而胜出。
Objective-C设计的初衷是为在C语言基础上添加面向对象拓展,目前Objective-C已发展成为苹果各系统平台上应用开发的事实标准。Objective-C包含一个用C编写的小巧的运行库,提供给开发者各种实用的操作。Objective-C的编译可以在现存C编译器基础上实现,而不需专门开发一个全新的编译工具。这让Objective-C能重用大量遗留的C代码、类库等各种资源。目前Objective-C代码的编译在GCC和LLVM/Clang中已得到完美支持,并且GCC的最新4.6版本还支持多项Objective-C 2.0语言的新特性,比如说快速枚举、dot语法、可选协议方法、类拓展以及新的Objective-C运行时API等。
Objective-C的独特之处在于,它将垃圾回收等一些真正高层次的语言特性与C语言低层级的函数功能相结合,通过高层次的语言功能提高程序员的生产力。但即便如此,不少开发者仍旧对语言的发展给予厚望。Mac OS应用Illuminate的作者Andy Finnell在他的Blog中写道,希望在下一个Objective-C 3.0版本发布时,增加闭包的支持,并增加匿名函数以方便在函数中与前端JavaScript交互,并提供在匿名函数中访问本地变量的功能。
在公司或个人准备启动一个新的软件开发项目时,TIOBE编程语言流行度排行常被用作检测编程语言或技术先进性的参照尺度,来辅助技术选型的决策。苹果iPhone和iPad平台市场领导地位的确立和Apple各系统不断推陈出新,极大的推进了Objective-C语言的普及和流行,使其成为TIOBE本年度最佳编程语言。随着苹果公司Mac OS X Lion和iOS 5.0发布日期的临近,具备更强劲性能的硬件和更丰富易用的平台将很快与苹果的用户见面,这也呼唤更多的开发者加入到Objective-C应用开发的行列中来,让这门本年度最佳编程语言为用户实现更大的价值。
本文曾发表于《程序员》杂志-2011年08期“程序天下事”栏目。
Posted in 编程语言 | No Comments »
17th 七月 2011
TIOBE编程语言流行度排行榜的统计数据来源于Google、Bing、Yahoo!等主流搜索引擎,以及各大技术网站发布的招聘信息,在很大程度上代表了编程语言的流行趋势。在六月的TIOBE编程语言排名中,Lua语言第一次进入了排行榜的前十名。
轻量级脚本语言Lua在开发者中正变得越来越流行,这与移动应用开发的升温密不可分。以iPhone为代表的移动平台,为不少开发者提供了新的应用展示空间,也为支持iOS系统的应用开发带来了巨大商机。包括大获成功的游戏《愤怒的小鸟》在内,不少iPhone和iPad流行应用使用了Lua作为游戏脚本。Lua语言最大的优势在于其轻量级脚本和高效的运行效率,这一得天独厚的优势让Lua在以娱乐和用户体验而著称的iOS系统上大有用武之地。
小巧的Lua语言来自于巴西里约热内卢天主教大学于1993年启动的实验性项目。Lua语法简洁优美,解释器由标准C编写。以快速小巧著称的Lua拥有在目前所有脚本引擎中最快的运行速度,这样的特性让Lua、成为用作嵌入式脚本的最佳选择。Lua代码几乎能在所有操作系统和移动终端上编译运行,同时Lua提供了LuaJIT项目,针对特定目标平台为开发者提供即时编译功能,进一步增强Lua的执行效率。
Lua的设计初衷并非意图构建完整的应用,而是嵌入在应用程序中为应用提供灵活的扩展和定制功能,所以Lua仅提供了基本的数学运算和字符串处理等函数库,而并未涵盖程序设计的方方面面。在语言兼容性上,Lua一开始就瞄准了具有广泛应用场景的C和C++,让C/C++编写的代码可以很方便的调用Lua脚本,同时C/C++函数也能够在Lua脚本中调用。与C/C++代码的良好交互性,让Lua在应用程序开发中有着广泛的应用基础。
Lua最流行的应用场景是在游戏中作为处理逻辑的脚本,即用来编写游戏的任务脚本,以实现游戏的可配置性和可扩展性。在游戏中Lua脚本的加载不需重启服务器,尽管脚本的运行效率低于编译好的二进制代码,但目前CPU速度已完全能够让Lua脚本迅速解释执行。在以《魔兽世界》为代表的网络游戏中,几乎所有的插件都是使用解释性的脚本Lua编写,核心的C++代码只占全部代码中的很小一部分比重。
目前Lua语言的最新版本是5.2 Beta,如果你也准备在移动应用开发中尝试嵌入Lua脚本,在熟悉语法之后,便可移步Lua开源项目站点或Lua开发者站点Wiki库,下载感兴趣的Lua程序脚本,开启Lua脚本的学习之旅。
本文曾发表于《程序员》杂志-2011年07期“程序天下事”栏目。
Posted in 编程语言 | No Comments »
9th 五月 2011
在2011年4月举办的QCon北京大会上,来自Red Hat的Gavin King首次公开了关于Ceylon语言的重量级话题。作为Hibernate的创始人,Gavin广为Java开发者熟知。本次技术大会上透露的Ceylon语言,是Gavin在Red Hat近两年一直投身设计并开发的新一代JVM语言,计划在企业开发领域赶超Java的领导地位。
Ceylon面向企业级应用开发设计,在JVM运行时基础上执行,支持与Java的交互操作。Ceylon语言充分借鉴了Java语言的优势并屏蔽其在设计上的不足,使用静态类型并提供高阶函数支持,在保持代码良好可读性的同时进一步降低开发者入门的难度。
Ceylon语言没有设计特殊的Primitive类型或复合类型,所有类型在类型系统内部都是可表达的。Ceylon的通用类型设计比Java的实现更为简便,而且相比其他类Java语言具备更高的安全性,Ceylon的元编程(Reflection)也必须是类型安全的。此外,Ceylon语言减少了开发者对于配置文件的依赖,屏蔽了Java开发者常常需要对各种XML进行的配置和修改操作。
Java语言的确具备众多适宜于企业开发的优点,包括良好的开放性、适合企业级开发的健壮性等特点。但是其生产效率和过重的负荷却一直令人诟病。作为一门深受Java语言影响的JVM语言,Ceylon由熟知Java语言的专家设计。正是因为Gavin多年的Java开发经验,促使他着手实现这样一个期望能够超越Java的语言。
当然,从头开始创建一门编程语言以及SDK工具包无疑是一项将耗费巨大工作量的任务,但Gavin在Blog上撰文写道:我们在设计开发Ceylon语言的过程中,借鉴了大量Java开源社区中的成果,如Open JDK, JBoss以及Eclipse社区,并且这些工作对于Red Hat这样规模并汇聚众多开发好手的公司来说并非是不可能的任务。
社区支持对于Ceylon语言的发展是必不可少的,然而,要想获得社区的认可与追随,Ceylon语言本身能够提供一个设计优良的杀手级开发框架将是个巨大的激励因素,就像Ruby语言的Rails框架或Scala语言的Lift框架那样在众多项目中得到成功应用。为此,Gavin撰写了一系列Ceylon语言的介绍性文章,来帮助社区开发者进一步了解并掌握语言的使用。
此外,IDE环境对于开发语言的普及具有很大的推动作用,如被不少Java开发者所推崇的Scala语言,则同时拥有基于Eclipse的IDE工具、基于IntelliJ IDEA的开发环境,以及NetBeans的Scala开发插件。目前,Ceylon语言也同样需要一个令人满意的IDE工具,来增强语言的适用性。
作为Hibernate的创始人,EJB3.0专家委员会成员,JBoss Seam的开发者,Gavin King已经取得了令开发者瞩目的成绩,运行在JVM之上的新一代编程语言Ceylon能否真正赶超Java,造就另一个辉煌,让我们拭目以待。
本文曾发表于《程序员》杂志-2011年05期“程序天下事”栏目。
Posted in 编程语言 | No Comments »
10th 三月 2011
CoffeeScript是使用Ruby编写的编程语言,旨在通过简单的编码方式让开发者在Web应用中生成并使用JavaScript代码。CoffeeScript融合了Ruby的简洁和JavaScript的灵活,让开发者通过简单易读的语法来撰写逻辑规则。CoffeeScript编译器负责将代码逐行解释为等效的JavaScript程序,并保证生成的JavaScript代码与源代码在逻辑结构上一致。
较之JavaScript语法,CoffeeScript在语法设计上更为严谨。为了让代码看起来更加简洁精致,CoffeeScript使用空格缩进而非大括号来进行代码段分隔。开发者可以在CoffeeScript编程中调用任何已有的JavaScript类库,并能够与类库实现无缝集成。经编译生成的JavaScript代码,具备良好的版式和可读性,相比较开发者手写的JavaScript代码具备同等或更优的执行效率。
CoffeeScript翻译器是使用CoffeeScript语言本身编写,能够在编译的时候格式化JavaScript代码,这一点在CoffeeScript官方站点上也有所体现。站点为开发者提供了交互式的CoffeeScript在线编译环境,开发者在一侧敲入CoffeeScript代码的同时,代码被实时解释为对应的JavaScript程序,并可随时在浏览器上运行验证。
CoffeeScript自2009年12月份诞生以来,经历了一年多开发完善,前不久刚发布了1.0版本。在新版本中,CoffeeScript改进了循环体结构,并提供了简便的闭包实现。为了方便Java开发者使用,CoffeeScript还提供有一个被称作JcoffeeScript的Java类库,让CoffeeScript代码能够在Rhino环境中编译。Rhino项目由Mozilla基金会赞助,完全使用Java语言开发了JavaScript引擎,以便嵌入在Java应用中为用户提供脚本支持。
此外,CoffeeScript的拓展开发资源也很丰富CoffeeScript的方言Coco项目,在牺牲CoffeeScript代码可读性的同时,让CoffeeScript语法变得更为高效和实用,以便于应用的快速开发。在CoffeeScript的编码支持方面,Vim CoffeeScript项目为使用Vim文本编辑器的开发者提供CoffeeScript语法高亮显示,同时为开发者提供CoffeeScript代码缩进支持。
目前已有不少Web开发项目开始使用CoffeeScript生成的JavaScript来构建站点。比如提供各种新技术资讯的arstechnica.com站点,在其推出的iPad应用中,就是使用HTML和CoffeeScript为读者提供前端展示。37Signals发布的iPad白板应用Chalk也是使用CoffeeScript编写,并且能够借助Cache Manifest实现应用的离线运行。运行在浏览器端的坦克大战游戏Orona同样借助CoffeeScript实现。此外,另有有趣的站点使用CoffeeScript和JavaScript的矢量图形库工具Raphaël来演示如何随即生成各式各样有趣的图案。
本文曾发表于《程序员》杂志-2011年03期”程序天下事”栏目。
Posted in 编程语言 | No Comments »
10th 二月 2011
在JVM平台并入Oracle产品线后,Oracle将对JVM平台进行多项改进和调整。内容包括增强平台的模块化和集成性等特征、为Java SE增加多核处理支持,在Java ME中增加多点触摸支持等。与此同时,Oracle开发部副总裁Adam Messinger在Qcon开发大会上透露,Oracle计划在提供免费版JVM基础上新增收费版本,在收费版JVM里整合HotSpot JVM与JRockit JVM,为高端用户提供功能更为强大的解决方案。
对开发者来说,无论Oracle策略如何,JVM平台依然有着巨大的吸引力。依托于JVM平台的动态语言,始终保持着蓬勃的生命力。在这些动态语言中,能够同时兼容Java虚拟机和.Net CLR通用语言运行时的Fantom,是其中极具特色的动态语言。
Fantom最初被称为Fan语言,由于定名为Fan不易检索,开发者在09年11月份将当时新发布的版本定名为Fantom语言。Fantom使用与BSD 类似的Academic Free License 3.0开源协议授权。
Fantom的开发者将其设计为一门实用且有趣的脚本语言,来解决Java和C#编程中实际存在的问题,降低开发者编码的难度。Fantom语言最大的特点是它的可移植性,Fantom代码能够无缝的在Java VM和.NET CLR平台之间进行迁移。为了保证平台间的顺利移植,Fantom代码首先被编译为fcode,即一种字节码表示法,之后转换成为Java字节码或IL解释语言,转换的过程在程序运行时完成,开发者可以以单个文件的形式在虚拟机中部署Fantom代码模块。
对于Java VM和.NET CLR平台切换时的API调用,Fantom给出了简便易用的解决办法。Fantom提供了一组与Java 和.NET API配合使用的API接口供开发者使用,来屏蔽不同平台间对于系统API调用的差异。
当然,Fantom语言的可移植特性不仅限于Java和.NET平台,Fantom支持将代码编译为JavaScript脚本供开发者在浏览器端使用。Fantom语言从一开始就为跨运行时的编程而设计,在未来的规划中,Fantom语言还将支持iPhone的Objective-C语言,以及LLVM集成编译环境或集合了Python与Perl语言优势的Parrot语言。
在Fantom编程支持方面,开发者可以使用基于NetBeans Platform的IDE环境FantomIDE进行编码和调试,IDE包含开箱即用的Fantom环境,语法和词法解析使用开源语法分析器ANTLR设计,FantomIDE还提供了Javascript、CSS、HTML、XML等脚本支持以及Subversion和Mercurial等管理工具。
JVM平台从不缺乏优秀的动态语言,Groovy、JRuby、Jython、Scala都是其中的佼佼者,不同语言的风格类型、运行速度和工具支持也各有千秋。Fantom以其跨运行时的特性和先进的设计理念,是否将来能脱颖而出得到开发者的认可,让我们拭目以待。
本文曾发表于《程序员》杂志-2011年02期”程序天下事”栏目。
Posted in 编程语言 | 2 Comments »