分享
 
 
 

预测微软神秘的X#

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

最近从微软传出的一件让人迷惑的事情是Don Box的一条几乎被抛弃的评论,他是SOAP结构一个主要的创立者,同时也是微软的XML标准组的一名设计师。当Don在巴尔的摩IDEAlliance XML 2002年会议上演讲的时候,他宣布微软已经开始开发一种新的语言,他把它叫做X#。他虽然没有提供关于这个新语言的任何细节,但是指出它会把XML作为.NET编程的头等公民来对待。

雷蒙德(Redmond,微软总部所在地)之外的很多东西都还只是关于X#的推测,但是已经有足够的信息来让预测接近于这门语言的实际情况了。

最初,XML社区里的很多成员认为,X#将会成为W3C的XSLT转换语言的替代品,用来将XML转变成HTML或者各种不同的XML的格式。但是,这不太像微软对.NET平台上强制编程模型的强调。而且,对这样一种转换语言的需求并不真的存在――XSLT这门丰富但是被公认为复杂的语言是大多数程序员需要学习的,这门语言核心用户的数量和.NET开发人员的数量比较起来要少得多。

可能是XML结构描述的替代者

XML社区的其他成员认为,X#更有可能是对当前XML开发一个更加基本的领域的扩展――后结构描述已验证信息集(Post-Schema Validated Information Set,Infoset)。一个XML的文档可以被看作是信息的结构集合,即Infoset。当XML最初作为文档元语言SGML的子集诞生时,它还不具有数据类型的概念――也就是说,你不能指定XML的标签应该包含数值数据,更不要说把数据限制为小数点后带有两位小数的十进制数。XML结构描述定义语言(XML Schema Definition Language,XSD)能够提供这个能力,对这个语言的研究工作是在XML规范自身仍在发展的时候开始的。但是经过了三年半的时间和大量口水大战之后,终于诞生了用XML编写成的用于XML文档的类型定义语言。

XML结构描述的一个目的是描述一套规则,用来定义合法的XML文档由什么组成。将一个文档同结构描述进行对比检查的过程叫做验证,在典型的情况下,这一过程需要使用类型信息来创建二进制对象,这些类型信息被明确地编码进了XML元素自身里。因此,任何尝试要把标签的内容更改为预先专门指定的元素域(domain of the element)以外的字符串、日期或者数字的行为,都会生成一个能够被处理器所理解的错误(信息)。一旦文档通过了验证,它就能够被作为后结构描述已验证信息集(Post-Schema Validated Infoset,PSVI)。

这些PSVI有很多有趣和有用的属性。对刚刚接触它的人而言,PSVI看起来和用起来都很像类,如此之像,以至于如果有合适的框架,你可以直接利用PSVI所具有的面向对象的能力轻易地创建一门非常强健的语言。由于结构描述是有效的和唯一的,只要它被打上叫做命名空间的唯一标签,所以在理论上,它就应该能够向描述对象能够做什么的命名空间附加一系列方法――这一系列方法自身可能会被定义为XML实体。

不是没有先例

还是有一些很有意思的先例能够用在这一方面的。Haruo Hosoya博士和Benjamin Pierce博士在2002年开发了一门叫做XDuce的过程语言(procedural language),它用和我刚才所提到的类似方式使用了结构描述的类型。Pierce博士后来和Vladimir Gapeyev、Michael Levin,以及Alan Schmitt一起根据XDuce开发了另一门语言,叫做Xtatic。Xtatic是对C#这门语言的小型扩展,它将匹配程序图的模式和常规表达式结合了起来。所产生的这门语言能够把XML文档作为PSVI载入,并使用相关的一套方法将其完成,再将它和其他任何CLR类型的类完全一样地对待,然后就把它输出为XML文档。

如果这就是微软所考虑的,而且它能够实现这一构想的话,那么X#就会从根本上改变程序员开发代码的方式。就当前而言,在C#这样的语言里,类的设计是在设计阶段确定的,这样能够获得更好的运行性能和效率,但是会损失一些灵活性。有了基于结构描述的架构,应用程序事实上就能够被指定为XML序列,后者会包含链接到相关结构描述的参照。这样就能够根据内部设置而即时创建应用程序,或者使用处理指定情况的自动进程来生成应用程序,其各部分都是按需创建的。当然会有一个特定的初始化过程,但是一旦完成了创建,这些对象就会和它们所衍生出来的对象一样可行。要想看到正在使用的先例,你只需要研究.NET运行服务(Runtime Service)的结构就行了,在这个结构里,组件的MSIL是按需编译的。

顺便说一句,这对于微软来说已经不是第一次尝试将XML用作全功能的编程语言了。Michael Corning、Stephen Mohr、Erik Fuller、Don Kackman和Michael John曾一度力推一个基于XML的结构,叫做Faceplates,或者按照Corning所习惯的叫法,基于结构描述的编程技巧。Faceplates是个根据Petri-Nets的理念而创建的(顺便提一句,这是根据数学家Carl Petri命名的,而不是你在生物课上看到的培养皿),并把状态转换(state transition)和XML用作创建复杂应用程序的词汇表。Faceplates使用了XSLT和JavaScript,但是其实它也能够很好地使用任何状态转换和编程语言。基于结构描述的编程技术是否会走上X#这条路在现在还是个未知数,但是有了符合这种编程方法的XML,这样的预测不会很让人意外。

仍然可能差一步

现在的大问题是:X#会出现在你身边的.NET里吗?我不敢肯定它是否很快就会。微软现在的开发精力正放在未来几年的Longhorn操作系统上,由此可以判断,X#更有可能成为Visual Studio 2006的一部分。但是它还是值得等待的,因为X#很可能会最终在自己的领域里成为一门重要的语言,这就像C#对微软未来的影响一样。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有