个性化的开源操作系统Haiku OS

IEEE Spectrum是美国电气和电子工程师协会(IEEE)的旗舰期刊,其文章以报道信息技术领域的最新进展为主。近期IEEE Spectrum刊文介绍了Haiku OS的开发和应用情况,引起了不少喜欢尝试新鲜事物的Geeks关注。

Haiku OS是适用于个人电脑的新型操作系统,这款开源操作系统最大的特点是迅速、高效且易用。Haiku OS的前身BeOS诞生于1996年11月,由Be公司设计并开发。BeOS最初版本适用于Mac平台,两年后发布了能够安装在Intel平台的版本。较之Windows在日常办公中的广泛使用和Unix/Linux在Web环境下的普及,基于全图形化结构设计的BeOS以其出色的多媒体性能在用户群里获得了不错的口碑。值得一提的是,BeOS首次在个人电脑上采用了64位文件系统,为多媒体制作时所需的大规模数据交换带来了运行效率。因此,BeOS被广泛用于多媒体制作、编辑、播放等方面,并被很多专业多媒体开发、制作和设计人员使用。

一直以来,BeOS都在为晋级主流操作系统而努力。然而,BeOS为非专业用户提供的应用程序较少且在使用上存在门槛,致使BeOS的普及发展受到了局限。最终Be公司宣布不再为BeOS后续发展提供支持,并将包括BeOS在内的公司资产出售给Palm公司。就在BeOS被售出的2001年,原先的忠实用户发起了名为OpenBeOS的开源项目,以自由软件社区的形式继续推动他们热爱的操作系统继续发展,并逐渐演变成现在的Haiku OS。

在分析了BeOS优势和局限后,新生的Haiku OS为用户提供了清爽的图形界面,在系统启动时间、计算机硬件兼容性方面有了显著的提升。Haiku延续使用64位的文件系统BFS(Be File System),并在原有BFS的基础上针对Haiku进行优化,支持基于元数据的文件检索,以保证处理多媒体文件时的效率。此外,采用C++开发的Haiku为应用程序开发者提供了面向对象的API系统调用接口,并与BeOS平台的本地应用程序在二进制与源代码上保持兼容,这使得原先针对BeOS设计的应用程序在Haiku上有了用武之地。

在多媒体展现方面,Haiku全部使用抗锯齿字体、全矢量图形和矢量图标。Haiku还增强了MIDI协议,提供OpenGL支持,并开发了专门的游戏工具包和相应API。Haiku对BeOS的外设输入响应机制进行改进,建立了全局的输入服务来为各种输入设备提供响应,并建立各项输入设备与操作系统通讯的渠道。

在2009年9月,Haiku发布了第一个milestone版本Haiku R1/Alpha 1,并紧接着于2010年5月发布了R1/Alpha 2。在第三个版本R1/Alpha 3于2011年6月发布之后,Haiku第四个版本同时也是最后一个Alpha版即将发布并进入Beta阶段。

不同于Windows、OS X 或Linux,Haiku在某些特性来讲是独一无二的。Haiku拥有10秒以内的系统启动速度,运行时仅占用170M内存空间,且从来不会出现Linux那样内核经常与用户界面不协调的情况。相比较那些主流的操作系统,Haiku就像一把小巧的瑞士军刀,灵巧迅速的成为工作的帮手。可以说,Haiku代表用户对个人电脑与众不同的看法,如果你不愿意每隔一两年就因为操作系统更新换代而被迫购买更高性能的电脑,如果你受够了操作系统庞大的体积和与各类软件兼容性带来的恼人问题,如果你认为电脑就应该是一件快速、简单、高效、新颖的忠实工具,那么不妨试一试Haiku OS,或许你会发现它正是为你设计的。

本文曾发表于《程序员》杂志-2012年06期“程序天下事”栏目。

装备制造技术出版物标准S1000D

一年一度的S1000D用户大会将于6月18日在美国丹佛召开,广泛用于航空等高端装备制造领域的技术出版物标准S1000D将是本次大会的主角。用户大会围绕S1000D展开了多层次的技术讨论和经验交流,议题包含S1000D项目实施案例分析、S1000D项目管理经验、S1000D与各类出版物格式转换,S1000D多媒体应用,以及用于S1000D编辑和管理的各类工具。

S1000D是面向技术出版物制作和发布的国际标准,使用XML结构来描述、管理和发布技术文档。S1000D最初由ASD(欧洲航空与国防工业协会)作为军用标准设计并提出,用于记录军用飞行设备的装备维护和操作信息。从S1000D第二版开始,其适用范围就开始向更广泛的装备制造领域拓展,包含陆上设备、航海装备并逐步应用于各类商用和民用设备技术文档。

S1000D由专门的管理委员会更新和维护,并负责协调各方意见达成一致。目前通用的4.0版本由ASD、AIA(美国航空工业协会)、ATA(美国航空运输协会)以及领域用户共同参与制定。其中ATA的鼎力支持为S1000D标准的民用化进程注入了不竭动力。ATA是美国历史最悠久的、规模最大的、全国性的航空公司行业协会。在民用飞机客户服务领域,ATA参与制定的文档规范在制造业领域具有很高的权威性和可操作性。目前,ATA发布标准规范涉及航空制造、机场地面服务、货物和危险品、维修和材料、燃料销售、操作和安全性等多方面内容。

在使用上,S1000D涵盖了技术文档的计划、管理、生产、交换、分发等各个环节,覆盖工程性项目完整的生命周期。符合S1000D规范的技术文档以数据模块(Data Module)形式被创建,数据模块表示在技术文档中粒度最小且能够对信息进行完整描述的内容块。数据模块包含模块标识、状态信息、以及一个存放技术文档信息的内容单元。数据模块描述的内容及结构体包含业务规则信息、描述性信息、故障信息、零部件数据信息、维修及检查信息、程序及过程信息、技术知识库信息等各项内容。

在信息内容上,S1000D规定了适用范围、内容组成、业务规则、规则分类以及包含各类数据模块XML Schema的内容结构、元素、属性在内的信息内容生产和交付方法。其中,S1000D的业务规则分类是其区别于其他基于XML的技术出版物标准的主要要素。S1000D业务规则分类定义了技术文档各应用层面的细节,由近千个业务规则决策点(Decision Point)组成,如产品识别码、图形符号的尺寸和缩放比率以及与相关业务标准的接口规范等内容。

S1000D业务规则分类包含十个大类。其中,一般类定义了实施S1000D的总体业务规则,包含版本号、术语定义等;产品定义类定义产品相关的数据模块和编码策略;维护与操作概念类包含产品维护级别及操作信息等;安全保密类包含密级划分、版权标记、信息使用与公开的限制、访问权限、信息销毁指令等;业务过程类描述技术出版物与综合保障、供应计划、工程设计、培训等业务的关系;数据创建类用于定义文本、图形、多媒体对象的创建规则,如术语规则、标记规则、表达规则、样式规则等,以实现技术出版物内部及技术出版物与培训资料间的信息重用最大化;数据交换类定义了厂商与用户间交换数据应遵守的规则,如数据表单要求、数据迁移协议等;数据完整性与管理类用于保证信息创建者与客户双方的数据参照完整性;历史数据转换、管理和处理类包含信息源和目标之间元素及属性的对应关系,以及技术出版物中包含历史信息的规则;数据输出类定义了S1000D数据的输出形式,包括页面出版物、交互式电子技术出版物(IETP)、多媒体出版物、SCORM等多种形式。

在工具支持方面,不少制造业工具提供商和出版工具开发商都推出了S1000D制作及管理产品,如美国Inmedius公司的S1000D制作套件、出版业领导者PTC公司在其主推的Arbortext工具中提供了S1000D编辑与管理支持。

对于复杂的装备制造业来说,其专业化细分程度日益增强,工程协作性要求也逐步提升,越来越依赖于以计算机为基础的技术出版物来支持各类信息内容的描述。作为国际化的技术文档标准,S1000D的应用减少了高端制造业领域的技术信息维护成本、降低了数据转化为配置项的难度、提高了技术文档输出及跨平台转换的效率,有效保证技术文档的管理稳定高效。S1000D的使用,将在帮助使用者在原有装备升级改造和新装备引进的过程中保证各类技术文档的有序管理,能够在降低信息生成成本的同时避免信息内容的重复生成,且更有助于制造业产品的技术描述在世界范围内维持一致性和通用性。

本文曾发表于《程序员》杂志-2012年04期“程序天下事”栏目。

Google结构化Web编程语言Dart

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期“程序天下事”栏目。

开源的系统级编程利器:D语言

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期“程序天下事”栏目。

函数式编程语言F#

源于微软研究院的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期“程序天下事”栏目。