菜头粿

查看: 361|回复: 0
打印 上一主题 下一主题

神秘的微软X#语言

[复制链接]
1#
跳转到指定楼层
发表于 2009-8-29 12:10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



  
   
神秘的微软X#语言
(转载)按: 关注微软.net动向相关话题.

市场观察:神秘的微软X#语言
Kurt Cagle?钟莹译

最近一个比较令人好奇的微软话题是一个几乎快被遗忘的事:X#语言。微软XML标准小组架构师暨SOAP架构主要建构者Don Box在2002年的IDEAllinace XML大会上曾表示,微软已经开始在开发一种新语言X#,Box并未对新语言着墨太多,但暗示,该语言将把XML当作.NET程序编写领域的第一等公民。

有关X#,外界所知有限,所以有关X#的言论以揣测居多。尽管如此,外界还是有足够的信息对X#做合理的勾勒。

一开始,XML社群有人推测,X#将是另一种W3C的 XSLT转换语言,XSLT广被使用来将XML转换成HTML格式,或其它XML格式。但这种说法不太可能成立,一来是因为微软在.NET平台上强调命令式的程序编写模式。二来是因为对格式转换语言的需求并不真的存在,这可由XSLT的核心拥护者和.NET的开发者相比人数少之又少得到印证。XSLT虽然丰富但也复杂,对多数程序设计师而言并不好学。


也许将取代XML纲要(schema)

XML社群其它人认为,X#可能是目前XML发展的另一个激进延伸,亦即「后纲要确认信息集」(Post-Schema Validated Information Sets, Infosets)的用途。XML文件可以被视为一个有架构组织的信息集合(Infoset)。当XML初次当作为文件超语言SGML的子集(subset)时,它还没有数据类别的概念,换言之,在XML里你无法指定标示应该有数值数据,遑论限制数据只能是十进数字,且小数点后只能有两位数。不同于XML,XSD就有这种功能,而程序设计师开始钻研XSD时,XML 规格本身其实尚在开发阶段。不过工程师花了三年半的时间加上诸多折冲,终于催生出专为XML文件撰写的XML类别定义语言。

XML 纲要的用意之一是订出一套合格XML文件的规则,检查的过程称为确认(validation),通常需要一个二位的对象,对象含有形态信息,清清楚楚编码成XML组件。因此,若将标示这个对象改成字符串、数字、或日期,或其它超出XML组件预先指定的范畴,则程序会产生错误讯息,并由处理机制所拦截。一旦文件通过确认,就可成为「后纲要确认信息集(PSVI)」。

PSVI拥有若干有趣且实用的特质。对初学者而言,PSVI非常像class,只要有适当的架构,就可轻易写出非常完善的对象导向语言。由于每个schema都是独一无二的(假设我们指定它有一个称为namespace的唯一标签),理论上这个schema应该可附加一组方法在这个namespace上,表明该对象所具备的功能,而此一方法原则上是以XML属性定义之。

并非无前例可循

其实在这之前,已有若干引人好奇的前例。Haruo Hosoya与Benjamin Pierce两位博士在2002年推出一个名为Xduce的程序语言(procedural language),XDuce使用schema形式,方式和我之前所述类似。Pierce稍后和Vladimir Gapeyev、Michael Levin、Alan Schmitt等人合作,推出以XDuce为基础的另外一套语言Xtatic。Xtatic有如C#语言的轻量延伸版,结合模式与一般表达,可与程序表示相匹配。Xtatic这个新语言可以把XML文件视为PSVI加载,处理方式和其它CLR type class一模一样,然后以XML文件格式送出。

若这正是微软的主意,并成功孕育而生,X#可能彻底改变程序设计师开发原始码的方式。目前像C#之类的语言,classes的设计系在设计阶段决定,以便提升runtime效能,但却牺牲了若干灵活性。在schema为基础的架构下,应用软件可以被指定为XML序列(sequence),内含可和相关schema 相连的索引。应用软件于是可依据内部偏好快速建立起来,或针对特定状况由系统自动产生,至于相关组件则可依需求建立即可。当然,起始阶段可能会有障碍,但一件建立后,这些对象,就和传统方式开发的对象一样可行。各位看看.NET Runtime Services的架构便足以了解前例怎么做,因为Runtime Services里的MSIL便是视需求而建立的。

这并非微软首次尝试探索以XML为一套完整语言的可能性。Michael Corning、Stephen Mohr、Erik Fuller、Don Kackman、Michael John等人一度努力催生以XML为基础的结构,称之为Faceplates。Faceplates是围绕Petri-Nets的概念打转而成(之所以如此命名是纪念数学大师Carl Petri,而非各位在生物课所用的培养皿),并使用状态转换与XML为语汇来建立复杂的应用程序。Faceplates使用XSLT与JavaScript,不过若能用到任何一种状态转换与程序设计语言将会更好。至于这类以schema为基础的程序语言能否顺利进入X#,现阶段无法论断,不过看在XML对撰写程序如此契合的份上,两者的结合并不令人意外。


还有一段长路

大家最想知道的是:X#是否会出现在即将问世的.NET里?我不敢打包票不久就会看到。由于微软现阶段的重心放在未来几年内的Longhorn上,所以X#很可能是Visual Studio 2006的一份子。其实X#可能和C#一样,自成一个左右微软未来的重要语言,所以即使还遥遥无期,但仍得注意它的发展与动态。




高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|Archiver| 菜头粿 声明:本站所发贴子内容仅代表网友观点,不代表本站立场,严禁一切与国家法律相抵触的内容。感谢关注!
粤icp备19073828

GMT+8, 2026-7-26 14:59 , Processed in 0.101846 second(s), 15 queries .

粤东.中国

© 2007-2026 czczcz.com

快速回复 返回顶部 返回列表