开源GIS实验田

OpenSource GIS Space

  • 内容导航

  • 最新评论

    • : 嗯嗯,是呢,虽然我现在还不是很懂...
    • mowu: 有要帮忙的吱一声...
    • 直流电机: 非常强悍,感觉现在的软件公司和学...
    • Gao Ang: 这将是一次开源GIS百科全书式的大会 ...
    • SHG: 恭喜恭喜 希望到时有更多国外的专...
  • 热门主题

  • 随机阅读

    • 2012 年五月
      « 四    
       123456
      78910111213
      14151617181920
      21222324252627
      28293031  
    • Gao Ang

      GaoMiao's Portrait
      有了理想
      就不要寻找放弃的理由

      站点搜索

    • 只言片语

      青春是没有经验和任性的。 ——泰戈尔

    健康和医疗信息项目GNU Health

    4th 五月 2012

    LibrePlanet是自由软件社区中活跃成员发起的开发者会议,旨在促进自由软件的开发、推广和使用。近期在美国波士顿举办的LibrePlanet 2012大会上,Richard Stallman代表自由软件基金会颁发了FSF组织评选的2011年度自由软件奖项,奖项包括自由软件促进奖和社会公益项奖两个项目。

    自由软件促进奖颁发给一直为促进自由软件发展而做出贡献的业界领袖,开发者所熟悉的Python之父Guido van Rossum、Perl之父Larry Wall等传奇程序员都曾是这个奖项的得主。而今年的奖项由Ruby语言作者松本行弘(Matz)获得,这是对Matz在GNU、Ruby及其他自由软件组织近20年工作的肯定。

    同期颁发的年度社会公益项目奖的候选对象是为自由软件做出贡献、且能够有效服务社会的项目或团队,历届奖项得主包括Creative Commons、Wikipedia等广为人知的自由软件项目。今年该奖项的得主是GNU Health。提供健康信息和教育服务领域自由软件的NGO组织GNU Solidario的负责人,同时也是GNU Health项目的开发者Luis Falcon在会议现场接受了颁奖。

    GNU Health是免费的健康和医疗信息系统,包含电子医疗病历系统(EMR)和医院信息化管理系统(HIS)、健康信息管理系统三个模块。电子医疗病历系统记录患者个人健康状况的各项数据和信息,病历数据常在健康信息中用于诊断辅助,并在不同系统间实现数据互操作;医院信息化管理系统用于提高医院各项工作的效率和质量,减轻医务人员需要处理的各类事务性工作,使其集中精力为患者提供医疗服务。在GNU Health中,具体包含的功能有患者预约管理、医疗器械管理、医疗费用计算、数据分析统计、医疗产品和服务管理、支付管理、医疗采购管理等不同的功能模块。

    在技术实现方面,GNU Health使用Python语言开发,借助Tryton项目实现用户服务层、业务服务层和数据服务层(3-tiers)的整合,同时保证应用在模块化、可拓展性和安全性等方面具备良好的基础。此外,GNU Health整合了Python包索引(PyPI:Python Package Index)以便于安装和部署,使用者只需在下载应用压缩包后执行pip install命令,即可在线装载所需的运行依赖项并执行程序。在实用功能方面,GNU Health支持CalDAV 日历同步,可以将就医预约和住院治疗日历与Google 日历或Apple 设备进行同步;GNU Health提供了轻量级的远程过程调用协议JSON RPC支持;GNU Health具备增强型的处方单据和遵从最新体系的药剂分类,包含世界卫生组织WHO提供的最新药品列表,以及增强的医疗实验室模型。作为面向全球化的健康和医疗信息系统,GNU Health还提供了最新的翻译引擎,以便于实现本地化的应用。

    致力于加强全世界医疗专业人士合作,改善欠发达地区的医疗信息化现状的GNU Health项目,已被联合国大学和国际健康研究所采用作为教学和研究系统。同时项目在GNU Solidario组织的推动下,已经与尼日利亚、加纳、印度尼西亚、秘鲁以及阿根廷等国的医疗组织、医生、患者建立了有效的沟通渠道,帮助其使用GNU Health项目来管理各类健康信息。

    尽管获得了今年FSF颁发的社会公益项目奖,GNU Health依旧还有很多功能需要不断完善和改进。项目发起人Luis Falcon曾在邮件组中发出邀请,希望有更多的志愿者参与进来,参加文档编写、本地化翻译、Bug测试、质量保证、编码开发、新功能测试等方面的工作,帮助GNU Health项目为那些难以负担软件费用的用户,提供更好的健康和医疗信息化系统。

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

    Posted in 诸子百家 | No Comments »

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

    15th 四月 2012

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

    Posted in 编程语言 | No Comments »

    eCl@ss信息分类系统

    7th 三月 2012

    信息分类是将具备某种共同属性或特征的事物或概念集合在一起,把不包含这种共同属性或特征的信息区别开来的过程。信息分类是IT公司对各机构实施较大规模信息化建设过程中的基础要素,通过信息有效分类及统一规则的编码赋码,可以按逻辑关系或层级次序对各种看似杂乱无章的信息和数据进行排列组合,使其在分类体系上具备规则。

    在传统的信息分类方法中,最通用的是线分类法、面分类法和混合分类法。线分类法将选定的对象属性作为划分基础来进行层级类目划分,如行政区划代码;面分类法将对象本身固有的若干属性或特征划分成一组独立的类目,每组类目构成一个面,按一定顺序将相互之间没有隶属关系的面平行排列形成分类,如职务名称代码;混合分类法将线分类和面分类组合使用,以其中一种分类法为主,另一种作补充对信息进行分类,混合分类在处理企业信息化建设中的复杂分类时较常使用。

    随着企业信息化建设的发展和深入,基础的信息分类方法已无法满足复杂信息类型的分类和描述需求。随之出现了与面向对象程序设计思想类似的分类体系,其中典型的代表是来自德国的eCl@ss分类系统

    eCl@ss是对产品和服务进行分类与描述的国际标准,由德国eCl@ss协会发起,由各大跨国信息技术公司和各个行业的领导企业特别是制造型企业共同参与并研究制定的分类系统。与传统的信息分类编码区别最大的是,eCl@ss不仅涵盖25个不同行业,四个层级,超过75000项类目和主题词的分类体系,还包含用于对产品和服务进行描述的属性集合以及各属性的值域范围。

    eCl@ss分类体系的制定和维护都是一个相对庞大的系统工程,目前在协会的推动下,由不同行业的专家进行维护,并不断推进各类目及属性的更新和完善。在企业电子商务应用中,eCl@ss分类为企业采购带来巨大的经济优势,买方可以借助分类及属性方便的获取供应产品元数据,以扩大供应商范围并减少交易费用,通过增强产品及零部件的可比性来提升市场透明度。由于买卖双方使用相同的数据结构进行信息交换,对于供应商同样可以起到减少交易费用,拓宽供应范围的作用。

    eCl@ss分类体系的方法依据ISO标准13584的第42部分:结构化零件族方法学来构建。eCl@ss分类体系中包含类表、关键词表、类和属性的关联映射表、属性表、值域表、属性和值域的关联映射表。其基本思想是通过关联映射文件,在不断扩充的类目、属性和值域之间建立联系。eCl@ss的上下级类目具备属性的继承关系,即子类目顺承父类目对应的各项属性,并在此基础上关联自身特有的描述属性,并向其下一级子类顺承。

    由于不同行业的产品或服务共享一些通用的基本属性,eCl@ss还设置了标准属性集与基本属性集。标准属性集是为描述某类产品专门制定的,而基本属性集一般都是由下面五个属性组成的:EAN代码、制造商名称、产品编号、产品名称以及产品类型描述。其中EAN代码是国际物品编码协会统一制定的商品条码,是由国家代码、厂商代码及检查码等项组成的数字码,通常以一维或二维条码的形式印制在商品的外包装上。

    在贸易全球化的趋势下,信息技术和通讯科技的发展将各类企业更紧密的联系在一起。随着企业间数据交换的需求不断增加,对产品和服务进行分类与描述的统一标准将越来越重要。致力于成为世界上最重要分类标准的eCl@ss,为电子商务过程中各个参与方提供了数据交换的基础,通过统一的规范帮助企业节约时间和沟通成本。

    目前,源于德国的eCl@ss体系,已拥有德国铁路巴斯夫化工、戴姆勒-克莱斯勒、宝马、保时捷、大众、奥迪等一大批企业用户。eCl@ss分类及属性描述也被翻译成英语、法语、西班牙语和中文,正在从拥有广泛工业基础支撑的欧洲逐步延伸至美国和亚洲,并努力成为被全世界理解和使用的信息分类及描述国际化标准。

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

    Posted in 标准研究 | No Comments »

    通用智能语言UBL

    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 »

    Google结构化Web编程语言Dart

    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 »

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

    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 编程语言 | 2 Comments »

    北京成为FOSS4G 2012大会主办城市

    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中国在申办过程中准备的各种材料分享如下,其他各申办城市提交的材料参见会议组织站点

    OSGeo中国将积极组织承办2012年的FOSS4G盛会,为来自世界各国的开源GIS社区开发者与使用者提供最好的参会体验。也希望在2012年大会的承办过程中,能得到关注开源GIS发展,各位IT、GIS与RS同行与朋友们的协助、支持和参与。

    Posted in 聚焦GIS | 3 Comments »

    函数式编程语言F#

    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 »