• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
邹天得
博客园    首页    新随笔    联系   管理    订阅  订阅
CoffeeScript 和 TypeScript 哪个值得更多的学习?

https://www.zhihu.com/question/22804057/answer/22695297

 

作者:vilicvane
链接:https://www.zhihu.com/question/22804057/answer/35918525
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

先看 CoffeeScript 官网第一段话.
CoffeeScript is a little language that compiles into JavaScript. Underneath that awkward Java-esque patina, JavaScript has always had a gorgeous heart. CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way.

很容易就能感受到为什么 CoffeeScript 的作者会创造出这样一门语言. 因为他认为 JavaScript 的代码风格, i.e., 花括号的 C 系风格很诡异. 但这个其实就跟我认为 Python 的风格很诡异是一个道理, 大家习惯的东西不一样罢了.

至于 good parts 和 bad parts. 其实如果真的觉得有什么 bad parts, 不用就是了, 更何况实际上我认为很多时候,,, 有些人 (Douglas) 推崇的代码风格有些 over-strict.

而 TypeScript 的核心是 scalable, 如果经常在 TypeScript 社区混, 会发现他们也很强调工具性, 即详细的接口信息, 这也是静态类型在类型安全之外的好处. 其实到这里就应该清楚, 这两门语言本身设计的目标就是不同的. CoffeeScript 只是换了种语言风格, 加上了一些语法糖, 而 TypeScript 是创造了一个适用于 JavaScript 的静态类型系统.

所以如果你和我一样, 对 Python 风格没有格外的好感, 又熟悉 JavaScript, 那么即使不考虑静态类型也应该选 TypeScript, 毕竟是 JavaScript 的超集, 上手容易. 如果又正好是开发 web app 等代码量相对较大, 模块较多, 或者是多人协作的场景, 那 TypeScript 绝对会让你难以回到原生 JavaScript.

如果确实喜欢 Python 的风格, 也没有打算写大中型 web app, 那或许 CoffeeScript 也是不错的选择.

// 参考: 6 年 web app 开发经验.
发布于 2014-12-26
 
https://www.zhihu.com/question/22323967

视觉上清晰的代码,不一定是执行效率最高的的代码;运行效率高的代码,则未必易于编写和阅读。比较一下 array.forEach 和 for 循环就可以发现这一点。

Coffescript 本身非常简洁,编程时视觉上非常舒服,代码清晰有效。这也是为什么 ES6 和 Swift 都有借鉴 Coffee 的地方。
Coffee 编译出来的 JS 代码可读性差,但是那可都是 JS 最佳实践的编程方式:性能最好,但是最啰嗦。
所以就看你自己的选择了。 GitHub 内部都要求新的 JS 项目都用 Coffee 写呢。
总体来说,视觉上和逻辑上的一致性是未来语言的方向,花括号,分号,甚至函数参数的括号,大部分都是给机器“看”的,不是给人看的。对人友好才是一个语言发展的方向。

很多反对 CoffeeScript 的 JS 程序员为 ES6 添加的各种特性欢呼,例如 Fat Arrow, splat, assignment destruction..., 并且坚定地实践。其实这些都是 Copy 自 Coffee。ES6 用得越多,其实离 Coffee 就越近一步。


作者:沈嵘
链接:https://www.zhihu.com/question/22323967/answer/27578711
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
 
http://www.infoq.com/cn/news/2015/10/CoffeeScript-TypeScript?from=timeline&isappinstalled=1

在网页应用的开发方面,CoffeeScript曾经为广大程序员提供了很好的帮助。然而,微软公司推出的TypeScript正在超越CoffeeScript成为大家的首选。

作为一个在2009年出现的语言,CoffeeScript目前已经十分成熟。它给为用户提供了很多的语法糖以及基于类的继承,却又保证了尽量简洁的语法。而且,其流行程度为团队之间的高效交流提供保证。然而,CoffeeScript也存在一些很难解决的问题。Heap的软件工程师Jiawei Li表示,CoffeeScript至少存在三个方面的缺点。首先,CoffeeScript中的变量初始化和重新赋值很容易出现混淆。由于变量不需要声明,在内层函数新定义的变量可能和已有的外部变量重名,造成程序执行混乱。其次,CoffeeScript中强大的?操作符使得加大了阅读代码的难度。使用?来代替null/undefined的确可以简化代码,但编程人员却使得阅读代码变得困难。最后,CoffeeScript模糊的语法定义使得编译后程序的行为无法掌控。以foo bar and hello world为例,其编译后的结果就可以是foo(bar) && hello(world)或者foo(bar && hello(world))。

Jiawei表示,企业目前对相关编程语言的核心关注点主要集中在两个方面——代码的易读性和易于快速开发。代码易读保证了调试工作可以高效进行;易于开速开发则保证了产品的发布时间。CoffeeScript的缺点正好刺到了企业的痛点。因此,TypeScript一经推出便迅速崛起。

TypeScript的优点包括:支持可选的静态类型和基于类的面向对象编程、内置的类型注解保证了代码编译时的正确性、版本更新速度很快以及支持在第三方JavaScript中增加类型等。尽管TypeScript还存在不成熟的地方(如与ES6的兼容性方面),其特性很好的保证了大规模JavaScript应用开发的效率。未来,TypeScript必然会有进一步更好的表现。

最后,Jiawei也指出了一些TypeScript有待改进的地方。TypeScript还欠缺模式匹配和隐式转换等语言特性。而且,针对变量的取值为null或者undefined的情况,TypeScript还不能很好的进行处理。JiaWei建议,可以添加更多的类型机制来解决该问题。其中包括使用Options来决定是否允许变量为null/undefined、使用Trys来声明事情成功或失败以及使用Futures或Promises来声明异步操作成功或失败等。


感谢徐川对本文的审校。

 
posted on 2017-04-16 13:37  邹天得  阅读(551)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3