《JavaScript语言精粹》作者Douglas谈Web开发、jQuery和WebKit

JavaScript泰斗Douglas Crockford分享了他对JavaScript及其生态系统的见解,涵盖了语言的问题、框架的作用、新兴语言如CoffeeScript和Dart的看法,以及JavaScript在移动互联网时代的发展。

JavaScript在如今的Web领域正发挥着无与伦比的重要作用。但它又是一门饱受误解与非议的语言。这其中很大程度的误解来源于它奇怪的历史,和它的命名 —— 国内常有人戏称,Java和JavaScript的区别,就像雷锋和雷峰塔的区别。而Douglas Crockford,做为JavaScript语言的泰斗,同时也是QCon北京2013大会确认参会的国际嘉宾,在去年年底,接受了《German-language PHP Magazin》编辑Wießeckel的采访,发表了他对 JavaScript、jQuery 、CoffeeScript、Dart语言、Web的历史,以及移动互联网等内容的真知灼见。

\

编者后注:2月13日,Opera宣布将使用WebKit作为自己浏览器的新内核,在网络上掀起不小的波澜,而Douglas在这篇去年的访谈里就已经很有预见性的谈到了WebKit的胜利,同时还肯定了jQuery等框架的工作,实在令人折服。

\

关于Opera切换到WebKit引擎的决定,InfoQ做了系列报道,请见:

\

下面是Douglas的采访内容:

\

作为《JavaScript语言精粹》(《JavaScript:The Good Parts》)的作者,在谈及它的“bad parts”,甚至是“worst parts”时,Douglas表示:

\
\

最坏的部分是JavaScript的依赖关系和全局变量。我们在浏览器中看到的各种安全问题全是这两个部分引起的。

\
\

对于CoffeeScript,Douglas这么看:

\
\

CoffeeScript是一种可被编译成JavaScript的新语言,它把JavaScript当作一种可执行语言。CoffeeScript的语法简洁优雅,非常可爱。我希望JavaScript可以像CoffeeScript一样。不过我并不推荐CoffeeScript,因为它仍然处于实验阶段,而我不想在生产环境中冒险。但是对于自己感兴趣的小项目,用CoffeeScript是挺不错的选择。但是需要注意,CoffeeScript的唯一优势只是语法,它的语意和JavaScript完全一样,没有什么你能用CoffeeScript能行而JavaScript不行的事。只是在很多时候CoffeeScript写法会更加方便。

\
\

谈到jQuery的时候,Douglas表示了非常肯定的态度:

\
\

jQuery非常棒。它运行在DOM的顶层,直接调用浏览器为JavaScript提供的API。DOM本身非常糟糕,是我见过的最烂的API。而JavaScript是一门强大的语言 —— 只需要一个相对小体积的JS库就可以将DOM变得非常有用,jQuery实现了这一点。Yahoo!的YUI从这方面看来并没有做的更好。我会建议所有人使用一种JS库来操纵DOM,而不要使用原生API,因为那的确非常痛苦。库的使用不但会让事情变得愉悦,也会提高工作效率。

\
\

对不同的JavaScript引擎,比如V8、JaegerMonkey,Douglas表示:

\
\

其实这都没什么关系。JavaScript是一项有超强移植性的语言,在不同的JavaScript引擎表现的并没有太多差别,这些引擎其实都挺不错。Microsoft的引擎(Trident)表现的也挺好。这是JavaScript的优点之一。值得一提的是,Microsoft还花了不少功夫让Web工程师可以在Windows8的桌面端创建WebApp,这看上去也还不错。

\
\

对Google发布的用于取代JavaScript的Dart语言,Douglas肯定了尝试新语言的行为,但是对这门语言本身,他持保留的看法:

\
\

JavaScript的确有很多问题,但JavaScript不会是最后一门编程语言。我鼓励大家在新编程语言上的实验。因为对于程序员来说,编程语言是最重要的创作工具。但其实我们很明显还没有把JavaScript了解透彻,而JavaScript自己也并没有表现的足够好。所以我们需要继续新编程语言的实验。我也很高兴看到这些新语言的尝试。但对于Google Dart来说,问题在于他们甚至还未完成语言的设计工作,就已经宣称胜利了。Dart对我没有意义。Google应当为尝试新语言的行为获得表扬,但是取代JavaScript看上去更像是一个阴谋,但看起来又不太可能。

\
\

对JavaScript过去多年的恶劣名声,以及最近一些年的迅速崛起,Douglas回顾了整件事情的历史:

\
\

这都是因为Ajax。在2001年的时候,Gartner预测Web将像WAIS和Gopher那样死去,Web将会被Ex-Internet取代,包括Microsoft在内的许多人相信这种说法。所以Microsoft扩张了IE团队,并开始着手研究下一代英特网。

\

在2005年,Jesse James Garrett发表的关于Ajax的论文所有人大吃一惊。Microsoft突然间又被Web打了个措手不及。可能因为浏览器在安全问题上表现的还不错,用户在面对Web应用的时候不至于总面对恐怖的,不知所以然的权限提示对话框,加之Ajax的能力,Web开始发挥起它的威力。它比其他任何平台都更容易的将应用传递到客户端。由此,Web开始腾飞。

\

Web火热发展的另一个原因,是除Web以外的其他尝试都失败了。过去曾有很多试图取代Web的尝试。Adobe尝试了很多次,Microsoft也是。Google如今仍在努力。但迄今为止他们都失败了。Java曾被认为最可能去统治Web,但Java失败了。之后Java又去尝试接管消费电子设备和其他场景,但是也都不怎么成功。在移动电话终端上,他们几乎试遍了所有的方法。他们试过专利,试过开源,但他们都没能成功。

\

现在人们正努力将JavaScript运行在移动平台,看起来好像挺不错。这并不是任何人希望或预言的,但事情就这么发生了。JavaScript正在胜利,因为它凑效了。同时,JavsScript的流行让其它只能勉强运行的方式显得又傻又非主流。

\
\

对于移动互联网的应用入口之争,和将Web构建为OS平台的FirefoxOS,以及WebKit的话题,Douglas认为:

\
\

Web看起来正在占领移动互联网,但是一切并未尘埃落定。这是一场比赛:各种App Store正在试图取代Web,他们在用垄断的方式控制所有应用的入口。但Web的哲学之一是“人人平等”。垄断的方式会胜利吗?我认为最终开放一定会赢得胜利,因为大家可以从每个人都自由交付应用的系统中获得更多好处。但是总有一股力量在试图封闭它,比如DRM,所以让我们关注事情将会如何发展,并一起希望Web的开放性会保持下去。

\

FirefoxOS并不会成为一个大事件,因为看上去移动平台上Web的胜者会是WebKit。Mozilla曾做过不错的东西,而WebKit做的更好。但我希望市场可以保持一种竞争环境,而不要有一个绝对的胜利者出现。所以我希望Mozilla可以更强大。

\

Web的困境之一在于它从不属于任何一家单独的公司:它不源自Adobe,也不源自Microsoft,也不是Sun或者Oracle。开发者必须处理Web平台上各种不同的因素,而这些不同的因素不但没有消减,还越来越多。同时,W3C标准也还非常不充分。这让开发者们的日子很不好过。但我并不想为此走另一条路,说“好吧,有个统一平台就好了”这样的话。因为相比之下,平台的多样化是整个生态系统健康的表现,如果失去这样的多样性,那必然会是一件坏事。

\
计及源荷不确定性的综合能源生产单元运行调度与容量配置优化研究(Matlab代码实现)内容概要:本文围绕“计及源荷不确定性的综合能源生产单元运行调度与容量配置优化”展开研究,利用Matlab代码实现相关模型的构建与仿真。研究重点在于综合能源系统中多能耦合特性以及风、光等可再生能源出力负荷需求的不确定性,通过鲁棒优化、场景生成(如Copula方法)、两阶段优化等手段,实现对能源生产单元的运行调度与容量配置的协同优化,旨在提高系统经济性、可靠性可再生能源消纳能力。文中提及多种优化算法(如BFO、CPO、PSO等)在调度与预测中的应用,并强调了模型在实际能源系统规划与运行中的参考价值。; 适合人群:具备一定电力系统、能源系统或优化理论基础的研究生、科研人员及工程技术人员,熟悉Matlab编程基本优化工具(如Yalmip)。; 使用场景及目标:①用于学习复现综合能源系统中考虑不确定性的优化调度与容量配置方法;②为含高比例可再生能源的微电网、区域能源系统规划设计提供模型参考技术支持;③开展学术研究,如撰写论文、课题申报时的技术方案借鉴。; 阅读建议:建议结合文中提到的Matlab代码网盘资料,先理解基础模型(如功率平衡、设备模型),再逐步深入不确定性建模与优化求解过程,注意区分鲁棒优化、随机优化与分布鲁棒优化的适用场景,并尝试复现关键案例以加深理解。
内容概要:本文系统分析了DesignData(设计数据)的存储结构,围绕其形态多元化、版本关联性强、读写特性差异化等核心特性,提出了灵活性、版本化、高效性、一致性可扩展性五大设计原则。文章深入剖析了三类主流存储方案:关系型数据库适用于结构化元信息存储,具备强一致性与高效查询能力;文档型数据库适配半结构化数据,支持动态字段扩展与嵌套结构;对象存储结合元数据索引则有效应对非结构化大文件的存储需求,具备高扩展性与低成本优势。同时,文章从版本管理、性能优化数据安全三个关键维度提出设计要点,建议采用全量与增量结合的版本策略、索引与缓存优化性能、并通过权限控制、MD5校验备份机制保障数据安全。最后提出按数据形态分层存储的核心结论,并针对不同规模团队给出实践建议。; 适合人群:从事工业设计、UI/UX设计、工程设计等领域数字化系统开发的技术人员,以及负责设计数据管理系统架构设计的中高级工程师系统架构师。; 使用场景及目标:①为设计数据管理系统选型提供依据,合理选择或组合使用关系型数据库、文档型数据库与对象存储;②构建支持版本追溯、高性能访问、安全可控的DesignData存储体系;③解决多用户协作、大文件存储、历史版本管理等实际业务挑战。; 阅读建议:此资源以实际应用场景为导向,结合具体数据库类型表结构设计进行讲解,建议读者结合自身业务数据特征,对比分析不同存储方案的适用边界,并在系统设计中综合考虑成本、性能与可维护性之间的平衡。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值