OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

深入理解Atwood定律


分享到


分类 大话编程   发布 ourjs  1379892417000
注意 转载须保留原文链接,译文链接,作者译者等信息。  

Jeff Atwood发表于2007年的这篇博客里,他提出了著名的“Atwood定律”,即”任何能够用JavaScript实现的应用系统,最终都必将用JavaScript实现。“ (Any application that can be written in JavaScript, will eventually be written in JavaScript.)那么,这位大牛为何如此推崇JavaScript呢?如何真正理解他提出的这个定律?这就必须完整地看懂他的博文才行。以下是本人在学习过程中阅读的主要内容摘要:

 

在他的这篇博文中,他首先提到了另外一位更重量级的大神,互联网之父Tim Berners-Lee 在他的著作 《最小功效原则》中的一段话:

 

“在过去的40年中,计算机科学一直在开发尽可能功能强大的语言。现在我们必须领会这样的道理:要选择功能最不强的解决方案而不是最强的。语言的功效越小,对于储存在该语言中的数据你能做的事情就越多。如果你把程序写成简单的描述性形式,任何人都可以编写一个程序来分析它。比如,如果一个包含了天气数据的网页,里面使用RDF 格式来描述这些数据,用户就可以把它当做一个表格来查找,也许求它的平均值,或者用它绘图,或把它和其他信息结合在一起进行推理分析。另一个极端情况是,这些天气信息是用漂亮的Java applet描绘出来的。虽然这样可能做出很酷的用户界面,但它完全无法用于分析。找到这个页面的搜索引擎会压根不知道这些数据是什么或者是干什么用的。唯一能发现Java applet的含义的方式就是让它在一个人面前运行起来。”

 

说实话,本人看完这一段有些困惑:JavaScript和Java、PHP这些语言相比,对于搜索引擎对数据进行提取和分析方面并不见得有什么本质 的优势嘛。想了半天还是似懂非懂:这篇文章写于1998年,当时还没有Web 2.0的概念,网站的功能主要是发布公开访问的内容,Java applet都算是“很酷”的用户界面了,所以从逻辑上Berners-Lee 关 注搜索引擎的自动分析是自然的,而且他的例子里并没有推崇JavaScript,举的例子是更为描述性的语言,比如HTML,对于数据提取的确有其优势, 而JavaScript当时作为纯前端页面效果的语言,只是配合HTML使用。但是随着Facebook这样的Web 2.0平台出现,用户贡献的内容成为互联网信息的主要来源,很多动态数据已经无法被搜索引擎自动搜索到,他的上述分析似乎就有点过时了?也许是因为我认识 的高度不够吧。不管怎么样,他的文章中对于编程语言选择的最小效能原则依然是成立的,这也是Atwood提出其定律的理论基础。

 

Jeff Atwood在博客中引用完上述文章后说:“这个思想后来被编入了正式的W3C文档,最小功效规则。我提出了一个这个规则的推论,它是程序员文化最近的流行元素 之一,我称之为Atwood定律:任何能够用JavaScript实现的应用系统,最终都必将用JavaScript实现。”

 

为了理解这段逻辑,就需要再阅读这篇W3C文档。 它比较了从最基本的描述性语言(例如HTML和结构化数据库)到一些图灵完备语言(如C和JavaScript)等在自动分析数据难易程度的不同,然后分 析说:“在发布信息的时候,有很多关于语言功效和复杂度的维度需要考虑。比如,语法简单明了的语言会比语法结构复杂的语言更易于分析。如果一种语言把简单 计算包装在不必要的机制(比如对象创建或者线程管理)中,也会类似地阻碍信息提取。” 此外文章还提出了轻量级语言开发的功能更稳定可靠:既然用它编写的代码更易于分析,也就更容易发现其中容易出错的地方。最后文章提出了一个实践原则:“在所有适合于在互联网上表达信息、约束条件或程序逻辑的编程语言中,选择功能最不强的一个来使用。

 

好了,看到这里意思基本上清楚了,语言的语法结构越简单,数据提取和分析就越容易,对于开发互联网应用就越理想。如果对象创建和线程管理都是“不必 要的机制”,那么作为一种基于原型而不是类的面向对象的语言,JavaScript就是完美的:它没有类的概念,但所有东西都是对象,无需创建过程就能存 在,而且它是单线程的。同时,JavaScript也走向了后端,Node.js之类的框架和MongoDB之类的NoSQL数据库让Web开发实现了 JavaScript的前后端通吃。

 

这应该就是Jeff Atwood定律的由来:JavaScript既能独立完成所有互联网应用所需的功能开发,同时又是主流编程语言中最为轻量级的。我想,这个逻辑应该就是 Atwood认为JavaScript将成为统治未来互联网世界的编程语言的根据吧。另外我觉得还有一个很重要的事实,那就是JavaScript已经获 得了所有浏览器的支持,几乎所有的网站都已经在使用它,再加上JSON标准,相比其他语言,它已经占据了有利地形。

 

他在这篇博客的最后还说:”如果你喜欢那篇文章,我推荐你再看《Berners-Lee的架构和哲学精髓》网页中的其他部分。虽然里面的内容对于互联网时代是比较老了,里面只有两篇是去年写的,但它还是包含了发明互联网的那个家伙的一些教诲和洞见,它们经历了时间的考验却仍然闪着金光。”

 

最后我必须感慨一下:大牛的一些名言听起来似是而非,不经过细致的阅读是很难真正理解其逻辑的,而且即使细致阅读了,可能因为思维方式和实践机会的 限制,完全理解其精髓也是很难的,在这样低的基础上再想有什么创新就更难了。这大概也是中关村的挨踢水平远远低于硅谷,中国的互联网公司大都只能依赖山寨 的方式生存的原因吧。

 

本文作者: 老码农

原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 一个女软件工程师的征婚PPT
  2. 女子发帖赞扬IT男老公 网友纷纷求介绍
  3. 如何更好用业余时间做互联网创业?
  4. 马化腾写代码的水平如何?
  5. NodeJS即将超越Ruby, 正在悄悄改变开源面貌
  6. Groupon抛弃Rails,转向Node.js
  7. Node.js 编程的未来
  8. [译] JavaScript 开发者经常忽略或误用的七个基础知识点
  9. Mozilla实验室发布的一款实时协作工具库TogetherJS
  10. 程序员的幽默笑话
  11. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - 大话编程
  1. Object-C 真是一种啰嗦的语言吗?你怎么看?
  2. 驳PHP优于Node.js的五大理由
  3. Windows XP 有救了
  4. 请不要让我注册,起码先试一下
  5. 类继承已经过时了
  6. 对程序员来说,懒是一种值得称颂的美德
  7. Github上最热门的语言
  8. 为什么微软帝国需要解散
  9. 站着编程两年后我身体上的变化
  10. Java 与 .NET 的平台发展之争

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号