<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>开源GIS实验田</title>
	<atom:link href="http://www.gaoang.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gaoang.com</link>
	<description>OpenSource GIS Space</description>
	<lastBuildDate>Wed, 01 Feb 2012 01:55:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>通用智能语言UBL</title>
		<link>http://www.gaoang.com/archives/249</link>
		<comments>http://www.gaoang.com/archives/249#comments</comments>
		<pubDate>Tue, 06 Dec 2011 08:29:38 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[标准研究]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/249</guid>
		<description><![CDATA[近日，OASIS发布了通用商业语言UBL（Universal Business Language）的2.1版本征求意见稿，这个版本在保持与UBL 2.0版本良好兼容性的同时，面向电子业务应用对UBL语言进行了多处增补。在新版本中，UBL... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.gaoang.com/wp-content/uploads/2011/12/ubl.jpg" width="360" height="190" />近日，OASIS发布了通用商业语言<a href="http://ubl.xml.org/">UBL</a>（Universal Business Language）的2.1版本征求意见稿，这个版本在保持与UBL 2.0版本良好兼容性的同时，面向电子业务应用对UBL语言进行了多处增补。在新版本中，UBL还针对财经业务进行了优化和增强，改进了UBL与财务系统基础设施的接口互操作性，并在标准UBL语言基础上添加了拓展，以实现借助<a href="http://www.w3.org/TR/XAdES/">XAdES</a>格式对UBL文档进行XML高级数字签名的功能。</p>
<p>自2004年由<a href="http://www.oasis-open.org/">OASIS</a>技术委员会制定第一个版本以来，通用商业语言UBL就一直致力于促进电子数据格式的标准化，来保证企业间信息与数据交换的有效性和一致性。在UBL规范中，以通用XML库的形式给出了电子业务文档格式的定义，包括产品预售、业务订单、数据交换、发票单据、付款支付等各个业务环节。在设计上，UBL遵循面向对象理念，能够在不同业务领域间有效进行条目重用。UBL具备严格的标签命名方式，设计者同时借助了CCTS语义原子性方法来保证UBL规范对信息描述的精确性。此外，在可拓展性方面，UBL文档的参考引用、标识符、代码段可以根据具体的业务环境进行定制和修改，并能够借助XML映射将UBL文档转换成各类其他文档类型。</p>
<p>对于特定的大型行业信息化系统建设来说，准确清晰的业务逻辑描述往往比具体功能的技术实现更为关键。UBL提供了将电子业务交易过程中纸质文件转换为以XML格式为载体的非结构化信息标准文本格式的方法和途径，借助通用的标准规范，来保证企业在进行电子业务在线交易时，使用标准通用的格式进行文档和数据交换。</p>
<p>UBL规范吸纳了业界多个数据标准化组织共同参与，以便于UBL能够直接植入已有的在线交易、业务审计、记录管理等业务系统中使用。此外, UBL自2.0版本以来，就与电子数据交换格式<a href="http://en.wikipedia.org/wiki/Electronic_data_interchange">EDI</a>(Electronic Data Interchange)及其派生的XML标准保持兼容，以便融合EDI中定义的贸易、运输、保险、银行、海关等行业信息交换格式，在以贸易为中心的电子业务应用系统中进行处理。</p>
<p>创建于1993年的结构化信息标准促进组织OASIS一直推进着UBL规范的发展和更新。OASIS最初以标准广义标记语言<a href="http://en.wikipedia.org/wiki/SGML">SGML</a>（Standard Generalized Markup Language）组织的形式成立，旨在推动产品互操作性架构的建立以及SGML语言的定义。在1998年更名为OASIS开放组织后，向将业务拓展到更为广阔的范畴，并成为推动电子商务标准发展、融合及采纳的非营利性国际组织，为数据安全、网络服务、接口一致性、电子交易、产品供应链、公众服务，及企业间互操作提供通用性标准。OASIS制定的各种规范帮助商业需求被精确描述，减少标准重复开发并保证标准的延续性，在协调各行业标准化组织的基础上通过一系列基础性工作推进软件供应商之间的合作。更为重要的是，OASIS各项标准均以免费且公开的形式向公众开放使用。</p>
<p>目前UBL已经在欧洲政府采购联盟<a href="http://www.peppol.eu">PEPPOL</a>（含12个欧盟成员国），电子货运管理（EFM）等多个领域内得到成功应用，如果您所在的机构感兴趣使用UBL定义的低成本、迅捷、安全的电子文档处理方式来提高工作效率，升级传统业务流程，不妨访问UBL<a href="http://ubl.xml.org">官方站点</a>，更进一步了解UBL通用智能语言规范的细节内容。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年12期“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/249/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google结构化Web编程语言Dart</title>
		<link>http://www.gaoang.com/archives/243</link>
		<comments>http://www.gaoang.com/archives/243#comments</comments>
		<pubDate>Mon, 07 Nov 2011 07:55:58 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/243</guid>
		<description><![CDATA[GOTO大会是面向企业级软件开发筹办的全球性技术开发大会，参会者包括开发团队领袖、架构师、项目管理者、技术媒体等。GOTO大会组织者同时也是企业级软件的设计者和开发者，这也使得GOTO... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.gaoang.com/wp-content/uploads/2011/11/dart.png" /><a href="http://gotocon.com/">GOTO大会</a>是面向企业级软件开发筹办的全球性技术开发大会，参会者包括开发团队领袖、架构师、项目管理者、技术媒体等。GOTO大会组织者同时也是企业级软件的设计者和开发者，这也使得GOTO大会承载了来自技术型企业和开发社区的最新动态。</p>
<p>今年10月在丹麦举办的GOTO大会上，最吸引人的内容是Google新编程语言的首次亮相。在大会开场的主题演讲中，Google工程师捷拉德·布拉查(<a href="http://bracha.org/Site/Home.html">Gilad Bracha</a>)和拉尔斯·巴克(<a href="http://en.wikipedia.org/wiki/Lars_Bak_%28computer_programmer%29">Lars Bak</a>)为开发者揭开了新语言Dart的面纱。</p>
<p><a href="http://www.dartlang.org/">Dart语言</a>面向结构化Web编程设计，是继<a href="http://www.gaoang.com/archives/162">Go语言</a>后Google推出的第二门编程语言。Dart中文释义为“飞镖”，象征着这门语言灵巧高效的特性。Dart的设计目标是创建面向Web应用开发的结构化语言，用以创建灵活的网页程序。为便于开发者掌握并使用，Dart语法在设计上尽可能以开发者熟悉的形式出现。在浏览器兼容性方面，Dart考虑了各种浏览器差异，并在各浏览器平台上保持统一的性能与表现。</p>
<p>在门类众多的轻量级编程语言中，Dart具备不少吸引开发者使用的独特优势。首先Dart简化了Web应用的开发工作量。其次，Dart应用借助浏览器展示给用户，在具备良好平台独立性的同时，无需用户进行任何程序安装操作，并且对现代浏览器、移动设备、平板电脑的支持都具有良好表现。Dart在定位上并非与JavaScript竞争，而是要填补Web编程方面缺少面向对象编程结构、静态类型、难以进行大型应用开发方面的空白，并为传统JavaScript编程带来大幅度的性能改善。</p>
<p>Dart代码运行阶段，可以依托浏览器内置的JavaScript引擎执行程序，同时Google鼓励各浏览器厂商在应用中绑定Dart虚拟机以实现Dart的原生支持。当然，Chrome浏览器已计划在未来版本中内置原生的Dart虚拟机运行时。根据性能测试数据，Dart虚拟机装载5万行Dart代码仅用时640毫秒，而从快照中加载相同的程序则更加高效，仅需用时60毫秒。</p>
<p>Dart开发工具支持上，Google基于Eclipse提供了轻量级的开发组件，用于编写代码并预览Dart应用。同时Google还正在开发一个名为Brightly的云端IDE提供给开发者，值得一提的是，这个IDE也是使用Dart语言开发实现的。目前<a href="http://www.dartlang.org/">Dart语言</a>站点上展示了语言规范、实例教程等内容。在<a href="http://dart.googlecode.com">Dart项目</a>站点提供了Dart类库、样例代码、Dart虚拟机及源代码、Dart转换JavaScript编译器等内容。</p>
<p>Google面向现代浏览器设计的Dart语言能够给Web编程带来良好的开发效率和优异的性能。随着浏览器应用规模化开发时代的到来，以及移动设备对浏览器应用需求的提升，我们期待新生的Dart语言为Web开发注入新的活力。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年11期“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/243/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>开源的系统级编程利器：D语言</title>
		<link>http://www.gaoang.com/archives/230</link>
		<comments>http://www.gaoang.com/archives/230#comments</comments>
		<pubDate>Tue, 11 Oct 2011 02:09:03 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/230</guid>
		<description><![CDATA[在Digital Mars公司的D语言首页上，放置着这样一段话“计算机编程语言门类众多，其来源大致可分为两种途径。一类新语言来自于极具创新精神的学术界；而一类则源于关注研发结合和互联网的... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gaoang.com/wp-content/uploads/2011/10/d-lang.png"><img src="http://www.gaoang.com/wp-content/uploads/2011/10/d-lang.png" alt="" align="right" /></a>在<a href="http://www.digitalmars.com/">Digital Mars</a>公司的<a href="http://www.d-programming-language.org/index.html">D语言</a>首页上，放置着这样一段话“计算机编程语言门类众多，其来源大致可分为两种途径。一类新语言来自于极具创新精神的学术界；而一类则源于关注研发结合和互联网的新技术公司。目前正是在实现编译器的实践经验中诞生一门新语言了。”在九月份的TIOBE语言流行度排行榜中，正是这门支持内嵌汇编的D语言，以其系统级编程的特性而被越来越多的开发者选用而重新入围了排行榜前二十位。</p>
<p>D语言是由Digital Mars公司开发的面向对象、指令式、多范型的系统级编程语言。诞生于1999年的D语言，在其设计开发十年后的2009年开放了D编译器<a href="http://www.d-programming-language.org/dmd-windows.html">DMD</a>的源代码，包括D 1.0和D 2.0的编译器前端和后端源代码，分为Windows，Mac和Linux三个版本。编译器前端以GUN GPL和Artistic开源协议授权。</p>
<p>可以说，D语言是由数十年来实现多种语言编译器的经验积累而形成，源自C++，并为改进和超越C++而生。D语言对C++的部分特性进行了重新设计，其模板在C++的基础上做了扩充，并在语法设计上借鉴了Java、C#等多种流行语言的优点。D语言在提供C++这样强大能力的同时，又具备与动态语言相媲美的开发效率。</p>
<p>C++应用广泛的一个重要原因是C++进行操作系统底层编程的能力。D语言同样也提供了底层编程的特性，并加入了完善的内嵌汇编支持。内嵌汇编的特性让系统级开发者能够在标准D语言代码中嵌入目标平台的汇编指令，来完成高级语言难以实现的工作。这些处理任务包括底层驱动程序开发、获取任务堆栈信息、获取SP或RA等寄存器的状态、视频解码等各个层面。除此之外，在某些特定的数值运算中，如带进位加法运算，开发者常嵌入汇编指令来增强程序代码执行的效率。</p>
<p>D语言的系统级编程特性，成为D语言区别于Java、C#等其他高级语言的主要特性。如Java语言在语法级别上不提供内嵌汇编的支持，如需在代码中嵌入汇编指令，只能借助于<a href="http://en.wikipedia.org/wiki/Java_Native_Interface">JNI</a>的Java本地调用，通过引用C/C++代码来间接嵌入汇编指令。而D语言则可以直接与只接受汇编指令的处理器进行交互，直接执行汇编指令集来保证操作的精确性和原子性。</p>
<p>尽管现代的高级语言编译器已在编译优化上做了足够大的功夫，但高级语言编译器为了保证通用性，往往只编译生成通用指令集，没有针对特定处理器的专用指令集进行优化，且无法生成新型处理器增加的高性能操作指令集。无疑，D语言将是内嵌汇编的最佳语言，它带来的便利让开发者撰写最高性能代码来充分发挥硬件潜力变得触手可及。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年10期“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>北京成为FOSS4G 2012大会主办城市</title>
		<link>http://www.gaoang.com/archives/227</link>
		<comments>http://www.gaoang.com/archives/227#comments</comments>
		<pubDate>Thu, 15 Sep 2011 01:07:11 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[聚焦GIS]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/227</guid>
		<description><![CDATA[2011年9月12日，北京以4票的优势（9:5）领先捷克布拉格，由OSGeo委员会投票选举成为2012年FOSS4G大会的主办城市。FOSS4G历次大会都吸引了来自美洲、欧洲、亚洲、澳洲、非洲各国的开源GIS社区开发... ]]></description>
			<content:encoded><![CDATA[<p>2011年9月12日，北京以4票的优势（9:5）领先捷克布拉格，由OSGeo委员会投票选举成为2012年FOSS4G大会的主办城市。FOSS4G历次大会都吸引了来自美洲、欧洲、亚洲、澳洲、非洲各国的开源GIS社区开发者与使用者参会，2012年将是<a href="http://foss4g.org">FOSS4G大会</a>首次在亚洲国家举办。OSGeo委员会主席Jeff McKenna在OSGeo<a href="http://lists.osgeo.org/mailman/listinfo/conference_dev">邮件组</a>中公布了这一消息。<a href="http://lists.osgeo.org/pipermail/conference_dev/2011-September/001416.html">原信引用</a>如下：</p>
<blockquote><p>Hello everyone,</p>
<p>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).</p>
<p>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 :)</p>
</blockquote>
<p><a href="http://osgeo.org.cn/">OSGeo中国</a>在申办过程中准备的各种材料分享如下，其他各申办城市提交的材料参见会议组织<a href="http://www.osgeo.org/conference/rfp/">站点</a>：</p>
<ul>
<li>北京FOSS4G 2012<a href="http://svn.osgeo.org/osgeo/foss4g/proposals/2012/Letter-of-Intent-FOSS4G2012-Beijing-China.pdf">意向信</a> </li>
<li>北京FOSS4G 2012<a href="http://svn.osgeo.org/osgeo/foss4g/proposals/2012/Proposal-FOSS4G2012-Beijing.pdf">申报书</a> </li>
<li>北京FOSS4G 2012<a href="http://svn.osgeo.org/osgeo/foss4g/proposals/2012/Budget-FOSS4G2012-Beijing.pdf">会议预算</a> </li>
</ul>
<p><a href="http://osgeo.org.cn/">OSGeo中国</a>将积极组织承办2012年的FOSS4G盛会，为来自世界各国的开源GIS社区开发者与使用者提供最好的参会体验。也希望在2012年大会的承办过程中，能得到关注开源GIS发展，各位IT、GIS与RS同行与朋友们的协助、支持和参与。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/227/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>函数式编程语言F#</title>
		<link>http://www.gaoang.com/archives/225</link>
		<comments>http://www.gaoang.com/archives/225#comments</comments>
		<pubDate>Thu, 08 Sep 2011 06:53:09 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/225</guid>
		<description><![CDATA[源于微软研究院的F#语言因其优良的设计和强大的并行编程能力，正得到越来越多.Net开发者的选用。在本月的TIOBE语言流行度排行榜中，F#语言首次进入了TIOBE排行榜的前二十位。F#是微软.NET框... ]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px" align="right" src="http://www.gaoang.com/images/fsharp.jpg" />源于微软研究院的<a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/">F#语言</a>因其优良的设计和强大的并行编程能力，正得到越来越多.Net开发者的选用。在本月的TIOBE语言流行度排行榜中，F#语言首次进入了<a href="http://www.tiobe.com/content/paperinfo/tpci/index.html">TIOBE排行榜</a>的前二十位。F#是微软.NET框架环境下的静态类型化函数式编程语言，支持以面向对象或泛型编程等多种风格来撰写程序代码。</p>
<p>F#基于函数式编程语言<a href="http://caml.inria.fr/ocaml/">Objective Caml</a>（OCaml）设计，具有OCaml常用的核心语言功能，以及函数式编程语言的其他特性。OCaml是在Perl之外，又一门以骆驼为吉祥物的编程语言。Ocaml被选中的部分原因是它提供了函数式、命令式和面向对象的混合编程风格支持。在OCaml语言中，函数式能够像变量一样被方便的在程序中传递，并且OCaml是能够自动侦测程序范型的函数式编程语言。</p>
<p>F#语言最初由微软研究院的首席研究员<a href="http://blogs.msdn.com/b/dsyme/">Don Syme</a>设计，设计者Don Syme于1999年从剑桥大学计算机实验室获得博士学位，他还参与了C#泛型和.NET CLR的设计工作。在语法设计上F#具备优雅的结构，同时F#被设计为类型安全且具备良好性能的编译语言。在微软决定将F#进一步推广应用之后，F#被转移到微软专门的开发部门维护和更新，并在.NET Framework和Visual Studio 2010开发环境中为F#提供了全面支持。此外，开发者还能够在Visual Studio 2008中使用F#，或借助<a href="http://www.mono-project.com">Mono</a>在Linux系统上使用F#。</p>
<p>作为微软支持的第一个函数式语言，F#在项目中被越来越多的开发者选用，这与F#对程序并发和异步编程的良好支持密不可分。微软为F#添加了不少简化开发者处理程序并行和异步编程的便捷特性，以辅助开发者轻松完成多核并发和Web分布式系统的应用开发。在常见的开发模式下，F#被用于撰写安全并发和异步处理相关的程序组件，用户界面则使用Visual Basic或C#来编写，而最终产品由F#实现组件和其他.Net开发语言组织而成。</p>
<p>不仅如此，F#目前还被广泛用于Xbox 360游戏平台上的代码开发中，为开发者提供了在<a href="http://msdn.microsoft.com/en-us/aa937791">XNA Game Studio</a>环境下的F#编程支持。微软研究院曾使用F#、<a href="http://research.microsoft.com/en-us/projects/trueskill/">TrueSkill</a>以及XNA开发了一款名为“The Path of Go”具备故事情节的<a href="http://research.microsoft.com/en-us/projects/pathofgo/">3D围棋游戏</a>，以展示F#在游戏开发和人工智能领域方面的并发编程能力。</p>
<p>感兴趣的开发者可以阅读Don Syme及其他几位F#语言设计者共同撰写的<a href="http://www.apress.com/9781430224310">《Expert F# 2.0》</a>一书，来深入学习并使用F#语言。也可以阅读游戏开发者<a href="http://blogs.academicclub.org/xna-eng/author/giuseppe-maggiore/">Giuseppe Maggiore</a>撰写的《FRIENDLY F# with game development and XNA》一书，来学习F#语言在游戏开发中的应用。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年09期“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/225/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>年度编程语言锁定Objective-C</title>
		<link>http://www.gaoang.com/archives/222</link>
		<comments>http://www.gaoang.com/archives/222#comments</comments>
		<pubDate>Sun, 21 Aug 2011 01:28:00 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/222</guid>
		<description><![CDATA[TIOBE编程语言排行榜每年初都将统计评出上年度的最佳编程语言大奖，获奖的编程语言被认为在该年度市场份额增长及用户认可度方面获得了最为突出的成绩。历年获奖的编程语言包括2004年的PH... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.gaoang.com/images/objective-c.jpg" /> TIOBE编程语言<a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">排行榜</a>每年初都将统计评出上年度的最佳编程语言大奖，获奖的编程语言被认为在该年度市场份额增长及用户认可度方面获得了最为突出的成绩。历年获奖的编程语言包括2004年的PHP、2005年的Java、2006年的Ruby、2008年的C至2009年的Go语言，这些编程语言都曾拿到年度最佳的殊荣。成为系统脚本事实标准的Python语言，因其简单易用并能成功运用在Web开发等各种不同类型的应用中，而与2010年和2007年两次获得年度编程语言奖项。</p>
<p>2011年已过去一半，从目前市场占有趋势来看，<a href="http://en.wikipedia.org/wiki/Objective-C">Objective-C</a>已经脱颖而出，相对2010年的市场占有率增长了2.68%，毋庸置疑，Objective-C将成为年度编程语言奖项的得主。其实在2010年，在iOS平台应用快速增长的推动下，Objective-C已成为上年度使用率上升最快（增速超过100%）的语言，但从绝对数量来看，Python以拥有最大的市场份额增长率而胜出。</p>
<p>Objective-C设计的初衷是为在C语言基础上添加面向对象拓展，目前Objective-C已发展成为苹果各系统平台上应用开发的事实标准。Objective-C包含一个用C编写的小巧的运行库，提供给开发者各种实用的操作。Objective-C的编译可以在现存C编译器基础上实现，而不需专门开发一个全新的编译工具。这让Objective-C能重用大量遗留的C代码、类库等各种资源。目前Objective-C代码的编译在GCC和<a href="http://clang.llvm.org/">LLVM/Clang</a>中已得到完美支持，并且GCC的最新4.6版本还支持多项Objective-C 2.0语言的新特性，比如说快速枚举、dot语法、可选协议方法、类拓展以及新的Objective-C运行时API等。</p>
<p>Objective-C的独特之处在于，它将垃圾回收等一些真正高层次的语言特性与C语言低层级的函数功能相结合，通过高层次的语言功能提高程序员的生产力。但即便如此，不少开发者仍旧对语言的发展给予厚望。Mac OS应用<a href="http://fortunatebear.com/products/illuminate/">Illuminate</a>的作者Andy Finnell在他的Blog中<a href="http://losingfight.com/blog/2006/10/25/objective-c-30/">写道</a>，希望在下一个Objective-C 3.0版本发布时，增加闭包的支持，并增加匿名函数以方便在函数中与前端JavaScript交互，并提供在匿名函数中访问本地变量的功能。</p>
<p>在公司或个人准备启动一个新的软件开发项目时，TIOBE编程语言流行度排行常被用作检测编程语言或技术先进性的参照尺度，来辅助技术选型的决策。苹果iPhone和iPad平台市场领导地位的确立和Apple各系统不断推陈出新，极大的推进了Objective-C语言的普及和流行，使其成为TIOBE本年度最佳编程语言。随着苹果公司Mac OS X Lion和iOS 5.0发布日期的临近，具备更强劲性能的硬件和更丰富易用的平台将很快与苹果的用户见面，这也呼唤更多的开发者加入到Objective-C应用开发的行列中来，让这门本年度最佳编程语言为用户实现更大的价值。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年08期“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/222/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>移动开发新宠：Lua语言</title>
		<link>http://www.gaoang.com/archives/215</link>
		<comments>http://www.gaoang.com/archives/215#comments</comments>
		<pubDate>Sun, 17 Jul 2011 08:25:37 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/215</guid>
		<description><![CDATA[TIOBE编程语言流行度排行榜的统计数据来源于Google、Bing、Yahoo!等主流搜索引擎，以及各大技术网站发布的招聘信息，在很大程度上代表了编程语言的流行趋势。在六月的TIOBE编程语言排名中，Lua... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.lua.org/images/lua-language.gif" /> TIOBE编程语言流行度排行榜的<a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm">统计数据</a>来源于Google、Bing、Yahoo!等主流搜索引擎，以及各大技术网站发布的招聘信息，在很大程度上代表了编程语言的流行趋势。在六月的TIOBE编程语言<a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">排名</a>中，Lua语言第一次进入了排行榜的前十名。</p>
<p>轻量级脚本语言<a href="http://www.lua.org/">Lua</a>在开发者中正变得越来越流行，这与移动应用开发的升温密不可分。以iPhone为代表的移动平台，为不少开发者提供了新的应用展示空间，也为支持iOS系统的应用开发带来了巨大商机。包括大获成功的游戏《愤怒的小鸟》在内，不少iPhone和iPad流行应用使用了Lua作为游戏脚本。Lua语言最大的优势在于其轻量级脚本和高效的运行效率，这一得天独厚的优势让Lua在以娱乐和用户体验而著称的iOS系统上大有用武之地。</p>
<p>小巧的Lua语言来自于巴西里约热内卢天主教大学于1993年启动的实验性项目。Lua语法简洁优美，解释器由标准C编写。以快速小巧著称的Lua拥有在目前所有脚本引擎中最快的运行速度，这样的特性让Lua、成为用作嵌入式脚本的最佳选择。Lua代码几乎能在所有操作系统和移动终端上编译运行，同时Lua提供了<a href="http://luajit.org/">LuaJIT</a>项目，针对特定目标平台为开发者提供即时编译功能，进一步增强Lua的执行效率。</p>
<p>Lua的设计初衷并非意图构建完整的应用，而是嵌入在应用程序中为应用提供灵活的扩展和定制功能，所以Lua仅提供了基本的数学运算和字符串处理等函数库，而并未涵盖程序设计的方方面面。在语言兼容性上，Lua一开始就瞄准了具有广泛应用场景的C和C++，让C/C++编写的代码可以很方便的调用Lua脚本，同时C/C++函数也能够在Lua脚本中调用。与C/C++代码的良好交互性，让Lua在应用程序开发中有着广泛的应用基础。</p>
<p>Lua最流行的应用场景是在游戏中作为处理逻辑的脚本，即用来编写游戏的任务脚本，以实现游戏的可配置性和可扩展性。在游戏中Lua脚本的加载不需重启服务器，尽管脚本的运行效率低于编译好的二进制代码，但目前CPU速度已完全能够让Lua脚本迅速解释执行。在以《魔兽世界》为代表的网络游戏中，几乎所有的插件都是使用解释性的脚本Lua编写，核心的C++代码只占全部代码中的很小一部分比重。</p>
<p>目前Lua语言的最新版本是5.2 Beta，如果你也准备在移动应用开发中尝试嵌入Lua脚本，在熟悉语法之后，便可移步<a href="http://luaforge.net/">Lua开源项目站点</a>或<a href="http://www.lua-users.org/">Lua开发者站点</a>Wiki库，下载感兴趣的Lua程序脚本，开启Lua脚本的学习之旅。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年07期“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/215/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mark Logic非结构化数据存储服务</title>
		<link>http://www.gaoang.com/archives/214</link>
		<comments>http://www.gaoang.com/archives/214#comments</comments>
		<pubDate>Mon, 13 Jun 2011 10:44:59 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[标准研究]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/214</guid>
		<description><![CDATA[近日，Amazon与Mark Logic公司开展合作，在AWS云服务中加入XML格式数据的搜索与处理功能，以针对特殊用户的需求增强云服务的适用性。Mark Logic为Amazon的用户提供运行在AMI服务器映像上的XML服务器... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.gaoang.com/images/marklogic.jpg" /> 近日，<a href="http://www.amazon.com/">Amazon</a>与<a href="http://www.marklogic.com/">Mark Logic</a>公司开展合作，在AWS云服务中加入XML格式数据的搜索与处理功能，以针对特殊用户的需求增强云服务的适用性。Mark Logic为Amazon的用户提供运行在AMI服务器映像上的XML服务器资源，以及虚拟化的XML数据存储服务。</p>
<p>对大多数国内数据库使用者来说，Mark Logic的知名度与主流数据库厂商相去较远，用户并不算多。但在业界，Mark Logic却是非结构化数据管理技术的领导者，其主要用户覆盖新闻出版部门、政府机构、财经信息服务等不同的专业领域。</p>
<p>Mark Logic公司的拳头产品<a href="http://www.marklogic.com/products/marklogic-server.html">MarkLogic Server</a>是以文档为中心的领域专用数据库，专门针对半结构化和非结构化数据进行设计和优化，能够实现TB级非结构化数据资源的全文检索。MarkLogic Server支持针对Web内容、XML文档和JSON内容的RESTFul和HTTP请求。在数据模型组织方面，MarkLogic Server采用XML树状结构组织，数据查询和检索使用的DML和DDL语言为XQuery，此外，Mark Logic 还是<a href="http://www.w3.org/TR/xquery/">XQuery</a>标准发展和应用的推动者。</p>
<p>较之同类数据库，MarkLogic在技术上有着独特的优势。MarkLogic始终保持着远超同类数据库（如IBM DB2 Viper 2）的XML文档处理速度，并且能够保证数据在事务处理过程中的原子性、一致性、独立性和持久性要求。此外，MarkLogic对XML文档提供多种形式的索引，索引包含文档实体、父子关系以及要素取值等内容。由于MarkLogic可以在不预先建立文档Schema的基础上自动索引XML包含的所有要素，所以MarkLogic对文档的管理几乎不需借助DDL数据库模式定义。</p>
<p>MarkLogic已广泛应用在信息服务领域，用户包含世界领先的科技及医学期刊数据库<a href="http://www.elsevier.com">Elsevier</a>；为法律和学术领域提供专业信息服务的<a href="http://www.lexisnexis.com">LexisNexis</a>数据集团；提供金融财经领域高质量信息及工作流程解决方案的威科集团(<a href="http://www.wolterskluwer.com">Wolters Kluwer</a>)及<a href="http://www.jpmorganchase.com">摩根大通</a>银行；帮助全球性出版、财经、传媒服务集团<a href="http://www.mcgraw-hill.com">McGraw-Hill</a>对外提供信息服务，并辅助其旗下的标准普尔为全球资本市场提供信用评级、指数服务、风险评估和数据服务。此外，MarkLogic还被美国陆军、美国国防部等不少政府机构采用来建立信息管理业务。</p>
<p>如今，随着大型跨国企业数据量的逐步增加，越来越多传统的数据库应用已不能满足企业的需求。在存储和服务器成本的不断降低的趋势下，不少企业开始寻找在云端存储以XML形式存在的媒体文件、文档、网页等信息的有效途径。</p>
<p>MarkLogic已在帮助拥有海量非结构化数据的大型企业摆脱传统数据库组织数据并建立索引的束缚，快速搭建数据搜索和查询应用。这样的趋势正快步走向云端，为那些希望使用云服务来增强非结构化信息索引能力的中小型企业带来新的机遇。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年06期“工具点评”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/214/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JVM上的新语言：Ceylon</title>
		<link>http://www.gaoang.com/archives/210</link>
		<comments>http://www.gaoang.com/archives/210#comments</comments>
		<pubDate>Mon, 09 May 2011 02:25:43 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/210</guid>
		<description><![CDATA[在2011年4月举办的QCon北京大会上，来自Red Hat的Gavin King首次公开了关于Ceylon语言的重量级话题。作为Hibernate的创始人，Gavin广为Java开发者熟知。本次技术大会上透露的Ceylon语言，是Gavin在Red Hat近... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.gaoang.com/images/hotjava.jpg" /> 在2011年4月举办的QCon北京大会上，来自Red Hat的Gavin King首次公开了关于Ceylon语言的<a href="http://www.qconbeijing.com/ShowNews.aspx?id=65">重量级话题</a>。作为Hibernate的创始人，Gavin广为Java开发者熟知。本次技术大会上透露的Ceylon语言，是Gavin在Red Hat近两年一直投身设计并开发的新一代JVM语言，计划在企业开发领域赶超Java的领导地位。</p>
<p>Ceylon面向企业级应用开发设计，在JVM运行时基础上执行，支持与Java的交互操作。Ceylon语言充分借鉴了Java语言的优势并屏蔽其在设计上的不足，使用静态类型并提供高阶函数支持，在保持代码良好可读性的同时进一步降低开发者入门的难度。 </p>
<p>Ceylon语言没有设计特殊的Primitive类型或复合类型，所有类型在类型系统内部都是可表达的。Ceylon的通用类型设计比Java的实现更为简便，而且相比其他类Java语言具备更高的安全性，Ceylon的元编程（Reflection）也必须是类型安全的。此外，Ceylon语言减少了开发者对于配置文件的依赖，屏蔽了Java开发者常常需要对各种XML进行的配置和修改操作。 </p>
<p>Java语言的确具备众多适宜于企业开发的优点，包括良好的开放性、适合企业级开发的健壮性等特点。但是其生产效率和过重的负荷却一直令人诟病。作为一门深受Java语言影响的JVM语言，Ceylon由熟知Java语言的专家设计。正是因为Gavin多年的Java开发经验，促使他着手实现这样一个期望能够超越Java的语言。</p>
<p>当然，从头开始创建一门编程语言以及SDK工具包无疑是一项将耗费巨大工作量的任务，但Gavin在Blog上撰文写道：我们在设计开发Ceylon语言的过程中，借鉴了大量Java开源社区中的成果，如Open JDK, JBoss以及Eclipse社区，并且这些工作对于Red Hat这样规模并汇聚众多开发好手的公司来说并非是不可能的任务。 </p>
<p>社区支持对于Ceylon语言的发展是必不可少的，然而，要想获得社区的认可与追随，Ceylon语言本身能够提供一个设计优良的杀手级开发框架将是个巨大的激励因素，就像Ruby语言的Rails框架或Scala语言的Lift框架那样在众多项目中得到成功应用。为此，Gavin撰写了一系列Ceylon语言的<a href="http://relation.to/Bloggers/IntroductionToCeylonPart1">介绍性文章</a>，来帮助社区开发者进一步了解并掌握语言的使用。</p>
<p>此外，IDE环境对于开发语言的普及具有很大的推动作用，如被不少Java开发者所推崇的Scala语言，则同时拥有基于Eclipse的IDE工具、基于IntelliJ IDEA的开发环境，以及NetBeans的Scala开发插件。目前，Ceylon语言也同样需要一个令人满意的IDE工具，来增强语言的适用性。 </p>
<p>作为Hibernate的创始人，EJB3.0专家委员会成员，JBoss Seam的开发者，Gavin King已经取得了令开发者瞩目的成绩，运行在JVM之上的新一代编程语言Ceylon能否真正赶超Java，造就另一个辉煌，让我们拭目以待。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年05期“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/210/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新闻标识语言NewsML</title>
		<link>http://www.gaoang.com/archives/206</link>
		<comments>http://www.gaoang.com/archives/206#comments</comments>
		<pubDate>Sat, 02 Apr 2011 08:30:27 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[标准研究]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/206</guid>
		<description><![CDATA[在XML文档格式基础上，专为特定领域设计的各种XML方言，在各行业领域中一直有着广泛的应用。如描述站点消息来源的Atom格式，业务过程执行语言BPEL，OGC组织定义的地理标志语言GML，Google Earth... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.gaoang.com/images/newsml.jpg" /> 在XML文档格式基础上，专为特定领域设计的各种XML方言，在各行业领域中一直有着广泛的应用。如描述站点消息来源的Atom格式，业务过程执行语言BPEL，OGC组织定义的地理标志语言GML，Google Earth和Google Map使用的要素标记语言KML，以及用于数字版权描述的开放数字许可语言ODRL等。</p>
<p>在新闻传媒领域，发生在世界各地，由不同语言进行传播的新闻事件、体育赛事、财经数据等海量信息汇总在一起，常使得数据交换和展示的工作变得极为复杂。如何让多种来源的新闻信息在交换时具备良好的格式定义，让不同语言的信息提供者能够得到具有统一结构定义的新闻数据，为了解决这样的问题，新闻标准化机构就制定了面向新闻稿件制定的数据格式标识语言<a href="http://www.newsml.org/">NewsML</a>，以帮助新闻工作者在收到信息的同时即可获得准确的新闻元数据，并且NewsML同样是基于XML定义的内容规则描述方言。</p>
<p>NewsML文档包括用来定义NewsML文本逻辑的Schema结构，定义NewsML文档显示格式的XSL样式表，以及符合Schema格式定义新闻主体和元数据。其中Schema定义了新闻信息标记符的语法描述规则，指定NewsML文档包含的元素、元素属性以及元素间的关系；可扩展样式语言XSL定义新闻内容的显示格式，能够将新闻内容以多种样式展示。 </p>
<p>除对新闻信息内容进行组织描述外, NewsML提供了强大的元数据描述能力，能够将新闻的每个部分附上元数据来描述其特性。在常见的新闻稿件中，一般包含稿件日期、标题、作者、资料来源、分类类别等稿件标识信息，在NewsML标识语言中，不仅包含上述新闻标识信息，还包含题注、关键字、出版者、审改人、签发人、语言、分类、版权、受众对象、重要性、原稿条目、相关超文本链接等多项拓展信息，这些新闻元数据大大提高了媒体间信息交换、新闻管理以及检索的效率。同时，由NewsML描述的新闻图片，也将作者、版权、背景描述等元数据加入图片附带的信息中。NewsML通过对新闻信息和元数据的有效标记，为新闻描述提供了更细的粒度，以方便其准确检索使用和自动化处理。</p>
<p>NewsML最初由英国路透社设计，希望通过创建一种新的描述格式来包装多媒体新闻资源。目前NewsML的管理和维护工作由国际出版电信联盟（IPTC）负责。IPTC联盟的主要职责是制定和维护各类新闻传媒所需的信息和数据标准，包括NewsML、EventsML、SportsML等各种新闻信息描述标准的定义，并提供新闻编码、图片元数据等相关新闻数据标准。</p>
<p>目前NewsML的最新版本为<a href="http://www.iptc.org/site/News_Exchange_Formats/NewsML-G2/">NewsML-G2 2.7</a>规范，NewsML用于通用化的多媒体新闻描述，此外，为了更准确的描述特定类型新闻信息，IPTC还定制了用于新闻事件描述的EventsML-G2标准，以及报道体育赛事的SportsML-G2标准，为常用的新闻形式提供细节更为丰富的可定制内容。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/206/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OGSA-DAI 4.1版本新增特性</title>
		<link>http://www.gaoang.com/archives/204</link>
		<comments>http://www.gaoang.com/archives/204#comments</comments>
		<pubDate>Tue, 15 Mar 2011 03:48:16 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[网格科学]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/204</guid>
		<description><![CDATA[数据网格访问集成中间件OSGA-DAI为科学数据共享工程提供了分布式的多源数据库查询能力，最新的4.1版本已经发布，新版本更新的特性如下： 能够以新增的TupleToByteArrays行为，将关系型数据转换... ]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.gaoang.com/images/daiongrid.jpg" /> 数据网格访问集成中间件<a href="http://www.ogsadai.org.uk">OSGA-DAI</a>为科学数据共享工程提供了分布式的多源数据库查询能力，最新的4.1版本已经发布，新版本更新的特性如下：</p>
<ul>
<li>能够以新增的TupleToByteArrays行为，将关系型数据转换为二进制格式从服务端传输至客户端，新增的行为较之原有以文本方式传输数据的WebRowSet更为高效，同时避免了转换过程中的信息丢失。目前DQP中默认使用二进制格式进行数据传递；</li>
<li>TupleToByteArrays行为允许关系型数据在客户端以JDBC结果集的形式被提取； </li>
<li>支持面向语义网应用的<a href="http://openjena.org/SDB/">Jena SDB</a>数据库查询，允许使用专为<a href="http://www.w3.org/TR/rdf-syntax/">RDF</a>开发的查询语言和数据获取协议<a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a>来查询W3C定义的RDF资源； </li>
<li>在OGSA-DAI面向Web服务提供的数据访问与集成组件WS-DAIR中，加入通用的SQLStatement行为，以提供SQL查询、更新和存储操作； </li>
<li>在DQP提供的函数中增加求模运算； </li>
<li>针对OGSA-DAI Axis版本，默认使用HTTP Keep-Alive功能来保证客户端到服务器端的连接持续有效，并优化了客户端工具与服务端的交互效率。 </li>
</ul>
<p>在OGSA-DAI 4.1版本的新特性中，通过新增的TupleToByteArrays行为支持二进制格式的数据传递，无疑是一项重要的改进。尤其是在访问地理空间数据库过程中，以BLOB字段存储空间位置的WKB格式，无需在获取时将二进制格式转换为文本形式的WKT格式以WebRowSet行为传递，而直接将二进制WKB格式传递至客户端进行渲染或处理，极大增强了空间数据传输的执行的效率。</p>
<p>OGSA-DAI项目以Apache 2.0协议开放源代码，感兴趣的朋友可以进一步查看4.1版本的<a href="http://ogsa-dai.sourceforge.net/documentation/ogsadai4.1/ogsadai4.1-gt42/Release.html">更新说明</a>，并访问<a href="http://sourceforge.net/apps/trac/ogsa-dai/wiki/UserDocumentation">OGSA-DAI文档</a>获取更细节的内容。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/204/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript代码生成器——CoffeeScript</title>
		<link>http://www.gaoang.com/archives/202</link>
		<comments>http://www.gaoang.com/archives/202#comments</comments>
		<pubDate>Thu, 10 Mar 2011 03:47:54 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/202</guid>
		<description><![CDATA[CoffeeScript是使用Ruby编写的编程语言，旨在通过简单的编码方式让开发者在Web应用中生成并使用JavaScript代码。CoffeeScript融合了Ruby的简洁和JavaScript的灵活，让开发者通过简单易读的语法来撰写逻... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/coffeescript.jpg" align="right" /><a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>是使用Ruby编写的编程语言，旨在通过简单的编码方式让开发者在Web应用中生成并使用JavaScript代码。CoffeeScript融合了Ruby的简洁和JavaScript的灵活，让开发者通过简单易读的语法来撰写逻辑规则。CoffeeScript编译器负责将代码逐行解释为等效的JavaScript程序，并保证生成的JavaScript代码与源代码在逻辑结构上一致。 </p>
<p>较之JavaScript语法，CoffeeScript在语法设计上更为严谨。为了让代码看起来更加简洁精致，CoffeeScript使用空格缩进而非大括号来进行代码段分隔。开发者可以在CoffeeScript编程中调用任何已有的JavaScript类库，并能够与类库实现无缝集成。经编译生成的JavaScript代码，具备良好的版式和可读性，相比较开发者手写的JavaScript代码具备同等或更优的执行效率。 </p>
<p>CoffeeScript翻译器是使用CoffeeScript语言本身编写，能够在编译的时候格式化JavaScript代码，这一点在CoffeeScript官方站点上也有所体现。站点为开发者提供了交互式的CoffeeScript在线编译环境，开发者在一侧敲入CoffeeScript代码的同时，代码被实时解释为对应的JavaScript程序，并可随时在浏览器上运行验证。 </p>
<p>CoffeeScript自2009年12月份诞生以来，经历了一年多开发完善，前不久刚发布了<a href="http://github.com/jashkenas/coffee-script/tarball/1.0.1">1.0版本</a>。在新版本中，CoffeeScript改进了循环体结构，并提供了简便的闭包实现。为了方便Java开发者使用，CoffeeScript还提供有一个被称作<a href="https://github.com/yeungda/jcoffeescript ">JcoffeeScript</a>的Java类库，让CoffeeScript代码能够在Rhino环境中编译。Rhino项目由Mozilla基金会赞助，完全使用Java语言开发了JavaScript引擎，以便嵌入在Java应用中为用户提供脚本支持。</p>
<p> 此外，CoffeeScript的拓展开发资源也很丰富CoffeeScript的方言<a href="http://github.com/satyr/coco">Coco项目</a>，在牺牲CoffeeScript代码可读性的同时，让CoffeeScript语法变得更为高效和实用，以便于应用的快速开发。在CoffeeScript的编码支持方面，<a href="https://github.com/kchmck/vim-coffee-script">Vim CoffeeScript</a>项目为使用Vim文本编辑器的开发者提供CoffeeScript语法高亮显示，同时为开发者提供CoffeeScript代码缩进支持。  <br /> 
<p>目前已有不少Web开发项目开始使用CoffeeScript生成的JavaScript来构建站点。比如提供各种新技术资讯的<a href="http://www.arstechnica.com">arstechnica.com</a>站点，在其推出的iPad应用中，就是使用HTML和CoffeeScript为读者提供前端展示。37Signals发布的iPad白板应用Chalk也是使用CoffeeScript编写，并且能够借助Cache Manifest实现应用的离线运行。运行在浏览器端的坦克大战游戏<a href="https://github.com/stephank/orona">Orona</a>同样借助CoffeeScript实现。此外，另有有趣的<a href="http://thelincolnshirepoacher.com/">站点</a>使用CoffeeScript和JavaScript的矢量图形库工具<a href="http://raphaeljs.com/">Raphaël</a>来演示如何随即生成各式各样有趣的图案。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年03期”程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/202/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>跨越JVM与.NET CLR的Fantom语言</title>
		<link>http://www.gaoang.com/archives/195</link>
		<comments>http://www.gaoang.com/archives/195#comments</comments>
		<pubDate>Thu, 10 Feb 2011 01:29:06 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/195</guid>
		<description><![CDATA[在JVM平台并入Oracle产品线后，Oracle将对JVM平台进行多项改进和调整。内容包括增强平台的模块化和集成性等特征、为Java SE增加多核处理支持，在Java ME中增加多点触摸支持等。与此同时，Oracle开... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/fantom.jpg" align="right" width="261" height="155"/>在JVM平台并入Oracle产品线后，Oracle将对JVM平台进行多项改进和调整。内容包括增强平台的模块化和集成性等特征、为Java SE增加多核处理支持，在Java ME中增加多点触摸支持等。与此同时，Oracle开发部副总裁Adam Messinger在Qcon开发大会上<a href="http://www.infoq.com/cn/news/2010/11/oracle-to-release-two-jvms">透露</a>，Oracle计划在提供免费版JVM基础上新增收费版本，在收费版JVM里整合HotSpot JVM与JRockit JVM，为高端用户提供功能更为强大的解决方案。</p>
<p>对开发者来说，无论Oracle策略如何，JVM平台依然有着巨大的吸引力。依托于JVM平台的动态语言，始终保持着蓬勃的生命力。在这些动态语言中，能够同时兼容Java虚拟机和.Net CLR通用语言运行时的Fantom，是其中极具特色的动态语言。</p>
<p><a href="http://fantom.org/">Fantom</a>最初被称为Fan语言，由于定名为Fan不易检索，开发者在09年11月份将当时新发布的版本定名为Fantom语言。Fantom使用与BSD 类似的Academic Free License 3.0开源协议授权。</p>
<p>Fantom的开发者将其设计为一门实用且有趣的脚本语言，来解决Java和C#编程中实际存在的问题，降低开发者编码的难度。Fantom语言最大的特点是它的可移植性，Fantom代码能够无缝的在Java VM和.NET CLR平台之间进行迁移。为了保证平台间的顺利移植，Fantom代码首先被编译为fcode，即一种字节码表示法，之后转换成为Java字节码或IL解释语言，转换的过程在程序运行时完成，开发者可以以单个文件的形式在虚拟机中部署Fantom代码模块。</p>
<p>对于Java VM和.NET CLR平台切换时的API调用，Fantom给出了简便易用的解决办法。Fantom提供了一组与Java 和.NET API配合使用的API接口供开发者使用，来屏蔽不同平台间对于系统API调用的差异。</p>
<p>当然，Fantom语言的可移植特性不仅限于Java和.NET平台，Fantom支持将代码编译为JavaScript脚本供开发者在浏览器端使用。Fantom语言从一开始就为跨运行时的编程而设计，在未来的规划中，Fantom语言还将支持iPhone的Objective-C语言，以及<a href="http://llvm.org/">LLVM</a>集成编译环境或集合了Python与Perl语言优势的<a href="http://www.parrot.org/">Parrot语言</a>。</p>
<p>在Fantom编程支持方面，开发者可以使用基于NetBeans Platform的IDE环境<a href="http://fantomide.colar.net/home">FantomIDE</a>进行编码和调试，IDE包含开箱即用的Fantom环境，语法和词法解析使用开源语法分析器ANTLR设计，FantomIDE还提供了Javascript、CSS、HTML、XML等脚本支持以及Subversion和Mercurial等管理工具。</p>
<p>JVM平台从不缺乏优秀的动态语言，Groovy、JRuby、Jython、<del datetime="2011-02-10T08:07:30+00:00">Scala</del>都是其中的佼佼者，不同语言的风格类型、运行速度和工具支持也各有千秋。Fantom以其跨运行时的特性和先进的设计理念，是否将来能脱颖而出得到开发者的认可，让我们拭目以待。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年02期&#8221;程序天下事&#8221;栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/195/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DOI：国际化的数字对象标识符</title>
		<link>http://www.gaoang.com/archives/172</link>
		<comments>http://www.gaoang.com/archives/172#comments</comments>
		<pubDate>Fri, 07 Jan 2011 03:56:59 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[标准研究]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/172</guid>
		<description><![CDATA[ISO近期以100%的赞成率投票通过了一项新的国际标准ISO 26324：数字对象唯一标识符(Digital Object Unique Identifier)，简称DOI标识。DOI由统一资源定位符URL演变而来，为网络环境下的信息资源实体确定唯... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/doi.jpg" align="right" width="218" height="110"/>ISO近期以100%的赞成率投票通过了一项新的国际标准<a href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=43506">ISO 26324</a>：数字对象唯一标识符(Digital Object Unique Identifier)，简称<a href="http://www.doi.org/">DOI</a>标识。DOI由统一资源定位符URL演变而来，为网络环境下的信息资源实体确定唯一的标识规则。</p>
<p><a href="http://www.iso.org/">ISO</a>国际标准化组织是成立于1947年2月的全球性非政府组织，总部设在瑞士日内瓦。ISO标准的制修订工作由各技术委员会负责，ISO/TC46第46技术委员会是信息与文献技术委员会，负责制定和推广与信息和文献工作相关的国际标准，DOI标准由ISO/ <a href="http://isotc.iso.org/livelink/livelink/open/tc46">TC46</a>的分技术委员会<a href="http://www.iso.org/iso/iso_technical_committee.html?commid=48836">SC9</a>（标识与描述）归口管理。除DOI标准外，技术委员会还负责国际标准书号ISBN、国际连续出版物号ISSN和国际标准音像号ISAN等标准的制修订工作。</p>
<p>在信息化时代，数据和信息本身的价值往往比作为载体的管理信息系统更重要。在DOI出现前，大量有价值的数据因知识产权得不到保护而不愿共享。此外，很多具有研究和使用价值的数据由于缺乏统一标识规范，常会造成无序的引用和歧义。针对上述问题，数字对象唯一标识DOI通过构建数据资源标识方法，为数据提供注册、解析和查询途径，在推动数据资源共享的同时为数据的网络传播提供版权信息。</p>
<p>DOI标识编码由前缀和后缀两部分组成，中间用/分割。为满足可扩展的数据资源编码需求，DOI没有限制前缀和后缀的字符长度。DOI前缀由目录代码和登记机构代码两部分组成，所有DOI代码目录定义为10.，即DOI 代码均以10.开头。登记机构代码通过向国际DOI基金会(IDF)申请获得。登记机构代码的分配根据信息资源编码需求制定，如出版商可为其所有数字出版物申请统一前缀，也可以为数字图书、音像制品等各类出版物申请不同前缀。DOI 后缀是在特定前缀下的唯一标识，由登记机构分配并确保其唯一性。后缀可以是任何字母或数字编码，如机器码、ISBN 或ISSN等已有规范码，具体编码方案由登记机构设定。根据编码规则，DOI数据资源命名规范通常定义为：统一前缀/类型标识.机构名.内部标识码.扩展码的形式。</p>
<p>目前国外<a href="http://www.elsevier.com/">Elsevier</a>、<a href="http://www.blackwell.com/">Blackwell</a>、<a href="http://www.springer.com/">Springer</a>、<a href="http://as.wiley.com/WileyCDA/Section/index.html">John Wiley</a>等大型数字资源提供商已开始使用DOI对其出版的电子文献和数字内容进行标引，帮助基础性数据资源的快捷获取和灵活引用，同时为了便于数字资源的共享与交换，DOI登记机构还会在唯一编码基础上提供数据资源的命名、注册、解析、查询和变更等管理功能。DOI能够实现资源实体的永久性标识，便于数字资源的归档与检索。目前专业的DOI检索站点 <a href="http://www.crossref.org/">CrossRef</a>已与Google搜索技术结合，在DOI检索过程中提供数字文档的全文检索，为用户建立检索结果到数字文献全文间的获取通道。</p>
<p>由于DOI标识的唯一性、持久性、兼容性、互操作性、动态更新等特点，在正式成为ISO标准后，必将会在信息资源标识引用过程中起到越来越重要的基础性作用。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2011年01期&#8221;程序天下事&#8221;栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/172/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通用对象标识符OID</title>
		<link>http://www.gaoang.com/archives/169</link>
		<comments>http://www.gaoang.com/archives/169#comments</comments>
		<pubDate>Wed, 22 Dec 2010 09:07:01 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[标准研究]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/169</guid>
		<description><![CDATA[对象标识符OID（Object Identifier）是由国际标准化组织ISO和国际电信联盟ITU联合制定的标识规则，用于规定信息处理系统及网络通信中的数字对象唯一标识方法，其描述对象是具有名称标识的信息... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/oid.jpg" alt="" width="528" align="right" />对象标识符<a href="http://en.wikipedia.org/wiki/Object_identifier">OID</a>（Object Identifier）是由国际标准化组织ISO和国际电信联盟ITU联合制定的标识规则，用于规定信息处理系统及网络通信中的数字对象唯一标识方法，其描述对象是具有名称标识的信息、定义或者规范。</p>
<p>OID最初由抽象语法标记<a href="http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One">ASN.1</a>（Abstract Syntax Notation One）引入。ASN.1是ISO/IEC和国际电信联盟ITU-T共同制定的标准集，用于描述数据的编码、传输和解码方式。ASN.1定义了信息表示的抽象句法，但不限定具体的编码方法。ASN.1提供了基本编码规则、规范编码规则、唯一编码规则、压缩编码规则等一系列编码方法，同时制订了编码扩展方法，以适应没有规范定义的编码描述。目前GB/T 16262定义了我国的ASN.1抽象语法记法标准，包含基本记法规范、信息客体规范、约束规范、参数化规范等内容。</p>
<p>OID采用树状编码方式，按命名空间分配层级结构，树状结构节点数目没有限制。OID命名包含数字或字母两种形式的可变长字符串，不同层次间采用点分的十进制符号表示，并在注册机构内唯一，以便OID解码后得到唯一对象的特性和信息。在OID树顶层，从根节点开始有ITU、ISO和ISO与ITU联合三个分支，在ISO国家成员体节点下，根据ISO 3166国家代码标准根据所属国分配标识，下层分支节点基于应用进行标识划分。</p>
<p>基于分层结构的OID设计有效保证其编码的灵活性和可扩展性，能够对多种应用领域进行标识，在不改变已有编码机制的同时保证人类和机器可读。目前OID在ISO、ITU标准中已开始大量采用，使用者可以通过OID维护机构提供的解析系统，来获取OID包含的各种信息。随着物联网技术的发展，越来越多承载信息的对象将进入网络中互联互通，OID标识将越来越广泛的应用在RFID标签、生物芯片、网络传输、信息安全、无线通信、电子文件格式等领域中，帮助信息有效地交换和沟通。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/169/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LEGO可视化控制语言：NXT-G</title>
		<link>http://www.gaoang.com/archives/168</link>
		<comments>http://www.gaoang.com/archives/168#comments</comments>
		<pubDate>Tue, 30 Nov 2010 01:45:14 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[兴趣爱好]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/168</guid>
		<description><![CDATA[在十一月份TIOBE语言排名中，一门特殊的编程语言NXT-G首次跻身跃入排行榜的前20，位列第17名。NXT-G编程语言的特殊之处在于其并非是提供给专业程序开发者的编程语言，而是由丹麦著名玩具制... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/lego.jpg" align="right" width="412">在十一月份<a href="http://www.tiobe.com/content/paperinfo/tpci/index.html">TIOBE语言排名</a>中，一门特殊的编程语言<a href="http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT">NXT-G</a>首次跻身跃入排行榜的前20，位列第17名。NXT-G编程语言的特殊之处在于其并非是提供给专业程序开发者的编程语言，而是由丹麦著名玩具制造商 <a href="http://www.lego.com/en-us/Default.aspx">乐高（LEGO）</a>公司为NXT机器人玩具设计的可视化编程语言。</p>
<p>头脑风暴（<a href="http://mindstorms.lego.com/">Mindstorms</a>）是乐高出品的可编程机器人系列玩具，NXT 2.0是目前乐高机器人系列的主打产品。第一代Mindstorms机器人于1998年问世，定名为RIS（Robotics Invention System），搭载了由日本瑞萨电子提供的8位微控制器，由专用红外接口向处理器中载入设计好的程序来控制机器人行为。时隔8年后，乐高于2006年发布了新一代机器人Mindstorms NXT，并在2009年推出了功能升级后的NXT 2.0，以满足玩家在组装机器人时对颜色传感、蓝牙设备等高级功能的需求。</p>
<p>NXT的核心是一块被称为智能积木的处理器，能够通过RJ12规格的4芯水晶头线缆接受四路传感信号，并能够控制三个马达协同运转。此外，NXT智能积木搭载了一块100&#215;64像素的单色LCD显示器，可以在机器人运行中通过内置的层级菜单接受用户的按键命令或组织简单的处理步骤。</p>
<p>NXT-G是对应智能积木处理器的可视化编程控制语言，能够帮助机器人实现简单或复杂的控制流程，如马达驱动、传感器输入合并、完成计算任务并实现流程控制。完成后的程序通过USB或蓝牙传输将程序和音频文件装载到NXT模块中，以赋予LEGO机器人生命，NXT还支持模块间文件拷贝和通过智能手机的蓝牙连接进行实时控制。</p>
<p>NXT-G的交互式编程环境基于国家仪器（<a href="http://www.ni.com/">National Instruments</a>）的<a href="http://www.ni.com/labview/">LabVIEW</a>软件提供，LabVIEW最大的特色就是以图形化编程G语言来组织程序，编写程序的展现形式为具备特定逻辑结构的框图。各模块功能实现则由LabVIEW中能完成各项编程任务的庞大函数库提供，包括数据采集、数据显示、数据存储、GPIB通用接口总线、串口控制、数据分析、蓝牙通讯等。此外，LabVIEW可视化编程环境提供了与传统IDE环境相同的程序调试工具，如断点设置、以动画方式显示数据及其子程序的结果、单步执行等功能。</p>
<p>NXT-G编程环境对Windows和Mac OS X都提供了良好支持。除了NI LabVIEW软件外，还有不少支持NXT-G编程的软件程序。包含NXT-G零售版和NXT-G教育版、LEGO基于LabVIEW简化定制的RoboLab工具，乐高机器人专用的汇编指令NBC，以及基于NBC编译器实现且语法与C语言相似的高级语言NXC等。</p>
<p>目前乐高公司已将NXT智能积木的固件设计开源，<a href="http://bricxcc.sourceforge.net/">BricxCC</a>（Bricx Command Center）支持开发者使用C、C++、Pascal、Forth以及Java语言完成乐高RCX模块的程序控制。同时，BricxCC能够在NXC（Not eXactly C）和<a href="http://bricxcc.sourceforge.net/nbc/">NBC</a>（Next Byte Codes）的支持下完成面向LEGO Mindstorms NXT机器人的编程控制。</p>
<p>在教育应用方面，LEGO每年还举办充满乐趣的主题聚会<a href="http://www.legoengineering.com/conferences.html">LEGO工程大会</a>，旨在为LEGO MINDSTORMS系统在教育社区和社团中的推广提供交流机会。在一年一度的LEGO工程大会上，教师们能够相互分享经验和想法，集思广益为LEGO MINDSTORMS在课堂上的应用寻找新的思路。</p>
<p>NXT-G在TIOBE语言排名中的提升，从一个侧面反映了可视化编程语言的流行趋势。如果你是喜欢自己动手又对自动控制感兴趣的程序开发者，不妨尝试一下乐高NXT积木和NXT-G编程环境，LEGO一定会为你带来丰富的体验和乐趣。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2010年12期-&#8221;程序天下事&#8221;栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/168/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>欢迎参加OSGeo技术讲座（2010年11月23日）</title>
		<link>http://www.gaoang.com/archives/167</link>
		<comments>http://www.gaoang.com/archives/167#comments</comments>
		<pubDate>Sun, 21 Nov 2010 10:02:23 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[诸子百家]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/167</guid>
		<description><![CDATA[OSGeo（开源地理空间基金会）致力于开源GIS和自由软件在科研单位和学校的推广，并以普及开源地理信息以及最新科学技术进展及为宗旨。OSGeo论坛每月举办一次，采取开放式主题选择，每次活... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/osgeo-speech.jpg" align="right" width="417"><a href="http://osgeo.org.cn/">OSGeo</a>（开源地理空间基金会）致力于开源GIS和自由软件在科研单位和学校的推广，并以普及开源地理信息以及最新科学技术进展及为宗旨。OSGeo论坛每月举办一次，采取开放式主题选择，每次活动包含两场讲座，将邀请开源GIS、自由软件和开源社区参与者以及乐于分享的老师和学生主讲，内容包含但不限于开源GIS、科学计算、天文、生物等相关科技进展，以及Linux/Unix操作系统、数据库技术、动态语言等自由软件。</p>
<p>OSGeo技术讲座时间安排如下：<br /><strong>2010-11-23号，周二，下午14:00-17:00</strong><br /><strong>讲座1：《Introduction to OSGeo Team》</strong> （日本大阪市立大学 <strong>Venka教授</strong>）<br /><strong>讲座2：《ZOO &#8211; Open WPS Platform》</strong>（OGC WPS开放平台核心开发者 <strong>Gerald Fenoy</strong>）<br /><strong>讲座3：《Mapserver &amp; OSGeo4W》</strong>（MapServer地图服务器开发者 <strong>Jeff Mckenna</strong>）<br /><strong>讲座4：《goGPS Project Status Report》</strong>（goGPS项目发起人 <strong>Eugenio Realini</strong>）</p>
<p><strong>地点</strong>：<br /><strong>中国科学院地理科学与资源研究所，2楼，2209会议室大会议室</strong><br />朝阳区安外大屯路甲11号（北沙滩桥向东1公里枫林绿洲对面，路北，奥林匹克公园西邻）</p>
<p>详细地图请参阅：<a href="http://osgeo.org.cn/?q=node/3" title="http://osgeo.org.cn/?q=node/3">http://osgeo.org.cn/?q=node/3</a></p>
<p><strong>演讲人介绍</strong>：</p>
<p><a href="http://www.media.osaka-cu.ac.jp/~raghavan/">Venkatesh Raghavan</a>，理学博士，现任日本大阪市立大学教授，日本地理信息学会委员，Venka教授的主要研究方向为遥感图像处理与地理信息系统。</p>
<p><a href="http://blog.goo.ne.jp/jg2tkh/e/cd23838dd8d21e1f56074a74879c860c">Gerald Fenoy</a>，OGC WPS开放平台<a href="http://www.zoo-project.org/">Zoo-Project</a>的核心开发者，Zoo平台为OGC WPS提供了C与Python的实现。</p>
<p><a href="http://www.gatewaygeomatics.com/">Jeff Mckenna</a>，Gateway Geomatics公司创始人，MapServer地图服务器开发者，专门提供开源GIS商业应用的解决方案。</p>
<p><a href="http://jp.linkedin.com/in/eugeniorealini">Eugenio Realini</a>，Osaka City University博士后，<a href="http://sourceforge.net/projects/gogps/">goGPS项目</a>发起人，开源项目goGPS旨在为低成本GPS设备增加定位精准度。</p>
<p>讲座详情请参见<a href="http://www.osgeo.org.cn/">OSGeo中国</a>：<a href="http://osgeo.org.cn/?q=node/43">http://osgeo.org.cn/?q=node/43</a></p>
<p>注：<a href="http://www.osgeo.org.cn/">OSGeo中国</a>所有讲座均免费且向公众开放，欢迎感兴趣开源GIS的开发者参与。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/167/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LLVM集成编译环境</title>
		<link>http://www.gaoang.com/archives/166</link>
		<comments>http://www.gaoang.com/archives/166#comments</comments>
		<pubDate>Wed, 03 Nov 2010 12:46:11 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[编程语言]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/166</guid>
		<description><![CDATA[LLVM编译环境是C、Objective-C和C++的编译工具集，为面向C或基于C的语言提供新一代高效易用的虚拟机环境。LLVM起源于2000年伊利诺伊大学发起的开源项目，起先主要在学术研究领域应用。在2005年... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/llvm.png" alt="" width="250" align="right" /><a href="http://llvm.org/">LLVM</a>编译环境是C、Objective-C和C++的编译工具集，为面向C或基于C的语言提供新一代高效易用的虚拟机环境。LLVM起源于2000年伊利诺伊大学发起的开源项目，起先主要在学术研究领域应用。在2005年，Apple为LLVM提供了人员支持以帮助其发展，并保持LLVM与Xcode良好的兼容性，使其成为一个开发者易于使用的编译器。</p>
<p>相比较传统的GCC工具，LLVM的设计秉承了更为现代的模块化思想。LLVM为开发者提供了中间代码和编译基础设施，并能与IDE紧密交互和集成，作为IDE的底层支撑基础，为代码补全、重构等功能提供辅助，同时在程序编译、连接、运行环境执行过程中实现全新的编译优化策略。值得一提的是，LLVM还提供了很多编译器以外的辅助工具，如对代码进行静态检查并生成HTML格式的分析报告等。</p>
<p>在程序编译过程中，GCC完成了从预处理到代码生成的整个过程，其封装式的设计使得很多中间信息无法被其他程序重用。而Clang将编译过程分隔成模块化的阶段，以大幅度增强开发者对于代码的操控能力。<a href="http://clang.llvm.org/">Clang</a>的设计目标之一就是要超越GCC编译器，在Clang官方站点的性能比较栏目中，列举了Clang与GCC、Elsa以及Portable C的各项<a href="http://clang.llvm.org/comparison.html">比较优势</a>。</p>
<p>在LLVM 2.7版本之前，LLVM支持C和Objective-C编译，在LLVM 2.7版本发布时引入了对于C++的支持。LLVM的编译器由Clang完成，Clang在编译速度方面非常高效，体现在包括预处理、语法解析、语义分析、抽象语法树生成的各个编译步骤之中。同时Clang在内存占用方面的开销非常经济，较之GCC有大幅度的缩减。与GCC相比，Clang的设计清晰简单、易于理解，具备良好的扩展性，同时能够保持与GCC 的兼容性。Clang为程序诊断信息提供了非常好的版式结构，为程序语法错误提供了源码提示，以及上下文调用的错误提示。</p>
<p>在最新发布的LLVM 2.8版本中，增加了C++标准库实现<a href="http://libcxx.llvm.org/">LibC++</a>。在C++标准符合性以及高效代码生成方面，LibC++库有很强的优势。新版本LLVM中还包含了新一代高性能调试器LLDB，LLDB使用与LLVM编译器相同的解析器和源代码工具，以替代先前的GDB调试器。</p>
<p>来自伊利诺伊大学香槟分校的<a href="http://llvm.cs.uiuc.edu/~vadve/Home.html">Vikram</a>，同时也是LLVM开发者Chris Lattner的导师，在代码生成和优化大会CGO 2009上的主题演讲《下一代编译器设想》中谈到：下一代编译器、优化器和运行时的基础架构将更注重在静态语言中应用实时编译和动态优化技术，并且编译器将借助更为灵巧的自动调优策略来挖掘程序优化潜能，同时编译器将会采用投机优化的方式来弥补静态分析优化的不足之处。LLVM项目已经在为下一代编译器的实现方向做出努力，这个致力于超越GCC的新一代编译环境，必将为程序编译注入新的动力。</p>
<p>本文曾发表于<a href="http://www.programmer.com.cn/">《程序员》杂志</a>-2010年11期-“程序天下事”栏目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/166/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>在线咨询交换标准ONIX</title>
		<link>http://www.gaoang.com/archives/165</link>
		<comments>http://www.gaoang.com/archives/165#comments</comments>
		<pubDate>Tue, 12 Oct 2010 08:36:47 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[标准研究]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/165</guid>
		<description><![CDATA[在线信息交换标准ONIX（Online Information eXchange）是针对数字出版物制定的在线元数据信息描述和元数据交换标准。ONIX的目标是为在线书店提供标准化的出版物元数据，以满足各式出版物的在线信... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/onix.jpg" alt="" width="197" align="right" />在线信息交换标准<a href="http://www.editeur.org/onix.html">ONIX</a>（Online Information eXchange）是针对数字出版物制定的在线元数据信息描述和元数据交换标准。ONIX的目标是为在线书店提供标准化的出版物元数据，以满足各式出版物的在线信息交换需求。</p>
<p>ONIX在英国<a href="http://www.bic.org.uk/">图书工业交流会</a>（Book Industry Communication）BIC Basic以及EDItEUR的EPICS等标准基础上建立。目前ONIX由欧洲电子数据交换组织<a href="http://www.editeur.org/">EDItEUR</a>（Electronic Data Interchange to Europe）维护和更新。</p>
<p>ONIX标准为电子出版物建立了一套整合的发布、流通和信息传递机制，用以支持信息和数据交换。ONIX包含电子出版物创建、发布、注册以及出版发行过程中的知识产权保护信息，并为出版物提供了详细的元数据描述，包括书目细节、知识产权信息、书刊各种交付形式的价格信息、以及出版物的渠道信息等。在为电子图书（ONIX for Books）信息提供传输模式的基础上，ONIX还将覆盖音视频等各类电子媒体知识产品，以适应数字出版领域的电子贸易需求。</p>
<p>ONIX以<a href="http://www.xml.org/">XML</a>作为承载电子出版物网络信息的交换语法形式，其中的记录代表书籍条目信息，ONIX通过特定的DTD来定义字段属性，如可重复与顺序关系，必备与非必备等。同时对每一字段进行详细限定，以确保传送与接收的信息对应统一。ONIX之所以采取XML形式，首先，对于复杂文档的创建、传输和交换，XML具备自身的优势。XML以纯文本方式存储，对于机器识别和手工编辑都可适用。此外，XML能够使用Tags灵活定义出版物所需的各种元数据描述元素，便于组织和个人在ONIX基础上进行灵活拓展，XML还拥有众多成熟的编辑和支撑工具，便于各出版机构选用。</p>
<p>ONIX为电子出版物的传递和交换提供了丰富的元数据描述规范，在面向电子书籍出版的<a href="http://www.editeur.org/12/Current-Release/">ONIX for Books</a>中，包含XML消息规范（Message Specification）、产品记录规范（Product Record Specification）、主连续记录规范（Main Series Record Specification）与子连续记录规范（Subseries Record Specification）等规范内容。ONIX的XML出版物信息包含具备格式、内容以及ONIX出版物信息根元素的起始信息（Start of Message），记录信息规格的标头资料段（Header Block），包含产品、主系列与子系列纪录的主体内容（Body of Message），以及结束信息（End of Message）等四部分内容。</p>
<p>ONIX为电子出版物发行建立了国际通用的信息交换标准，值得我国数字出版行业学习借鉴。感兴趣的朋友可以延伸阅读ONIX for Books 3.0产品信息格式<a href="http://www.editeur.org/files/ONIX%203/Introduction_to_ONIX_for_Books_3.0.pdf">技术白皮书</a>，以了解更多技术内容。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/165/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DITA技术分析报告</title>
		<link>http://www.gaoang.com/archives/164</link>
		<comments>http://www.gaoang.com/archives/164#comments</comments>
		<pubDate>Tue, 07 Sep 2010 08:22:56 +0000</pubDate>
		<dc:creator>Gao Ang</dc:creator>
				<category><![CDATA[标准研究]]></category>

		<guid isPermaLink="false">http://www.gaoang.com/archives/164</guid>
		<description><![CDATA[达尔文信息分类体系架构DITA是面向主题的文档交付解决方案，DITA基于XML表示并继承XML的文档描述元素，覆盖内容信息组织、编写、生成和交付的整个出版过程，并可以面向不同领域的技术出版... ]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gaoang.com/images/dita-oasis.jpg" alt="" width="367" align="right" />达尔文信息分类体系架构<a href="http://www.gaoang.com/archives/159">DITA</a>是面向主题的文档交付解决方案，DITA基于XML表示并继承XML的文档描述元素，覆盖内容信息组织、编写、生成和交付的整个出版过程，并可以面向不同领域的技术出版物进行扩展和定制。</p>
<p>DITA侧重于交付主题粒度的知识单元，再将知识单元进行重组和映射，生成最终交付的出版文档。DITA的设计理念，与传统着眼于书籍或文档交付的排版技术在思路上有很大区别。同时在应对局部知识点更新方面，DITA有着先天的优势。</p>
<p>在DITA的主题（Topic）粒度划分方面，我认为主题作为片段信息的载体，首先应具备自包含的特性，即主题具有信息描述的完备性，能够准确完整的表达内容含义，所以划分的粒度不易过细。同时，作为建立后续关联映射的基础单元，主题的粒度也不易过粗，应该便于通过DITA映射进行知识的共享和重用。</p>
<p>在近期参与的国家数字复合出版工程预研工作，对DITA技术体系进行了分析和梳理，并对DITA与主流的数字出版技术进行了<a href="http://www.gaoang.com/archives/161">对比</a>。DITA涵盖的内容非常丰富，仅最新1.2版本的技术说明和语言规范就有1200余页文档，包含创作和组织面向主题文档的各种信息，以及DITA使用过程中的组织、拓展和约束内容。</p>
<p>目前我对DITA的了解仅是庞大体系中的一小部分，在与合作单位的讨论交流中，就掌握的内容整理了一份DITA技术分析汇报，欢迎感兴趣数字出版的朋友共同交流DITA技术。</p>
<p>DITA技术分析汇报（PDF:1M）：<a href="http://www.gaoang.com/files/dita-spec-gaoang.pdf">http://www.gaoang.com/files/dita-spec-gaoang.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaoang.com/archives/164/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

