摘录了一部分
国人是怎么学 Rails 的呢,可能是这样的。
国人看到篇介绍 Rails 的文章,觉得好炫啊,15 分钟呢,立马动手开始搭建环境,而且肯定是看的中文资料,而不是去官方网站。同时加入某个 QQ 群,因为用的是 Windows,同时也没去找相关文章看,就算找了也因为种种原因,搭建环境肯定失败了,然后在 QQ 群里面问,经过无数人的帮助,终于搞定了在 Windows 下搭建环境的问题。
好,环境搭建好了,开始问大家都用什么工具,用哪个 IDE 好,然后群里各抒己见,火爆非常。他们肯定会选 IDE,因为他们说习惯了,不过不幸的事情还是发生了,用 IDE 还是一路艰辛,各种问题,比如环境变量啊,各种报错啊,再次在 QQ 群里问,再次在大家的帮助下把问题解决了。
这下终于可以开始写了,然后照着一篇中文资料想把官方那个 15 分钟写就一个博客程序的例子写出来,再次出现一大堆问题,因为他看的资料过期了,现在已经是 Rails 3.1.3 了,他不小心安装的也是这个,但那中文资料还是 2.x 的甚至 1.x,各种不兼容,然后他还是跑到群里面问,然后还是在大家的帮助下。。。
跌跌撞撞,磕磕碰碰,他们从来不去看官方的资料,因为那是英文的,他们看不懂,他们说自己英语差。他们知道自己英语差,但他们从来不打算去把英语提高,他们中的相当部分人甚至觉得英语对于程序员来说不重要。
他们中相当部分人没有意识说去找本书好好看,侥幸有人告诉他 ruby 看哪本书,rails 看本书,他们的第一句话可能是哪有下载,你有吗?传给我。对,他们从来没有版权意识,不喜欢买书,因为贵。不幸的是,因为 rails 的不向下兼容及快速更新步伐,rails 的书永远跟不上,中文书更是落后 1 到 2 年,和他好不容易从网上下载下来效果可以闪瞎眼睛的中文书电子书比,最新的 rails 已经千差万别了,这下再度碰了一鼻子灰。
他们这些人基础很差,英语不行,软件工程、操作系统原理、编译原理、数据库原理、数据结构与算法,通通不懂,但他们还是选择了程序员这条路,但坦白讲,就这些通通不懂的人有不少在中国的大小公司里还混得不错,真是奇葩,这也算是中国特色了。
他们在网上看到有人说学 rails 不用先学 ruby,但他们不知道,这个话是“有人”对那些有真正的学习能力,有举一反三、融会贯通能力的人说的。他们并不具备这些能力,这下更是磕磕碰碰,跌跌撞撞了。
具体看原文吧: http://readful.com/post/13920193592/rails-is-not-for-beginners
rails 绝对不是给初学者的.. 它是各种最佳实践的集合。要了解这个最佳实践,你需要懂很多东西..
所以在忽悠新人学 ruby 的时候,我都是推荐 sinatra. rails 直接上手难度太高了。
但是严重不同意 sinatra 是玩具这种说法。
如果你利用 sinatra 去搭建一个完整的网站,你会比一些 2 道贩子 railser 更了解 rails 的。
作者说出了很多真实情况,至少我在大学时,身边很多人是这种情况
我一直很讨厌「码农」这个名词,但有时看到身边一些人的一些行为时,觉得他们挺配得上这个名词,他们连思考的能力都近乎丧失
#5 楼 @huacnlee 说的有点绝对了,如果用老版本的 DHH 那本书,学 rails 还是很快做出来一个书上的例程的。我觉得 rails 是入门容易,精通难,入门你可以跟着那本书搞出来,但是精通 rails 就难了,因为你要学的不仅仅是 ruby,是一个 rails ecosystem。况且。况且,ruby 这个语言一点都不简单。。。。。
#2 楼 @Saito 至于 sinatra,个人认为实用上还是没有没有 rails 好,毕竟 rails 插件多了去了。
话说我有一阵还想读 sinatra 代码呢。。。一直没时间,搁浅了。读了一点,觉得 sinatra 代码写的不咋地。。。。
有一阵研究 ruboto,在 android 上用 ruby 写 apk,结果是研究 jruby,也没时间,又搁浅了。。。
有时间准备玩 c 的 redis,还是 c 代码好理解。。。。
#4 楼 @lgn21st #5 楼 @huacnlee #8 楼 @jinleileiking
好吧。我是觉的可能把新人带入 ruby ecosystem 会比较重要。rails 不是 ruby 的全部。当用 4 行 sinatra 开启一个 web 服务的话,尤其对于做 Java 的人震撼是很大的。这样就比较容易上道。
至于 rails 跟 sinatra,其实 sinatra 只是一个 router..其实可以了解一下 sinatra-contrib.其他的其实区别不大。haml mongoid 都是一样在用的,但是这些东西都需要你自己把这些东西粘起来。我觉得对于了解整个应用的启动过程是很有用的。
在用 sinatra 做过一个应用后。想换 rails 来做。就可以学习 rails 的各种 helper 跟切换到 rails 的 actionpack 了。其他都是通用的。
好吧,其实各有各的好处.. 但是确实
呃~~(╯﹏╰)b 差点就中了漫步的弹了,今天刚搞了那个 15 分钟的 XX,@huacnlee 给的那个繁体版是 3.0 的,有一点是 3.1 不兼容的,当时纠结了蛮久的,后来还是自个儿去官网看了最新的 guide 才发现问题。
@huacnlee 穷学生一个败不起 Mac,用的是 windows,然后是用 railsinstaller 搭建的,安装包带的就是 3.1,其实也没刻意追求新版本吧,不过我搭建环境貌似没那么夸张各种出错啊,貌似一路顺风...不过慢倒是有点感觉。
这篇文章写的确实不错。
作为一个新手,这里提到的坑爹问题我几乎都遇到了: 资料版本过期——照例子却来各种诡异 Windows 兼容性——坑爹! Rails 升级快——IDE 兼容性,试过 4、5 种 IDE,都有问题 不懂 Ruby——不能很好的理解代码中的一些语法,知其然不知其所以然 手册资料不全——犹如黑暗中前行,照例子知道怎么做,调整一下需求就抓瞎
事实上第一次尝试学 rails 还是在去年,因为遇到各种问题不得解答而放弃
这回再把 rails 拾起来,因为有前车之鉴,做了充分准备: 买回了当当上近两年所有的 ruby/rails 书籍 Rails 和 Ruby 并进,在家学 rails,在公司用 ruby 写脚本 确定一个版本,以这个版本的英文资料为主,其他为辅 用 ubuntu 虚拟机+vim 开发 遇到问题上 stackoverflow
我的体会: 英语阅读能力第一重要 ruby 基础对 Rails 学习很有帮助,但可以并行进行。 《The Rails (3) Way》是一本非常有价值的书,但好像很少有人提起?《Agile Web Development on Rails》告诉你能做什么,《The Rails Way》告诉你为什么可以这么做。 遇到问题死磕到底,一定可以解决
#14 楼 @suupic 关于《The Rails 3 Way》我在之前写的一篇文章《如何从 0 开始学 ruby on rails(漫步版)》写了 http://readful.com/post/12322300571/0-ruby-on-rails
Rails 用了不少 metaprogramming, 我个人感决用的太多了,code 不太好 follow. 学习些 metaprogramming 会有些帮住。Metaprogramming Ruby 是一本很好的书。
Rails/Ruby 不是几天或几个星期就会搞通的东西。要多用时间。就像 Peter Norvig 写的你需要”Teach Yourself Programming in Ten Years“ http://norvig.com/21-days.html
当然,对于 sinatra 的看法,我觉得不是玩具。另外,这个国内程序员的“Windows 平台 + 中文资料+QQ 群 + 盗版书”的学习模式,并不只是在 Ruby/Rails 上存在。
最近开始学 Rails,限于条件,只能在 Windows 下搭开发环境,借助 RubyInstaller 这个工具,还是很方便的,再搭配上 DevKit,一些 C/C++ 实现的 Gem 也能用了。 Windows 下有个好的 IDE 还是能提高不少效率的,推荐 RubyMine,JetBrains 的产品品质都不错
rails 的不向下兼容很头痛,老的资料基本要作废。 环境问题,对操作系统 linux/mac 的熟悉程度,数据库的掌握,解决问题的思路和经验等,都是初学者的拦路虎。
不是很赞同作者,Rails 有很多面向初学者的 Guides,而且作者某些观点以偏盖全了,不是所有的新手学习 Rails 都是加入 QQ 群,下载盗版书,只看中文资料,还在 Win 平台。
#23 楼 @loushizan 囧,很明显我不可能去说所有人,文章意思也表达的比较清楚,而且如果真仔细阅读的话,应该能感受到我是想表达 rails 并不难学,难在一些人自身上的一些问题,谢谢
同意作者的观点。一个教育体制的问题,我们这一代人,急功近利,浮躁。 我也是一个初学者,当初没看到作者那篇新手从 0 学起的文章,不知道 rails 是不向下兼容的,当时按照一本中文资料的做法想把文档下载到本地,结果没有成功,后来到网上一搜,全部跟书上的一样,都是 2.x 的做法,最终唯有求救原文资料,马上就解决了。 其实作者表达的有些人就是心急吃不了热豆腐, 我觉得,对于一个新手而言,最大困难是自己有没有耐心去刨根问底地读原文书,去思考,还有越过长城。
其实我觉得自己很幸运。。学 Rails 的时候几个月时间没有搭建成功 scaffold,然后就啃 Ruby 去了,至少书上的 Ruby 代码大部分都能运行.......
对于开发环境问题,我是这么看的,如果没有 mac 1、公司必须用 rails 开发,那么公司之前的人不应该推荐你用 Windows 吧,格 30G 空间装个 ubuntu 可以吧 2、自己想学 rails,那就更应该格 30G 空间装个 ubuntu 既然已经选择用 rails 的,就不要再在 Windows 折腾了
想起我的经历。还没有接触 ruby,就对照着 DHH 的经典书做几个 rails 的例子,虽然能跑成功,但是对里面的语法非常不理解。然后就放下了 rails,钻研 ruby。准备研究透 ruby 了,再重新学习 rails。这一学就是好几年了,虽然做了很多 ruby 的项目和工具 (http://github.com/qhwa 以及团队的一些协作工具),但是感觉离学透 ruby 这个目标还是挺远的。但这个时候我也发现,其实用不着学 rails 了,大部分情况下 sinatra 就够用了,或是自己设计简单的 CRUD 模型而已。Rails 对我来说,还是一个努力掌握的方向。但是已经不是去学怎么用他,而是学习他的设计。
作者言辞犀利啊~ 总结一下 英语应该是程序员的母语,这样才能一直看 up to date 的资料. 用 mac 不折腾...
至于"软件工程、操作系统原理、编译原理、数据库原理、数据结构与算法,通通不懂" 软件工程这东西,是实践磨砺出来的,初学者怎么可能懂. 编译原理,操作系统对于应用开发程序员有点远... 数据库我也不懂... 数据结构就三大件,array, hash, set... 至于算法,数据组织好了,"算法"自然就来了...
相反的是,oo design, framework(这里就是 rails 吧), 干净一致的编码风格,各种最佳实践似乎更应该先去学习掌握,不断提高的东西~