我是一名刚刚接触 Ruby 和 RoR 的开发者,之前参与的项目大多和 c++,java,oracle 相关,没怎么接触过脚本语言的 web 开发,目前从事 ActionScript 开发,也还是感觉和 php 这类相差太远。最近刚刚看完 RoR Tutorial 那本网上教程,大概是缺乏基础,有点无所适从,看来得从更基本的学起,与新手共勉,望高手指点,谢谢。
今年年初时决定学习一下 Web 开发方面的知识,因为对 Ruby 早有耳闻,所以很自然地就选择了 Ruby on Rails 作为目标。在网上看到 Ruby on Rails Tutorial 的教程,于是就跟着教程,边学边做地把这本书看完了。对 RoR 有了一个大概的了解,包括框架结构和开发流程,还有一些常用的 Gems,确实是一本不错的实践入门书。
一开始时看的是英文原版,阅读速度缓慢,而我对实践充满热情,迫切希望早点学完自己动手做。恰好发现 Andor Chen 已经翻译了大部分章节,遇到有疑问的地方,就对照英文检查语句和代码。顺便修正一些译文里的错误,然后发送 pull request 让作者合并。
这本书和以前看的 Flex 入门书——《Flex 3 权威指南》类似,都是以构建一个应用为主线,由浅入深地介绍 RoR 开发的基本知识,从最开始的静态页面到模型生成,控制器,路由,数据库,Ajax,还有贯彻整个开发过程的测试。教程里开发的是一个微博站点,而 Twitter 以前就是使用 RoR 开发的,做起来也饶有趣味。
花了差不多两个月的业余时间看完了这个教程,并最终完成了那个微博网站,包括大部分练习题的功能。总的来说,还是有点挑战的。由于书中大部分都是编写步骤,注重手把手的教学实践。在原理的介绍上篇幅很少,而 RoR 这样“约定优于配置”的理念让我有点不适应,书中并无约定方面的解释,很多方法像变戏法一般地已经实现好了,而我却想一探究竟,搞清楚其幕后的动作。但毕竟这是一本入门书,或许是我要求太高了。
我本人对 Ruby 的理解还不够深刻,对很多特性不熟悉,Rails 框架的原理结构也没有去探究。虽然知道怎么用 Rails 怎么去做,但不懂原理,知其然而不知其所以然,颇有空中楼阁的感觉;另外之前工作中少有机会接触 PHP,Ruby 这类脚本语言开发的 Web 服务器程序,再加上对 JavaScript,jQuery,CSS 等 Web 基础的这类技术,疏于研究,现在来看实在是很不应该的。所以用脚本语言做 Web 开发对我而言比较陌生,但感觉入门并不难,假以时日,结合实际项目边做边学应该可以顺利掌握,毕竟这是 Internet 时代。正如约翰·卡马克所说,这个时代远远不同于他那个时代,现在很多信息都可以通过互联网找到,很多问题也可以通过互联网解决,而不是他开始时那样通过报章杂志,学术期刊。
对于 Rails,其性能一直是为人诟病的话题,前几天看到 Robbin 写的一篇提倡 去 Rails 化 的文章,介绍了 Ruby 各 Web 框架和其它技术框架的并发性能测试,Ruby 的性能并不差,但 Rails 并发性能确实不理想。“ruby on rails 作为一个 full-stack 的 web 开发框架,并不适合用来开发 Linkedin 和 Iron.io 的后台 web 服务,从某种意义上来说,属于 rails 的时代已经过去了。” “总之 Rails 适合开发 Website,但不太适合 Web Service,而移动时代的发展趋势就是:未来服务器端会更多的使用 Web Service 而不是 Website,这也意味着 Rails 将越来越不适合时代的发展。”缺点显而易见,但是优点早已众人皆知。因此理性地做好技术选型,合理用好手中的技术才是比较实际的做法。
我想,下面该做的就是重新学习 Ruby 语言,然后再研究下 JavaScript,CSS 等 Web 基础,接下来再看看 Web 开发方面的框架,Rails,Sinatra,Padrino 或者 研究 PHP/Python 也说不定。