MIT 的软体技术教授 Adam Chlipala 设计了新的 Ur/Web 程式语言,这是一个整合 HTML、CSS、XML、SQL 及 JavaScript 等网路标准的“完整独立”语言,强调快速、安全及“元编程”的开放源码专案,可望减少开发人员设计网路应用程式所耗费的时间与精力。
美国麻省理工学院(MIT)的软体技术教授 Adam Chlipala 设计了新的 Ur/Web 程式语言,这是一个整合 HTML、CSS、XML、SQL 及 JavaScript 等网路标准的“完整独立”语言(self-contained programs),强调快速、安全及“元编程”(metaprogramming,或作“超编程)的开放源码专案,可望减少开发人员设计网路应用程式所耗费的时间与精力。
根据 Chlipala 所发表的论文,Ur/Web 是个静态的函数式语言,它把各种叠床架屋的网路标准融合成单一的程式模型,不论从安全或效能来看,都让网路得以保留它作为一个单纯应用程式平台的本质。
Chlipala 表示,全球网路(World Wide Web,WWW)是个非常受欢迎的平台,可用来设计各种具备图像使用者介面的应用程式,各种网路标准也慢慢出现,造就今日复杂的生态体系。若要以浏览器及伺服器所支援的语言撰写丰富的功能,至少必须熟悉产生文件架构的 HTML、产生文件格式的 CSS、提供互动服务的 JavaScript,以及递送上述内容的 HTTP 通讯协定。近来还有一些受欢迎的应用程式仰赖 JSON 来传递复杂的资料格式,或是以 SQL 来储存永久的结构化资料,这些不同的语言的程式码经常以各种复杂且片段的方式相互嵌入。
Ur/Web 主要解决了两个问题,一是把封装(Encapsulation)应用在丰富网路程式中,支援那些能够以私有状态处理网路应用程式关键片段的程式模组。其次是揭露一个供开发人员使用的并发模型,用来支援伺服器端与客户端之间的重要通讯。
因此,Ur/Web 允许开发人员把网路应用程式当作独立程式来撰写,Ur/Web 的编译器可以自动产生相对应的 XML 程式码及样式表规格,进而将 JavaScript 与资料库程式码摆放在正确的地方。Chlipala 说明,虽然 Ur/Web 编译器能够产生 XML、JavaScript 与 SQL 程式码,但它并不会自动制造样式表,而是分析完整的程式后列出有关的 CSS 类别,再提出设定建议。
Ur/Web 除了能够协调各种网路标准之外,理论上还会更加安全。它采用了强型别(strongly typed),任何在 Ur/Web 中所设定的新变数都被局限在单一的型别,同时也限制了变数的范围。例如想在网页上同时提供行事历与广告版位的组件(widget)时,开发人员并不希望广告会影响行事历的运作,或是行事历干预了广告的递送,Ur/Web 会禁止这两个不同网页组件之间擅自相互存取。
不过 IDG News 分析认为,对于一般的开发者来说,做为一种“函数式程式设计语言”(functional programming language)的 Ur/Web 将会有很高的学习门槛,Chlipala 教授也同意这样的看法,并拿 Ur/Web 与受到特定族群喜爱的 Haskell 做比较,而 Haskell 就是以晦涩难懂而知名。
Chlipala 准备在明年 1 月由计算机协会主办的程式语言原则座谈会(Symposium on Principles of Programming Languages)上正式发表及展示 Ur/Web 的细节。