@
lilydjwg C API 涉及到 Ruby 的实现问题了,这个确实,我有个项目每次升级 Ruby 解释器都要修改 Ruby 头文件,但这个和 Ruby 本身语法没关系。编码问题加个“#encoding:utf-8”基本解决,同样也和本身语法没关系。
我所知道的语法不兼容,唯一一例就是 1.9 之后“case ... when ...”结构里“when”的后面不能再加冒号了。不过加冒号和 “if ... then ...”、“for ... in ...”一样,都是属于照顾其他语言的用法,不是 Ruby 推荐的用法,不支持也好。
翻一下 Ruby 的更新列表,你会发现 Ruby 在早期语法确定以后,后续版本更新里鲜有重大变化,2.0 的关键字参数,也是在兼容原来语法的基础上增加的。Ruby 的每次更新重点几乎都是 VM、GC,今后还会有并发,并发其实还是和 VM 相关。
怎么说,家家有本难念的经吧,Ruby 自由的语法加上元编程的特性,让 Ruby 创造 DSL 的能力独领风骚,所以 Ruby 的开发团队不需要去纠结 Ruby 的语法,你改多了反倒浪费了 Rubist 的创造力,注意力可以全部放在如何让 Ruby 跑更快上面就可以了。
其他语言则是反过来,在实现了一个强大的 VM 之后,如何让语法更完善、开发效率更高就变成了他们的纠结的事情。最明显的例子莫过于 JS,拍黄片弱爆了,JS 才是世界上最好的语言(认真状)。