BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

社区质疑TypeScript与编译为JavaScript的语言

| 作者 Harry Brumleve 关注 1 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2012年10月31日. 估计阅读时间: 9 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

微软近期发布了编程语言TypeScript,这在JavaScript社区引起了轩然大波。来自雷德蒙德的这一新生事物会将一种专有的、类型安全的语言解释为JavaScript,从而使开发者能够利用JavaScript的功能,同时降低了掌握JavaScript语言本身的必要性。软件社区对这门新语言反应各异,有些人欣然接受以TypeScript的方式编写类型安全的JavaScript,而其他人则质疑所有编译成JavaScript(Compile-to-JavaScript)的语言是否有必要存在。

最初,随着TypeScript的发布,如DevProConnections等很多和.Net比较友好的新闻媒体做了大量宣传。DevProConnections网站的定期撰稿人Michael K. Campbell对于TypeScript的未来表现出了公正但更显积极的立场。Campbell总结到,这种应用开发风格代表着JavaScript在逻辑上已经成熟,可以将TypeScript的发布看作一次正式宣告,JavaScript已经安全地从浏览器进入桌面与后台服务的开发领域。

我忍不住想象TypeScript的光明未来。当我想到相对于支持API的后端Web服务(如 Microsoft's ASP.NET Web API framework),Web开发日益向重度依赖具有动态页内渲染能力的JavaScript的架构发展,我就对TypeScript的未来特别兴奋。

有的开发者希望利用JavaScript,而又不想投入太多时间。这些开发者发现,吸引他们采用TypeScript的原因并不是只有类型安全性。TypeScript提供了一种基于类的面向对象编程模型,这吸引了一些C#和Java风格语言的开发者。英格兰柴郡的一位软件开发者Danny Tuppeny写到,TypeScript的这一特性让他可以利用JavaScript的功能,而不需要掌握基于原型的面向对象语言的相关基础知识。

我对程序集或IL并没有太多了解。当然,某些情况下多了解一些会很有用,但是相对于把时间投入到我日常使用的C#或其他技能上,投入到程序集或IL上真的值得吗?

如果TypeScript能帮我拼装JavaScript的子类原型,就算我自己不会用JavaScript实现,这有什么关系吗?没关系。理解生成的代码对我有帮助吗?当然有。但这是必须的吗?并不是。重要的是理解它是如何工作的以及有何限制。同样道理,编写C#代码时我也不需要百分之百地理解生成的IL。

不过,TypeScript只是编译为JavaScript的一族开发语言中的最新成员。 去年出现的Dart绕过了JavaScript的缺点,而且带来了健壮性更好、生产力更高的Web开发体验。相对于JavaScript,这两种语言的语法都更为健壮,如都具有类型安全性;它们的相似性远远不是一个是另一个的山寨这么简单。

微软的Web开发者工具架构师Scott Hanselman在推销TypeScript的同时也质疑将它与Dart对比的必要性,他指出这两种语言是以不同方式开发的,而且其核心也存在根本差异。

有人拿TypeScript与Dart对比,这就像拿苹果跟化油器比。TypeScript构建于JavaScript之上,因此没有JS互操作问题。而Dart是一个从头开始设计的原生虚拟机。Dart可以与JavaScript互操作...但它并不是JS。比如说,Dart中甚至不能使用JavaScript的Number类型。

Dart团队的开发者Shannon -jj Behrens强调了这一区别,并表示欢迎TypeScript加入编译成JavaScript的语言这一大家族。Dart团队认为,因为对JavaScript的依赖,TypeScript采用的是老式的、容易出现编程错误的技术,他们很快就能超越这一竞争者。这也解释了他们为什么要鼓励微软围绕JavaScript代码库继续努力。

现在我们有机会看一下TypeScript,Dart团队非常欢迎TypeScript团队进入这一社区。如果你已经有了规模庞大的JavaScript代码库,或者已在使用Visual Studio,我们认为TypeScript对你的项目是很好的补充。

并不是所有的人都认同替换JavaScript或者用不同的语言来包装JavaScript的理念。NCZonline.net的Web工程师和博主Nicholas C. Zakas质疑到,如果把同样的精力投入到JavaScript上可以得到一样的结果,那编译为JavaScript的语言是否值得学习呢。

我认为编译为JavaScript的语言是实现这一目标的障碍。我们应该说服更多的人来学习JavaScript,而不是给他们更多去选择放弃JavaScript。我常常在想,如果所有的团队和公司将花费在这些替代品上的时间、精力、人力和金钱都用在改进JavaScript及其教学上,情况会怎么样呢?

Yahoo的高级UI原型设计师Marco van Hylckama回应到,他感觉很多JavaScript开发者宁可将精力放在那些干脆抛弃JavaScript的现有技术上,也不愿意努力学习JavaScript语言本身。Hylckama在其Twitter账号上质疑TypeScript和编译成JavaScript的这类语言的必要性。

不,不... http://www.typescriptlang.org/ 到底为什么我要用另一种语言编写代码再将其编译为JavsScript呢?

位于伦敦的一家UI开发公司——Neave Interactive——通过其Twitter账户从另一个角度探讨了这一主题,该公司质疑是否对JavaScript的学习困难到要使用替代品或通过其他编译为JavaScript的语言来抽象的地步了:

JavaScript真的这么可怕吗?先是CoffeeScript、Dart,现在又来了TypeScript。

虽然所有的支持者、批评者和竞争者都在表达自己的观点,但毋庸置疑的是,TypeScript在软件开发领域正越来越受欢迎。目前人们认为JavaScript不仅是一种可行的Web前端解决方案,也能用于创建桌面应用程序,还能开发可靠的服务端产品。OSS Watch的作者之一Mark Johnson指出,JavaScript使用场景的增加很可能会加剧对JavaScript开发者的需求,而且随着这种需求的上升,TypeScript和Dart等语言的使用机会也相应增长

随着支持使用JavaScript编写跨平台的游戏和应用的工具的增多,以及像Windows 8和Open WebOS这样的平台将Web技术推向桌面,对于TypeScript所提供特性的需求只会越来越多。

查看英文原文Community Questions TypeScript and Compile-to-JavaScript Languages


感谢侯伯薇对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

javascript有这么难么? by 颂 赞

一群闲着无聊的人搞coffeescript、dart、typescript,我想问下各位:javascript有这么难学么?

Re: javascript有这么难么? by 颂 赞

我赞同Nicholas C. Zakas的质疑!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT