MIT教授将网页开发整合为完整独立的程式语言Ur/Web
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 的细节。
MIT教授将网页开发整合为完整独立的程式语言Ur/Web的更多相关文章
- 微信公众平台开放JS-SDK(微信内网页开发工具包)
微信公众平台开放JS-SDK(微信内网页开发工具包),这次开放接口是质的飞跃,是对开发者和广大用户一个利好的消息.未来的公众号图文消息会更丰富多彩,准备脑洞大开吧!(第三方平台正式支持接入微信公众平台 ...
- 免费的HTML5连载来了《HTML5网页开发实例详解》连载(五)图解通过Fiddler加速开发
Fiddler是Windows底下最强大的请求代理调试工具,监控任何浏览器的HTTP/HTTPS流量,窜改客户端请求和服务器响应,解密HTTPS Web会话,图4.44为Fiddler原理示意图. 图 ...
- 8款替代Dreamweaver的开源网页开发工具
Adobe Dreamweaver虽然非常好用,但它并不是唯一一个能够设计.开发.发布精彩网站的Web开发集成环境.我们的开源世界里有很多非常棒的可以完全替代Dreamweaver的各种功能的优秀We ...
- 微信开放JS-SDK,助力网页开发
From:http://mp.weixin.qq.com/s?__biz=MjM5NDAwMTA2MA==&mid=209208141&idx=1&sn=1f075212b34 ...
- springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
前面主要是后台代码,spring以及mybatis的整合 下面主要是springmvc用来处理请求转发,展现层的处理 之前所有做到的,完成了后台,业务层和持久层的开发完成了 接下来就是展现层了 有很多 ...
- SpringBoot整合Mybatis完整详细版
记得刚接触SpringBoot时,大吃一惊,世界上居然还有这么省事的框架,立马感叹:SpringBoot是世界上最好的框架.哈哈! 当初跟着教程练习搭建了一个框架,传送门:spring boot + ...
- iOS WKWebview 网页开发适配指南
iOS WKWebview 网页开发适配指南 微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配.如有问题,可参考文末联系方式,向我们 ...
- android开发新浪微博客户端 完整攻略 [新手必读]
开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就 ...
- IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)
一.网页基础 // // ViewController.m // IOS_0218_网页开发1 // // Created by ma c on 16/2/18. // Copyright © 201 ...
随机推荐
- Delphi中WebBrowser拦截网页Alert对话框消息(转)
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, O ...
- Cstyle的UEFI导读:第18.0篇 NVRAM的工作原理(上)
虽有句话说的好,实用的东西记在脑子里.没有的记在笔记本上. 可是如今的信息量越来越大,并且随着时间的推移记忆力会越来越不可靠,所以仅仅好把近期工作之余看的一些东西记录下来,避免被迅速忘记.这里 ...
- BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心
题目大意:给定一棵树,有一些点是关键点,要求选择不超过mm个点.使得全部关键点到近期的选择的点距离最大值最小 二分答案,问题转化为: 给定一棵树,有一些点是关键点,要求选择最少的点使得每一个关键点到选 ...
- linux下daemon守护进程的实现(以nginx代码为例)
ngx_int_t ngx_daemon(ngx_log_t *log) { int fd; // 让init进程成为新产生进程的父进程: // 调用fork函数创建子进程后,使父进程立即退出.这样, ...
- javascript 高级程序设计(二)-在html中使用javascript
<script> async 可选 charset 可选 defer 可选 language 已废弃 src 可选 type 可选
- log4j中Spring控制台输出Debug级信息过多解决方法
log4j中Spring控制台输出Debug级信息过多解决方法 >>>>>>>>>>>>>>>>> ...
- 第八篇:python高级之多进程
python高级之多进程 python高级之多进程 本节内容 多进程概念 Process类 进程间通讯 进程同步 进程池 1.多进程概念 multiprocessing is a package ...
- 第七篇: python高级之多线程
21 interest=0.05 22 count=amount+amount*interest 23 24 self.withdraw(count) 25 26 27 def transfer(_f ...
- linux意外关机,如何修复
意外关机后,提示an error occurred during the file system check. 解决方法,输入root密码 执行 fdisk -l 查看磁盘 (Repair files ...
- 重新看php数组
闲来有空,最近看php手册数组这块,对于array_values() 还是第一次接触,array_values是不保留键名,只有键值的函数,还有一个作用就是 重新索引. unset() 函数,是删除 ...