Ycombinator上也在讨论,我看了一遍Channel9上大神安德森上的介绍,发现 TypeScript 强调 Type Safe,Interface 以及自动完成,配合 VS.NET 真的不错,不过貌似这些都和 Ruby on Rails 的 Duck Typing,最小 api,无自动完成 vim/emacs/sublime code typing 的精神背道而驰啊?
比较纠结,不知道到底现在应该学用 CoffeeScrip 还是这个 TypeScript ……
#10 楼 @ericguo 我明白你的意思,我只是不明白的是把 CoffeeScript 跟 TypeScript 比对,这两个东西应该不是一个层面的东西,不太有可比性。
类比 Haml/Slim 和 ERB 的关系,如果对 ERB 很熟悉,那么你在写每一行 Haml 的时候,你的脑子里面已经知道这行代码被翻译成 ERB 或者最终输出的 HTML 会是什么样子。我一直认为 Haml / CoffeeScript / Sass / Scss / Less 就是这样一种东西:如果你很熟悉 HTML 或者 JavaScript 或者他们最终生成的那个东西,那么你只需要了解编译器的代码转换规则,然后就可以开始干活了,因为你知道你写的每一行代码会被编译器编译出来是什么。这样的东西学习成本都不高,大概一个下午足够了。
我在想你说你 CoffeeScript 不熟,还在学习,但是学习成本肯定比 TypeScript 高,是因为你每写一行 CoffeeScript,都不知道最终产生的 JavaScript 代码长什么样子么?还是看不懂最终生成的 JavaScript 代码?
TypeScript 则完全不是跟 CoffeeScript 等同的东西,他的目的是解决 JavaScript 在大型项目中的代码组织,提供了 IDE 友好的 OO 机制,已达到能舒舒服服的在 Visual Studio 里面做前端开发的目的。当我第一次看到这个的时候,我脑子里面想的是另外一个东西,M$ 从来没有靠直接销售 C# 这样的语言赚钱,语言都是免费的,但是他们的 IDE 很赚钱。如果前端开发人员能通过某种方式,用某种语言在 M$的 IDE 里面开发,那么他们就又可以赚一票了。
#6 楼 @franky_xhl Borland 传奇 我读过,我想要看清未来,必须了解历史。现在很少有人再提到 Com 了^_^。
#10 楼 @ericguo CoffeeScript 学习成本很低,不信你学学看。(我基本上没学过,就看了几眼例子)http://coffeescript.org/
#11 楼 @lgn21st 我觉得 CoffeeScript 和 TypeScript 是一个层面的, 因为他们的初衷是一样的,只是他们的手段不同, 他们的初衷是都是,用更优秀的新语法 替代 不够优秀的 JS 语法。 不同的是 CoffeeScript 依然是动态的解释型语言,而 TypeScript 是静态的编译型语言。 静态语言的优点之一就是 可以配合强大的 IDE 使用。 动态语言的优点之一就是 可以让代码更少。
MS 的开发文化,是以 IDE 为核心,这点我也很喜欢。 而且我觉得,目前,静态语言 和 IDE 的结合,可以把双方的优点发挥到极致。 由此让我想起了 全真剑法 和 玉女剑法 的 <<双剑合璧>>
唉,感叹 Ruby 如此强大,却找不到一个等同的工具,使其发挥至极致。 变化末测,难以驾驭。 难道这就是动态语言的宿命, 注定要孤独一世吗?
#11 楼 @lgn21st 我也想到了,TypeScript 其实还是为 IDE 服务的,自动完成(静态强类型)一直是.NET 和 Java 的特点,从这个角度看 Rails 程序员应该还是会继续使用 CoffeeScript 的,毕竟选择了 Ruby 就是选择了 Duck Typing 和动态类型。
不过你的另外一个观点我倒是不赞成,过去有一个说法,一个优秀的 C 语言程序员能够想象出他写的 C 代码最终会变成什么样的汇编语句,和你说的
在写每一行 Haml 的时候,你的脑子里面已经知道这行代码被翻译成 ERB 或者最终输出的 HTML 会是什么样子。
其实是一个意思,但是我倒是认为,如无必要,勿加抽象层,或者说:要加抽象层,那么新加的抽象层必须完全能够使被抽象的那个东西对用户透明。所以对于 Haml 我是不会用的,我不怕多打字,但怕在写 Haml 的时候还要不停地想 HTML 长啥样子…… 对于 Scss 我肯定会用,因为写的时候不需要想 css 长啥样了,很好用。但是对于 CoffeeScript 或者说 TypeScript,我只能说比较纠结……
#16 楼 @jjym 我和你一样,也是离开了自动完成和类型检查貌似就不会写代码了,不过现在想想其实太依赖这些 IDE 功能也不是好事,有些东西还是直接背出比较省事,当然前提是这个东西不会老变(这里吐槽一下微软每隔几年就变 API 变框架的恶心行径……)
@ery 你回帖速度还是真快,动态静态肯定是各有千秋,我最好是用动态语言,有静态检查和自动完成,然后还有 Ruby 这样的元编程能力,然后最好还不用我担心运行速度,然后还是完全免费的……
当然这个有点贪心,其实免费对我来说最重要,所以我肯定还是会继续 Rails 的,至于 CoffeeScript,等待有人给我更加充分的理由使用它吧……
#12 楼 @jjym 我大概除了写 Java 的时候需要 Eclipse,其他所有的日常开发工作都不依赖 IDE,所以也就没有 IDE 情结吧。
#14 楼 @jeffz 原来是这样,受教了,是我主观臆断了。M$ 对 JS 生态环境贡献一个新的语种,一定会对整个生态环境带来影响,是好事情,应该欢迎。
#21 楼 @ericguo 我觉得这里是我们两个对待 CoffeeScript 的观点不同,我呢,是必须要弄明白引擎盖子下面发生的事情,如果用了 CoffeeScript,就一定要弄明白生成的目标代码是什么,遇到问题也是去目标代码中查找,然后在回过头来修改 CoffeeScript,起初大脑中会有个 transition 的过程,会有点不适应,但是好像很快就会过了这个阶段,通常不会超过一周,现在我看着 JavaScript 去调整 CoffeeScript 已经觉得非常自然了。
那天看了看 Type 的语法,还是跟 JS 老样子,单从语法层面来说,我觉得在 JS 上加一层编译是不错的选择,可以提高码字的效率以及提高排错的效率。另外 Coffee 提供的语法糖也是很好的东西。