在今天举行的 RubyConfChina 2012 大会上,Ruby 语言之父松本行弘(Yukihiro “Matz” Matsumoto,@yukihiro_matz)第四次来到中国参加大会,为大家带来了一场名为《Be a language designer》的主题演讲,分享了作为语言设计者的心得,还带来了 mruby 与 Ruby 2.0 的最新信息。
Ruby 诞生于 1993 年 2 月 24 日,Matz 只是出于兴趣,对编程语言的热爱,开发了 Ruby,当时是一个 Unix 的脚本语言,但是,当时很多人对 Ruby 并不感冒,因为已经有了 Perl。Matz 并没有放弃,因为他相信只有不断挑战才能成功:
Only chanllege again and again will bring you the success.
他提到了三个能在 IT 时代生存下来的角色,其中之一就是语言的设计者,他在场做了简单的调查,与会者中没有语言的设计者,仅有一位语言的实现者。Matz 例举了一些知名语言的发明者——Perl、Python 等等,有兴趣的人可以去访问 language inventor or serial killer? 这个网站。他告诉大家,其实开发一门语言并没有大家想象的这么难。每个开发者平时设计的代码、API 和接口其实都是一门“语言”。语言就是用来进行交流沟通的,他举了个例子,Ruby 甚至能用于人与人的交流。
人人都能成为语言的设计者,只要关心你身边的人,关心你自己,关心你的未来。Ruby 的热心布道者 Dave Thomas 说过:
Programming is a process of designing your own dsl.
因此,如果想要设计一门语言,不妨先从 DSL 写起,用它来构建你的应用程序,从内部 DSL 写起,慢慢发展为外部 DSL,这成就了著名的 Ruby on Rails。
作为 Ruby 之父,Matz 亲手重新实现了 Ruby,这就是 mruby。mruby 可以算是 Ruby 的一个子集,它在语法上完全兼容 Ruby 1.9,非常小巧精悍(<500K),适用于嵌入式环境,提供了软实时,能够运行于小型设备(比如 SAKURA Board)中,甚至嵌入在别的语言或者应用之中。Matz 介绍了几个与 mruby 相关的项目:
- MobiRuby——mruby for iOS
- mruby for Android 仍在开发之中
- mod_mruby——Apache mruby Extension
- mruby_nginx——Nginx mruby Extension
- mruby-libuv——适用于 mruby 的异步 I/O
mruby 的应用非常广泛,能被用于各种智能设备上,比如能够被用于太阳能面板控制器、智能网络路由、自动售货机控制器甚至汽车上,它同样能用来开发游戏和编辑器。Matz 表示,如果有人用 mruby 开发了一款编辑器,那么他原因抛弃使用多年的 emacs,使用这款编辑器。
2013 年是 Ruby 诞生 20 周年的日子,在日本 20 岁算是成年,因此 Ruby 2.0 将于 2013 年 2 月 24 日发布。从 2001 年第一次公开讲到 Ruby 2.0,10 年后,它终于要与人们见面了。此次 Ruby 2.0 带来了大量重大变化,他重点例举了以下四个:
第一,Keyword Formal Argument
def downto(from, to, step:n ) ... end
第二,Enumerable#lazy(下例中使用了 lazy,不会消耗太多内存)
(1..Float::INFINITY).lazy.map {|i| i.to_s }.select {|s| /3/ === s }.first(5)
第三,Module#prepend
class Foo def foo; p :foo; end end module Prepend def foo p :before super p:after end end class Foo prepend Prepend end Foo.new.foo
第四,Refinement
module R refine String do def foo ... end end end "".foo # => error! using R "".foo
在提问环节中,很多与会者都对 mruby 和 Ruby 2.0 表示了浓厚的兴趣。Matz 表示 Ruby 的性能在不断改善之中,2.0 的性能有比较不错的改善,比如 64 位系统里的浮点数性能得到了大大的改善,但是目前还不会考虑多线程方面的优化,mruby 会在不久的未来支持 Fiber;mruby 能运行于各个平台之上,但它不会替代 cruby,也不想代替 cruby,mruby 语法上兼容 1.9,但是由于一些原因,mruby 中还不能很好地使用 c extension。移动领域是下一个重要的战场,Ruby 会在这个方面继续下功夫。
本次大会上 Matz 反复提到想让世界更美好,让 Ruby 更美好,Matz 希望 Ruby 2.0 能成为 Ruby 历史上最好的版本,也希望大家能够积极参与,共同让 Ruby 变得更美好。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论