6th 十二月 2011
近日,OASIS发布了通用商业语言UBL(Universal Business Language)的2.1版本征求意见稿,这个版本在保持与UBL 2.0版本良好兼容性的同时,面向电子业务应用对UBL语言进行了多处增补。在新版本中,UBL还针对财经业务进行了优化和增强,改进了UBL与财务系统基础设施的接口互操作性,并在标准UBL语言基础上添加了拓展,以实现借助XAdES格式对UBL文档进行XML高级数字签名的功能。
自2004年由OASIS技术委员会制定第一个版本以来,通用商业语言UBL就一直致力于促进电子数据格式的标准化,来保证企业间信息与数据交换的有效性和一致性。在UBL规范中,以通用XML库的形式给出了电子业务文档格式的定义,包括产品预售、业务订单、数据交换、发票单据、付款支付等各个业务环节。在设计上,UBL遵循面向对象理念,能够在不同业务领域间有效进行条目重用。UBL具备严格的标签命名方式,设计者同时借助了CCTS语义原子性方法来保证UBL规范对信息描述的精确性。此外,在可拓展性方面,UBL文档的参考引用、标识符、代码段可以根据具体的业务环境进行定制和修改,并能够借助XML映射将UBL文档转换成各类其他文档类型。
对于特定的大型行业信息化系统建设来说,准确清晰的业务逻辑描述往往比具体功能的技术实现更为关键。UBL提供了将电子业务交易过程中纸质文件转换为以XML格式为载体的非结构化信息标准文本格式的方法和途径,借助通用的标准规范,来保证企业在进行电子业务在线交易时,使用标准通用的格式进行文档和数据交换。
UBL规范吸纳了业界多个数据标准化组织共同参与,以便于UBL能够直接植入已有的在线交易、业务审计、记录管理等业务系统中使用。此外, UBL自2.0版本以来,就与电子数据交换格式EDI(Electronic Data Interchange)及其派生的XML标准保持兼容,以便融合EDI中定义的贸易、运输、保险、银行、海关等行业信息交换格式,在以贸易为中心的电子业务应用系统中进行处理。
创建于1993年的结构化信息标准促进组织OASIS一直推进着UBL规范的发展和更新。OASIS最初以标准广义标记语言SGML(Standard Generalized Markup Language)组织的形式成立,旨在推动产品互操作性架构的建立以及SGML语言的定义。在1998年更名为OASIS开放组织后,向将业务拓展到更为广阔的范畴,并成为推动电子商务标准发展、融合及采纳的非营利性国际组织,为数据安全、网络服务、接口一致性、电子交易、产品供应链、公众服务,及企业间互操作提供通用性标准。OASIS制定的各种规范帮助商业需求被精确描述,减少标准重复开发并保证标准的延续性,在协调各行业标准化组织的基础上通过一系列基础性工作推进软件供应商之间的合作。更为重要的是,OASIS各项标准均以免费且公开的形式向公众开放使用。
目前UBL已经在欧洲政府采购联盟PEPPOL(含12个欧盟成员国),电子货运管理(EFM)等多个领域内得到成功应用,如果您所在的机构感兴趣使用UBL定义的低成本、迅捷、安全的电子文档处理方式来提高工作效率,升级传统业务流程,不妨访问UBL官方站点,更进一步了解UBL通用智能语言规范的细节内容。
本文曾发表于《程序员》杂志-2011年12期“程序天下事”栏目。
Posted in 标准研究 | No Comments »
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 »
15th 九月 2011
2011年9月12日,北京以4票的优势(9:5)领先捷克布拉格,由OSGeo委员会投票选举成为2012年FOSS4G大会的主办城市。FOSS4G历次大会都吸引了来自美洲、欧洲、亚洲、澳洲、非洲各国的开源GIS社区开发者与使用者参会,2012年将是FOSS4G大会首次在亚洲国家举办。OSGeo委员会主席Jeff McKenna在OSGeo邮件组中公布了这一消息。原信引用如下:
Hello everyone,
Sorry for such a long delay, but we finally have a clear winner through voting: Beijing, China (the final vote was 9 to 5). Congratulations to Gao Ang and their local team, Beijing will be the host for the FOSS4G 2012 event (pending approval from the OSGeo Board).
Karel, Jachym and the Prague team: it was such a close vote this year, that it shows how good your venue/team is for this event; I hope that this does not hinder your plans and energy :)
OSGeo中国在申办过程中准备的各种材料分享如下,其他各申办城市提交的材料参见会议组织站点:
- 北京FOSS4G 2012意向信
- 北京FOSS4G 2012申报书
- 北京FOSS4G 2012会议预算
OSGeo中国将积极组织承办2012年的FOSS4G盛会,为来自世界各国的开源GIS社区开发者与使用者提供最好的参会体验。也希望在2012年大会的承办过程中,能得到关注开源GIS发展,各位IT、GIS与RS同行与朋友们的协助、支持和参与。
Posted in 聚焦GIS | 2 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 »
13th 六月 2011
近日,Amazon与Mark Logic公司开展合作,在AWS云服务中加入XML格式数据的搜索与处理功能,以针对特殊用户的需求增强云服务的适用性。Mark Logic为Amazon的用户提供运行在AMI服务器映像上的XML服务器资源,以及虚拟化的XML数据存储服务。
对大多数国内数据库使用者来说,Mark Logic的知名度与主流数据库厂商相去较远,用户并不算多。但在业界,Mark Logic却是非结构化数据管理技术的领导者,其主要用户覆盖新闻出版部门、政府机构、财经信息服务等不同的专业领域。
Mark Logic公司的拳头产品MarkLogic Server是以文档为中心的领域专用数据库,专门针对半结构化和非结构化数据进行设计和优化,能够实现TB级非结构化数据资源的全文检索。MarkLogic Server支持针对Web内容、XML文档和JSON内容的RESTFul和HTTP请求。在数据模型组织方面,MarkLogic Server采用XML树状结构组织,数据查询和检索使用的DML和DDL语言为XQuery,此外,Mark Logic 还是XQuery标准发展和应用的推动者。
较之同类数据库,MarkLogic在技术上有着独特的优势。MarkLogic始终保持着远超同类数据库(如IBM DB2 Viper 2)的XML文档处理速度,并且能够保证数据在事务处理过程中的原子性、一致性、独立性和持久性要求。此外,MarkLogic对XML文档提供多种形式的索引,索引包含文档实体、父子关系以及要素取值等内容。由于MarkLogic可以在不预先建立文档Schema的基础上自动索引XML包含的所有要素,所以MarkLogic对文档的管理几乎不需借助DDL数据库模式定义。
MarkLogic已广泛应用在信息服务领域,用户包含世界领先的科技及医学期刊数据库Elsevier;为法律和学术领域提供专业信息服务的LexisNexis数据集团;提供金融财经领域高质量信息及工作流程解决方案的威科集团(Wolters Kluwer)及摩根大通银行;帮助全球性出版、财经、传媒服务集团McGraw-Hill对外提供信息服务,并辅助其旗下的标准普尔为全球资本市场提供信用评级、指数服务、风险评估和数据服务。此外,MarkLogic还被美国陆军、美国国防部等不少政府机构采用来建立信息管理业务。
如今,随着大型跨国企业数据量的逐步增加,越来越多传统的数据库应用已不能满足企业的需求。在存储和服务器成本的不断降低的趋势下,不少企业开始寻找在云端存储以XML形式存在的媒体文件、文档、网页等信息的有效途径。
MarkLogic已在帮助拥有海量非结构化数据的大型企业摆脱传统数据库组织数据并建立索引的束缚,快速搭建数据搜索和查询应用。这样的趋势正快步走向云端,为那些希望使用云服务来增强非结构化信息索引能力的中小型企业带来新的机遇。
本文曾发表于《程序员》杂志-2011年06期“工具点评”栏目。
Posted in 标准研究 | No Comments »