不知道大家有没看过 Paolo Perrota 写的 Ruby 元编程 (metaprogamming Ruby)。前几天偶然图书馆见到遂带回家看看。从所谓闭包开始,什么扁平化作用域、领域专属语言。感觉晦涩难懂,在看天书。 接触 ROR 也有一年多了,感觉大部分时间都是简单的 CRUD、RHTML、RJS、JSON 这些关键字,偶尔翻翻镐头书了解几个没见过的方法。这样下去个人的成长很成问题啊!
我阅读的顺序是《Programming Ruby》《Ruby 元编程》《敏捷……》……第一遍看元编程和你一样基本属于看天书,不过对 AR 使用元编程的例子记忆犹新,以至于后来写 Rails 越多越会搞明白元编程里的概念与例子,然后再读了第二遍《元编程》,很多 Rails 里的机制一下子就明白了…所以我觉得即使读不懂但在脑海中留个印象,写得多了自然就醍醐灌顶了…
#5 楼 @lup165340815 我觉得不看 Programming Ruby 直接看敏捷才吃力……今年我带了四个零基础的孩子入门 Rails,然后最大的感受就是他们感到吃力或者错误频发的地方都出现在 Ruby 语法本身上……于是我一直坚持不学好 Ruby 不要写 Rails,不过当然没要求看完 Ruby API……Programming Ruby 前 200 也过一遍就够了……
读过国内所有出版的 Ruby 书,窃认为阅读顺序是这样的
第一本,用于入门 Ruby. 第二本,对我的影响最大,用于理解 Ruby 中面向对象的一些思想. 第三本,第四本,工具书,平时没事可以翻翻,建议第四本用于精读. 第五本,Ruby 进阶必备,反反复复读了 6, 7 遍. 第六本,Rails 学习必备,推荐第三版. 第七本,目前在读,进度较缓慢。
另外最近上市了一本 <面向对象设计实践指南:Ruby 语言描述>, 目前在读,个人感觉还不错。
LZ 不要着急,慢慢学,到最后就会融会贯通了。
13 楼的顺序恰恰好跟我一致 不过我是选择了 Web 开发敏捷之道 作为启蒙 然后现在也 block 了在 重构这一本上。 lz 踏下心来看 不管什么时候起步 都是好的
我觉得如果 lz 真的想好好学编程,最好还是从 c 开始学起,学好 c,然后再学编译原理,优化部分可以不用考虑。这样回头再学随便什么语言,看一下午就可以理解 80% 以上了。找本工具书就可以工作了。
实在看不下去了,元编程、闭包、扁平化作用域,这些名词都是用来装逼的。千万别在这些牛角尖上浪费太多的青春。工作无非就是 CRUD,就算淘宝京东也是 CRUD,无非就是复杂些的 CRUD。能做出来东西,赚到钱才是王道。
鄙视 ruby-china 官方,为了所谓的人气,故意把新人往邪路上引,元编程、DSL 这些装逼利器能为 ruby-china 制造大量的话题,但是可能会耽误程序员的一生
@lup165340815 最近才幡然醒悟, 看书放一边。
通过看源代码学习 ... 通过看 Rails 源代码学 Ruby 通过看 Ruby 源代码学 C 通过看 Redis 源代码学 数据结构 ...
遇到不懂的,寻求帮助,这时候看工具书 (Ruby 书,偶最喜欢的是两只燕子)
或者搜索 (先 ri 或 Dash, 后查 StackOverFlow, 最后才是 Ruby-China 发问)
然后记得整理, 用脑图整理筋骨,之后加上自己的语言完善肉和皮, 最终成自己的小书。
一年前,我在书店看到这本书,翻开一看,什么 monkey patch,什么驼峰日,根本不知所云,看了看就放下了,根本就没来得及看到楼主所说的东西。然后到现在看这本书也不下三遍了,每次都有不同的感受,从一开始的不知道所云到能看懂,到最后觉得能产生共鸣。虽然现在还有某些地方不是很明白,但是我在想,这应该是每一本好书让你得到的感觉把。有点建议就是,如果可以在看的时候去实际写一些东西,那就事半功倍了。
看英文原版,结合实践。多数元编程日常是用不到的。等你碰上需要重复写一些逻辑接近但细节不同的代码,你自然就知道用 yield,用 lambda 了。
中文的还是少看为妙,造词跟语境根本没多大联系。跟你实践写的代码在记忆里也映射不起来。
看中文就是邪道,看完了,记一堆的生涩的屁词,碰到实际代码,还是毫无印象。
#22 楼 @zealinux 一个月前有篇讨论 Ask HN: What source code is worth studying? 汇集哪些源代码值得阅读。几乎被忘掉了的 merb 竟然是被推荐阅读。
自己写写 rails 的项目,从开发到部署,整一个都要弄懂,我在公司也是负责 rails 都项目,一开始没什么头绪,后来自己写自己都业余项目,就会明白比较快。我最近也在看元编程。。。经常看到陌生的语法。
写代码看不懂被草很正常,毕竟不是谁都能 21 天从小工到专家了,我第一章看完,感觉莫名其妙再看一遍,发现就根本没记住什么。如果你想理解这些概念,我倒是建议你去学习 Lisp 看完就不觉得被草的很严重了。SICP 强推。 这些概念其实都不新鲜,lisp 里面早就有了。你要学 Ruby 的原力,还不如去看他的爹 Lisp,看完就差不多懂了,我推测楼主直接上手 Rails 然后再学习的 Ruby,所以看不懂是很正常的,如果你学过函数式语言就发现这些都很基础。DSL,MetaProgramming,这些说到底是为了让你写更好的代码,Rails 本身就是鼓励打字工们写出多快好省的代码。所以想要升级,打怪升级是必须的。元编程不过就是一个稍微大点的 Boss,打 Boss 无非就是极品装备点击就送。
#38 楼 @crazyphage 对...
镐头和 cookbook 是新手入门最好的选择,然后就可以写自己喜欢的东西,web?采集?都可以,只要动手。新手最重要的不是要知道 tdd,bdd,敏捷,重构,而是如何保持兴趣和注意力,不要这两天学 ruby,后两天 lol,下个星期开始 python。
等开始觉得自己可以写出好代码的时候,就要去看下一本书。 重构?设计模式?元编程?选其中看完一本,然后回头看一下之前写的代码,很丑是不是?那恭喜你了。
至于学 lisp,这种妥妥提高逼格的好事我不反对,但是得看时候...
PS:看了一下 Java 圈子,好像现在只要向新手推荐编程思想绝对被喷....
至于学 lisp,这种妥妥提高逼格的好事我不反对,但是得看时候...
SICP 是好书,但是通读 + 习题全攻略半年以上应该要吧。让一个要学习 ruby 的新手投入 lisp 半年,这个...
看起来都懂,但是不会写。看多了书就开始烦了,好像都懂了一样。现查现学现写才行。能完整把 railsguides 看懂,跑 1 个完整的 rails 项目出来,就 OK 了。大功能什么的就抄吧。