Dart、coffeescript es6、TypeScript 和 JavaScript 哪种最适合专门...

TIOBE 2014年10月编程语言排行榜:前三甲持稳不变,谷歌Dart语言进入Top 20
招聘信息:
TIOBE最近刚刚发布了10月编程语言排行榜,C、Java以及Objective-C排名与上月持衡,依旧位于排行榜的前三名。本月较为明显的是谷歌的Dart编程语言,该语言首次跻身Top 20榜单,排在了17位。谷歌于2011年推出的Dart编程语言被认为是JavaScript的继任者。Dart编程语言的竞争对手 CoffeeScript (排在133位)和TypeScript (排在122位)情况一般。
2011年年底时候谷歌推出了新编程语言Dart,在发布最初该语言排名情况曾一度疲软,工程师们担心其他浏览器不支持Dart,情况也的确如此。不过现在从Dart到JavaScript的编译正日趋成熟,并且声称比手动编写JavaScript更能快速生成代码。这样看来,Dart编程语言的前景似乎还不错。
同时,随着Dart语言排名的上升,JavaScript的排名较此前跌落了不少。
TIOBE Programming Community指数每月发布一次,列出了每月编程语言的受欢迎程度。TIOBE编程语言排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!、百度)以及Wikipedia、Amazon、YouTube统计出排名数据。TIOBE排行榜只反映某种编程语言的热门程度,并不能说明哪一门编程语言是最好的或者不同语言所编写的代码数量多少。
TIOBE编程语言指数可以帮你清楚地知道自己的编程方法是否仍处于上升或者下降状态,也可以帮你决定在下个项目中使用哪种编程语言。(在此点击查看)
2014年10月TIOBE编程语言排行榜:Top 20
2014年10月TIOBE编程语言排行榜:Top 21-50
Top 10编程语言排行榜长期走势()
Top 10编程语言排行榜更长期走势()(注:该位次是12个月的平均值)
年度编程语言()
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量13553点击量12799点击量12306点击量7671点击量7620点击量6186点击量5253点击量4771点击量4503
&2016 Chukong Technologies,Inc.
京公网安备89我知道原生的JS是一定要学的,但前面三种我应该专研哪种好呢?
有些人学习了一门新的语言的语法,然后继续用自己熟悉的方式去写代码。有些人学习语言的时候,学习的这门语言设计的意图,寻找这种语言编程(抽象和表达)的感觉。CoffeeScript 的作者带给我们声明式的语法。函数式 (functional) 编程是声明式 (declarative) 编程的一种方式。所以使用 CoffeeScript 我们可以体会这些编程泛型的表达方式,减少副作用。这是学习 CoffeeScript 最大的意义。减少逗号、括弧这些只是增强表达能力的一些副作用而已(这句话只是玩笑)。CoffeeScript 的很多语法,list-comprehension, ranging, destructive-assignment, every statements has return 都是从声明式语言里面学习的概念(尤其是 Haskell)。其余的几个语言更多的是从工程的角度去优化 javascript 的一些问题,而不是指引你用新的方式去构建你的程序。但是他们和 coffeescript 在一点是相同的,他们都属于
Jeremy Ashkenas 有个很好的视频介绍了这个概念
,就是通过翻译在一种语言上面构建另外一种语言,两者可以相互转换。这是一种趋势。不过回到前面说的那个点,很重要的地方在于学习一门语言你得到什么。学会他的设计意图是一个很好的理由。所以我个人推荐在这三者里面选择 CoffeeScript。Update at 26 Nov 2014:今年我对这几个语言又有了新的认识,因为组里有几个 Functional Programming 大牛 Erik Meijer 的学生来实习,他们都力挺强类型。我们一起讨论了 TypeScript 和 Dart 的现状,其中 TypeScript 是微软这个充满 Language Nerd 的公司的一个产品,从类型系统来说是这几个里面最好的。但是我的朋友主要抱怨的是 TypeScript compiler 实在太慢了,会慢到影响开发效率的地步。Dart 依然还是怪怪的。而且 Dart 和 TypeScript 对混合语言项目的支持不太好,他们的 Build Chain 不太容易和其它 Build 系统交织在一起。这一方面容易 vendor lock,另一方面也难以实现逐步迁移。coffeescript 在今年热度已经下降了。因为 vanila javascript 和 ES6 transcompiler 越来越流行?而且 CoffeeScript 的一些偏 ruby 语法可能对于那些后知后觉但是行动扎实的程序员(我其实是描述"早期实践者 - early adopter" 相反的 "后期实践者 - late adopter")并不友好,所以新进选择 coffeescript 的人少于其它几个技术。coffeescript 里面借鉴了 Haskell 的一些概念,然后照猫画虎的实现了一些很不错的功能。但是实际上这些翻译从概念上不算正确。所以想要真的学会强类型的 functional programming,推荐还是去直接学习 Haskell。再有我现在非常认同 Facebook 团队对前段发展方向的判断。尽量使用 ES6/ES7 然后 transcompile 回去。如果想要强类型检查,尽量使用无侵入的方案,或者是可选的方案,Facebook 的 Flow 就是一个很好的方案,这样可以保证最好的库兼容性。在前端架构方面还有 Flux 这个架构,还有 React 这个 immutable 的库。这些都是极好的方向,我会尽量把他们也应用到我工作中的。Update at 8 Apr 2013:Dart 内置的 Packaging 是一种很好的趋势,我们真心需要一种语言级别内置的 one stop 的 module/packaging tool(我看到 hax 同学曾经和 Douglas C 大神对峙过这个问题,很好玩)。而且 Dart 的目的是跳过翻译的步骤,以后直接在浏览器里面嵌入一个 Dart 解释引擎与 V8 并行,可以达到更好的效率。Dart 和 TypeScript 都尝试在 Javascript 上面增加 Type 信息,这样就可以在运行时极大的优化代码的效率,所以对于工程上是非常有意义的。还有一个非常有意思的东西是 asm.js,他是 javascript 的子集,而且也有类型。它让基于 llvm 的 c-javascript 和 javascript-c cross compiling 成为可能,这可以实现你写 c 但是让你的程序在 javascript interpreter/vm 里面执行,或者让你的 javascript 程序利用 llvm 实现优化。最近 Mozilla 展示的浏览器里面的 Unreal Engine 就利用了它。这个技术对于 c/c++ 占统治地位的游戏行业非常重要,所以值得高度关注。它们走了 Chrome 的 NaCL (盐,一种 native extension,用来实现高效的在浏览器运行图形应用)完全不同的路线,非常巧妙!大家要高明白很多高级语言存在的意义在于更好的表达能力,而不完全是性能为主的。所以我们可以让 javascript 更加高级,这样的路线就会有 ClojureScript 或者 Coffeescript 都可以归作声明式(declarative)的尝试,而增加 type 倾向于编译期优化的这些语言,他们从工程角度增强 javascript。所以大家还是要问这个问题,code for fun 还是 code for 饭。如果你的兴趣是实现一个更好的工业强度的语言,那么可以关注 Dart,或者 TypeScript。如果你想看看如何嫁接一些表达方式更加不同的语言,那么 coffeescript 是非常好的选择。
直接上 ES6/ES7。JavaScript 在 ES6/ES7 后能支持众多这些语言的优势,那就没必要去学这些语言了。浏览器最终是要支持 ES6/ES7 的,所以知识不可能过时,只是你要保持对未定稿标准的关注而已。&br&&br&浏览器不完全支持没所谓,有各种工具能把 ES6/ES7 代码变为浏览器能执行的 ES5。你可以去看看 Facebook 开源项目如 jstransform、regenerator、recast。&br&&br&顺便说一句,美国大公司都有人参加 TC-39,也就是制定 ES 的会议。中国公司如果继续停留在使用但不参与制定标准的水平,那就是永远追赶永不超越。
直接上 ES6/ES7。JavaScript 在 ES6/ES7 后能支持众多这些语言的优势,那就没必要去学这些语言了。浏览器最终是要支持 ES6/ES7 的,所以知识不可能过时,只是你要保持对未定稿标准的关注而已。浏览器不完全支持没所谓,有各种工具能把 ES6/ES7 代码变为浏览…
既然反正已经这么乱了。。。&br&我觉得你应该尝试一下ClojureScript。。。
既然反正已经这么乱了。。。我觉得你应该尝试一下ClojureScript。。。
已有帐号?
无法登录?
社交帐号登录
理想主义者,完美主义者,前后端Web程序员,Beijing Open Party组织者,a.k.a. Tin,diamondtin我知道原生的JS是一定要学的,但前面三种我应该专研哪种好呢?
之前一直没接触过Web开发,一个月前项目要求做一个不太复杂的Web,同时看Dart和JS,现在基于Dart的实现已经基本成型了,它的好处首先是前后端统一,整个学习成本比前端用JS,后端用ROR,PHP之类的小很多,辅助工具和文档质量高,适合短期内快速上手这种场景。
有些人学习了一门新的语言的语法,然后继续用自己熟悉的方式去写代码。&br&有些人学习语言的时候,学习的这门语言设计的意图,寻找这种语言编程(抽象和表达)的感觉。&br&&br&CoffeeScript 的作者带给我们声明式的语法。函数式 (functional) 编程是声明式 (declarative) 编程的一种方式。所以使用 CoffeeScript 我们可以体会这些编程泛型的表达方式,减少副作用。这是学习 CoffeeScript 最大的意义。减少逗号、括弧这些只是增强表达能力的一些副作用而已(这句话只是玩笑)。CoffeeScript 的很多语法,list-comprehension, ranging, destructive-assignment, every statements has return 都是从声明式语言里面学习的概念(尤其是 Haskell)。&br&&br&其余的几个语言更多的是从工程的角度去优化 javascript 的一些问题,而不是指引你用新的方式去构建你的程序。但是他们和 coffeescript 在一点是相同的,他们都属于 &a href=&///?target=http%3A//c2.com/cgi/wiki%3FSymbioticLanguages& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Symbiotic Languages&i class=&icon-external&&&/i&&/a& Jeremy Ashkenas 有个很好的视频介绍了这个概念 &a href=&///?target=http%3A///dotjs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&dotJS. Symbiotic Languages&i class=&icon-external&&&/i&&/a& ,就是通过翻译在一种语言上面构建另外一种语言,两者可以相互转换。这是一种趋势。&br&&br&不过回到前面说的那个点,很重要的地方在于学习一门语言你得到什么。学会他的设计意图是一个很好的理由。所以我个人推荐在这三者里面选择 CoffeeScript。&br&&br&Update at 26 Nov 2014:&br&&br&今年我对这几个语言又有了新的认识,因为组里有几个 Functional Programming 大牛 Erik Meijer 的学生来实习,他们都力挺强类型。我们一起讨论了 TypeScript 和 Dart 的现状,其中 TypeScript 是微软这个充满 Language Nerd 的公司的一个产品,从类型系统来说是这几个里面最好的。但是我的朋友主要抱怨的是 TypeScript compiler 实在太慢了,会慢到影响开发效率的地步。Dart 依然还是怪怪的。而且 Dart 和 TypeScript 对混合语言项目的支持不太好,他们的 Build Chain 不太容易和其它 Build 系统交织在一起。这一方面容易 vendor lock,另一方面也难以实现逐步迁移。&br&&br&coffeescript 在今年热度已经下降了。因为 vanila javascript 和 ES6 transcompiler 越来越流行?而且 CoffeeScript 的一些偏 ruby 语法可能对于那些后知后觉但是行动扎实的程序员(我其实是描述&早期实践者 - early adopter& 相反的 &后期实践者 - late adopter&)并不友好,所以新进选择 coffeescript 的人少于其它几个技术。coffeescript 里面借鉴了 Haskell 的一些概念,然后照猫画虎的实现了一些很不错的功能。但是实际上这些翻译从概念上不算正确。所以想要真的学会强类型的 functional programming,推荐还是去直接学习 Haskell。&br&&br&再有我现在非常认同 Facebook 团队对前段发展方向的判断。尽量使用 ES6/ES7 然后 transcompile 回去。如果想要强类型检查,尽量使用无侵入的方案,或者是可选的方案,Facebook 的 Flow 就是一个很好的方案,这样可以保证最好的库兼容性。在前端架构方面还有 Flux 这个架构,还有 React 这个 immutable 的库。这些都是极好的方向,我会尽量把他们也应用到我工作中的。&br&&br&Update at 8 Apr 2013:&br&&ul&&li&Dart 内置的 Packaging 是一种很好的趋势,我们真心需要一种语言级别内置的 one stop 的 module/packaging tool(我看到 hax 同学曾经和 Douglas C 大神对峙过这个问题,很好玩)。而且 Dart 的目的是跳过翻译的步骤,以后直接在浏览器里面嵌入一个 Dart 解释引擎与 V8 并行,可以达到更好的效率。Dart 和 TypeScript 都尝试在 Javascript 上面增加 Type 信息,这样就可以在运行时极大的优化代码的效率,所以对于工程上是非常有意义的。&/li&&li&还有一个非常有意思的东西是 asm.js,他是 javascript 的子集,而且也有类型。它让基于 llvm 的 c-javascript 和 javascript-c cross compiling 成为可能,这可以实现你写 c 但是让你的程序在 javascript interpreter/vm 里面执行,或者让你的 javascript 程序利用 llvm 实现优化。最近 Mozilla 展示的浏览器里面的 Unreal Engine 就利用了它。这个技术对于 c/c++ 占统治地位的游戏行业非常重要,所以值得高度关注。它们走了 Chrome 的 NaCL (盐,一种 native extension,用来实现高效的在浏览器运行图形应用)完全不同的路线,非常巧妙!&/li&&li&大家要高明白很多高级语言存在的意义在于更好的表达能力,而不完全是性能为主的。所以我们可以让 javascript 更加高级,这样的路线就会有 ClojureScript 或者 Coffeescript 都可以归作声明式(declarative)的尝试,而增加 type 倾向于编译期优化的这些语言,他们从工程角度增强 javascript。&/li&&li&所以大家还是要问这个问题,code for fun 还是 code for 饭。如果你的兴趣是实现一个更好的工业强度的语言,那么可以关注 Dart,或者 TypeScript。如果你想看看如何嫁接一些表达方式更加不同的语言,那么 coffeescript 是非常好的选择。&/li&&/ul&
有些人学习了一门新的语言的语法,然后继续用自己熟悉的方式去写代码。有些人学习语言的时候,学习的这门语言设计的意图,寻找这种语言编程(抽象和表达)的感觉。CoffeeScript 的作者带给我们声明式的语法。函数式 (functional) 编程是声明式 (declarative…
直接上 ES6/ES7。JavaScript 在 ES6/ES7 后能支持众多这些语言的优势,那就没必要去学这些语言了。浏览器最终是要支持 ES6/ES7 的,所以知识不可能过时,只是你要保持对未定稿标准的关注而已。&br&&br&浏览器不完全支持没所谓,有各种工具能把 ES6/ES7 代码变为浏览器能执行的 ES5。你可以去看看 Facebook 开源项目如 jstransform、regenerator、recast。&br&&br&顺便说一句,美国大公司都有人参加 TC-39,也就是制定 ES 的会议。中国公司如果继续停留在使用但不参与制定标准的水平,那就是永远追赶永不超越。
直接上 ES6/ES7。JavaScript 在 ES6/ES7 后能支持众多这些语言的优势,那就没必要去学这些语言了。浏览器最终是要支持 ES6/ES7 的,所以知识不可能过时,只是你要保持对未定稿标准的关注而已。浏览器不完全支持没所谓,有各种工具能把 ES6/ES7 代码变为浏览…
已有帐号?
无法登录?
社交帐号登录我知道原生的JS是一定要学的,但前面三种我应该专研哪种好呢?
直接上 ES6/ES7。JavaScript 在 ES6/ES7 后能支持众多这些语言的优势,那就没必要去学这些语言了。浏览器最终是要支持 ES6/ES7 的,所以知识不可能过时,只是你要保持对未定稿标准的关注而已。浏览器不完全支持没所谓,有各种工具能把 ES6/ES7 代码变为浏览器能执行的 ES5。你可以去看看 Facebook 开源项目如 jstransform、regenerator、recast。顺便说一句,美国大公司都有人参加 TC-39,也就是制定 ES 的会议。中国公司如果继续停留在使用但不参与制定标准的水平,那就是永远追赶永不超越。
有些人学习了一门新的语言的语法,然后继续用自己熟悉的方式去写代码。&br&有些人学习语言的时候,学习的这门语言设计的意图,寻找这种语言编程(抽象和表达)的感觉。&br&&br&CoffeeScript 的作者带给我们声明式的语法。函数式 (functional) 编程是声明式 (declarative) 编程的一种方式。所以使用 CoffeeScript 我们可以体会这些编程泛型的表达方式,减少副作用。这是学习 CoffeeScript 最大的意义。减少逗号、括弧这些只是增强表达能力的一些副作用而已(这句话只是玩笑)。CoffeeScript 的很多语法,list-comprehension, ranging, destructive-assignment, every statements has return 都是从声明式语言里面学习的概念(尤其是 Haskell)。&br&&br&其余的几个语言更多的是从工程的角度去优化 javascript 的一些问题,而不是指引你用新的方式去构建你的程序。但是他们和 coffeescript 在一点是相同的,他们都属于 &a href=&///?target=http%3A//c2.com/cgi/wiki%3FSymbioticLanguages& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Symbiotic Languages&i class=&icon-external&&&/i&&/a& Jeremy Ashkenas 有个很好的视频介绍了这个概念 &a href=&///?target=http%3A///dotjs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&dotJS. Symbiotic Languages&i class=&icon-external&&&/i&&/a& ,就是通过翻译在一种语言上面构建另外一种语言,两者可以相互转换。这是一种趋势。&br&&br&不过回到前面说的那个点,很重要的地方在于学习一门语言你得到什么。学会他的设计意图是一个很好的理由。所以我个人推荐在这三者里面选择 CoffeeScript。&br&&br&Update at 26 Nov 2014:&br&&br&今年我对这几个语言又有了新的认识,因为组里有几个 Functional Programming 大牛 Erik Meijer 的学生来实习,他们都力挺强类型。我们一起讨论了 TypeScript 和 Dart 的现状,其中 TypeScript 是微软这个充满 Language Nerd 的公司的一个产品,从类型系统来说是这几个里面最好的。但是我的朋友主要抱怨的是 TypeScript compiler 实在太慢了,会慢到影响开发效率的地步。Dart 依然还是怪怪的。而且 Dart 和 TypeScript 对混合语言项目的支持不太好,他们的 Build Chain 不太容易和其它 Build 系统交织在一起。这一方面容易 vendor lock,另一方面也难以实现逐步迁移。&br&&br&coffeescript 在今年热度已经下降了。因为 vanila javascript 和 ES6 transcompiler 越来越流行?而且 CoffeeScript 的一些偏 ruby 语法可能对于那些后知后觉但是行动扎实的程序员(我其实是描述&早期实践者 - early adopter& 相反的 &后期实践者 - late adopter&)并不友好,所以新进选择 coffeescript 的人少于其它几个技术。coffeescript 里面借鉴了 Haskell 的一些概念,然后照猫画虎的实现了一些很不错的功能。但是实际上这些翻译从概念上不算正确。所以想要真的学会强类型的 functional programming,推荐还是去直接学习 Haskell。&br&&br&再有我现在非常认同 Facebook 团队对前段发展方向的判断。尽量使用 ES6/ES7 然后 transcompile 回去。如果想要强类型检查,尽量使用无侵入的方案,或者是可选的方案,Facebook 的 Flow 就是一个很好的方案,这样可以保证最好的库兼容性。在前端架构方面还有 Flux 这个架构,还有 React 这个 immutable 的库。这些都是极好的方向,我会尽量把他们也应用到我工作中的。&br&&br&Update at 8 Apr 2013:&br&&ul&&li&Dart 内置的 Packaging 是一种很好的趋势,我们真心需要一种语言级别内置的 one stop 的 module/packaging tool(我看到 hax 同学曾经和 Douglas C 大神对峙过这个问题,很好玩)。而且 Dart 的目的是跳过翻译的步骤,以后直接在浏览器里面嵌入一个 Dart 解释引擎与 V8 并行,可以达到更好的效率。Dart 和 TypeScript 都尝试在 Javascript 上面增加 Type 信息,这样就可以在运行时极大的优化代码的效率,所以对于工程上是非常有意义的。&/li&&li&还有一个非常有意思的东西是 asm.js,他是 javascript 的子集,而且也有类型。它让基于 llvm 的 c-javascript 和 javascript-c cross compiling 成为可能,这可以实现你写 c 但是让你的程序在 javascript interpreter/vm 里面执行,或者让你的 javascript 程序利用 llvm 实现优化。最近 Mozilla 展示的浏览器里面的 Unreal Engine 就利用了它。这个技术对于 c/c++ 占统治地位的游戏行业非常重要,所以值得高度关注。它们走了 Chrome 的 NaCL (盐,一种 native extension,用来实现高效的在浏览器运行图形应用)完全不同的路线,非常巧妙!&/li&&li&大家要高明白很多高级语言存在的意义在于更好的表达能力,而不完全是性能为主的。所以我们可以让 javascript 更加高级,这样的路线就会有 ClojureScript 或者 Coffeescript 都可以归作声明式(declarative)的尝试,而增加 type 倾向于编译期优化的这些语言,他们从工程角度增强 javascript。&/li&&li&所以大家还是要问这个问题,code for fun 还是 code for 饭。如果你的兴趣是实现一个更好的工业强度的语言,那么可以关注 Dart,或者 TypeScript。如果你想看看如何嫁接一些表达方式更加不同的语言,那么 coffeescript 是非常好的选择。&/li&&/ul&
有些人学习了一门新的语言的语法,然后继续用自己熟悉的方式去写代码。有些人学习语言的时候,学习的这门语言设计的意图,寻找这种语言编程(抽象和表达)的感觉。CoffeeScript 的作者带给我们声明式的语法。函数式 (functional) 编程是声明式 (declarative…
既然反正已经这么乱了。。。&br&我觉得你应该尝试一下ClojureScript。。。
既然反正已经这么乱了。。。我觉得你应该尝试一下ClojureScript。。。
已有帐号?
无法登录?
社交帐号登录
上知乎,求欢乐}

我要回帖

更多关于 dart vs typescript 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信