JavaScript悟道
上QQ阅读APP看书,第一时间看更新

与道格拉斯隔空对话

编者注:本书作者道格拉斯·克罗克福德可谓JavaScript社区的传奇人物。在本书中文版出版前夕,编辑联系到道格拉斯,希望他能为中国的JavaScript用户指点迷津。道格拉斯欣然同意了。随后,我们发起了问题征集活动,并在短短几天内收到数百份提问。以下精选10位提问者的问题,以及道格拉斯的独到见解。

轩灵@宋晨问:在ES6之后,JavaScript有了哪些新的糟粕?

道格拉斯答:稳定性是一门编程语言最重要的品质。诚然,敏捷方法有诸多益处,却也暗留陷阱。事无完事,亦无绝对的稳定。我们自然希望所有的迭代都是向下兼容的,但实际情况往往不尽如人意。我的应对之道是找到一个稳定、恰可正常运行的语言子集,同时鼓励人们开发一门新的编程语言。我们无法渐进式地修复已存在于当下语言中的那些糟糕的设计错误,所以唯有新的语言才能引领我们向前。

 

刘子靖问:您如何看待TypeScript?在项目开发中,该如何在JavaScript和TypeScript之间做更好的选择?

道格拉斯答:TypeScript并不能解决我的问题,所以我还是使用普通的JavaScript。

 

于傲日问:作为一门语言,JavaScript的核心竞争力是什么?

道格拉斯答:JavaScript有两个优势。首先,它是目前唯一可以运行在大多数Web浏览器中的语言。Java applets曾经也可以运行在浏览器中,然而最终惨淡离场。更重要的是,JavaScript是一门实用的函数式语言。将“轻量级动态对象”与“函数是一等公民”两者结合的设计简直绝了!

 

pcamateur问:您如何看待JavaScript在非前端领域的发展?

道格拉斯答:JavaScript已然流行于服务器端领域,桌面应用亦是如此。此外,它的一个安全子集也被用于金融领域。JavaScript被转换为一门安全语言的难度远比其他大多数语言小。我个人期待安全ECMAScript(Secure ECMAScript)有一天可以取代JavaScript。

 

royalpioneer问:在即将来临的5G时代,浏览器会没落吗?JavaScript又将扮演什么角色?

道格拉斯答:我对应用程序商店的模式有两点不满。第一,应用程序可以用非安全语言开发,这为运营商的安全审查增加了负担。无论是非安全应用程序被通过审核,还是良性应用程序被拒绝通过,都是有可能的。第二,只有少数大型公司才有能力运营应用程序商店,这就意味着那些对运营商没有明显好处的应用程序很难被发行。我希望的模式是允许任何人开发软件,也可以将其提供给任何想使用该软件的人,同时不影响用户的安全性,也不用向运营商付钱。Web就是这样的模式。但不幸的是,Web本身已经被少数大型公司所占领。我希望Web可以被一个更好、更开放、更安全的应用交付体系取代,但现在似乎还看不到希望。

 

李松峰问:要掌握JavaScript的运行原理,除了阅读您的这本著作,通读并研究ECMAScript规范本身是否也是个好办法?

道格拉斯答:我的确是从ECMAScript规范中学习JavaScript的。但需要提醒一点,ECMAScript规范的初衷并不是给普通开发者看的,而是给语言引擎实现方看的。虽说规范的质量在ES5中有显著提升,但通读起来仍然不易。说到底,要靠熟能生巧。

 

临渊羡余·修问:JavaScript学到什么程度算是精通?

道格拉斯答:我会在我“精通”JavaScript之日告诉你。但就目前来看,我仍然需要频繁查阅文档。通常情况下,我翻阅的是MDN,但偶尔也会复习自己写的书。

 

穆木问:工作多年,我总觉得做了许多重复性工作。您认为前端工程师应该如何平衡工作与学习?

道格拉斯答:这是个好问题。我建议你写一些真正属于自己的程序。如果它们看起来不错,就考虑将其开源。作为一个面试官,我喜欢看看应聘者的开源项目。我可以从中了解他们的编码质量及所选择解决的问题。

 

灰熊问:怎样才能具备创造一门热门语言的能力?

道格拉斯答:我很想给你一些关于目标和所需技能的建议,但老实说,这主要看运气。有很多优秀的语言明珠暗投,也有很多平庸的语言熠熠生辉。

 

老梗问:您信仰阿特伍德定律吗?也就是,“任何可以用JavaScript来写的应用,都终将用JavaScript来写”。如果让您重新设计一遍JavaScript,您会在设计之初避免什么问题呢?

道格拉斯答:与其说它是个定律,倒不如说是个妙梗。我在本书中花了整整五章来勾勒出Neo语言的模样。可以说,它纠正了JavaScript的所有先天缺陷。