瞎扯淡 大家看看我这水平还有希望么?

lup165340815 · 2014年05月28日 · 最后由 tsaikoga 回复于 2014年09月18日 · 6731 次阅读

不知道大家有没看过 Paolo Perrota 写的 Ruby 元编程 (metaprogamming Ruby)。前几天偶然图书馆见到遂带回家看看。从所谓闭包开始,什么扁平化作用域、领域专属语言。感觉晦涩难懂,在看天书。 接触 ROR 也有一年多了,感觉大部分时间都是简单的 CRUD、RHTML、RJS、JSON 这些关键字,偶尔翻翻镐头书了解几个没见过的方法。这样下去个人的成长很成问题啊!

可以先看第一章,多下功夫,自然进步。

先看看 Programing Ruby 第二版吧,标准库不用看。然后再看 Ruby 元编程就能理解了。

我阅读的顺序是《Programming Ruby》《Ruby 元编程》《敏捷……》……第一遍看元编程和你一样基本属于看天书,不过对 AR 使用元编程的例子记忆犹新,以至于后来写 Rails 越多越会搞明白元编程里的概念与例子,然后再读了第二遍《元编程》,很多 Rails 里的机制一下子就明白了…所以我觉得即使读不懂但在脑海中留个印象,写得多了自然就醍醐灌顶了…

#2 楼 @alixiaomiao 恩,标准库我确实如书上所说的,把他用来垫电脑桌子了~

#3 楼 @cassiuschen 话说上来就看 Programming 不看敏捷开发,不吃力么?

多写代码,就好了。

多看 多写 多上这个社区

多撸 因为 撸...智...深

扁平化作用域、领域专属语言 ... 我乍一看也完全不明白是什么东西

不要放弃治疗 😁 Rome was not built in a day

#5 楼 @lup165340815 我觉得不看 Programming Ruby 直接看敏捷才吃力……今年我带了四个零基础的孩子入门 Rails,然后最大的感受就是他们感到吃力或者错误频发的地方都出现在 Ruby 语法本身上……于是我一直坚持不学好 Ruby 不要写 Rails,不过当然没要求看完 Ruby API……Programming Ruby 前 200 也过一遍就够了……

#8 楼 @guyanbiao 扳手腕从来没输过~!

13 楼的顺序恰恰好跟我一致 不过我是选择了 Web 开发敏捷之道 作为启蒙 然后现在也 block 了在 重构这一本上。 lz 踏下心来看 不管什么时候起步 都是好的

我的情况跟 LZ 的比较相似,工作中用到的东西实在是少的可怜,没有机会去写元编程代码。Ruby 元编程这本上现在在看第三遍,才稍微有点理解。

我觉得如果 lz 真的想好好学编程,最好还是从 c 开始学起,学好 c,然后再学编译原理,优化部分可以不用考虑。这样回头再学随便什么语言,看一下午就可以理解 80% 以上了。找本工具书就可以工作了。

#16 楼 @rasefon 真的?C 这么重要?

实在看不下去了,元编程、闭包、扁平化作用域,这些名词都是用来装逼的。千万别在这些牛角尖上浪费太多的青春。工作无非就是 CRUD,就算淘宝京东也是 CRUD,无非就是复杂些的 CRUD。能做出来东西,赚到钱才是王道。

鄙视 ruby-china 官方,为了所谓的人气,故意把新人往邪路上引,元编程、DSL 这些装逼利器能为 ruby-china 制造大量的话题,但是可能会耽误程序员的一生

#11 楼 @cassiuschen 这么年轻有孩子了啊?

@lup165340815 最近才幡然醒悟, 看书放一边。

通过看源代码学习 ... 通过看 Rails 源代码学 Ruby 通过看 Ruby 源代码学 C 通过看 Redis 源代码学 数据结构 ...

遇到不懂的,寻求帮助,这时候看工具书 (Ruby 书,偶最喜欢的是两只燕子)

或者搜索 (先 ri 或 Dash, 后查 StackOverFlow, 最后才是 Ruby-China 发问)

然后记得整理, 用脑图整理筋骨,之后加上自己的语言完善肉和皮, 最终成自己的小书。

一年前,我在书店看到这本书,翻开一看,什么 monkey patch,什么驼峰日,根本不知所云,看了看就放下了,根本就没来得及看到楼主所说的东西。然后到现在看这本书也不下三遍了,每次都有不同的感受,从一开始的不知道所云到能看懂,到最后觉得能产生共鸣。虽然现在还有某些地方不是很明白,但是我在想,这应该是每一本好书让你得到的感觉把。有点建议就是,如果可以在看的时候去实际写一些东西,那就事半功倍了。

#20 楼 @rasefon 其实我在之前看了篇文章说,要学好编程首先应该学会一门动态语言,比如 ruby,当然需要一定程度的 c,然后再回头去看 c,然后就是你所说的这些东西,虽然有一家之言的嫌疑,不过我觉得还是挺有道理的。 #17 楼 @chairy11

匿名 #26 2014年05月30日

#19 楼 @ddyy s/程序员/码农/

看英文原版,结合实践。多数元编程日常是用不到的。等你碰上需要重复写一些逻辑接近但细节不同的代码,你自然就知道用 yield,用 lambda 了。

中文的还是少看为妙,造词跟语境根本没多大联系。跟你实践写的代码在记忆里也映射不起来。

看中文就是邪道,看完了,记一堆的生涩的屁词,碰到实际代码,还是毫无印象。

我花了三个月去理解这本书。期间各种不理解,各种折腾。现在依然有很多疑惑。

但是,我收货了好多。

#8 楼 @guyanbiao 我撸的算多的了。。。也没见智深。

我也有疑惑的是,重构、设计模式、元编程 之间好像是可以让源码简洁、减少重覆、易于维护扩充的法门;不知这三者的学习顺序为何?

#22 楼 @zealinux 一个月前有篇讨论 Ask HN: What source code is worth studying? 汇集哪些源代码值得阅读。几乎被忘掉了的 merb 竟然是被推荐阅读。

自己写写 rails 的项目,从开发到部署,整一个都要弄懂,我在公司也是负责 rails 都项目,一开始没什么头绪,后来自己写自己都业余项目,就会明白比较快。我最近也在看元编程。。。经常看到陌生的语法。

语言需要 practices, practices and practices, 向比你厉害的人讨教,学习,不要一味的在书里,现在的书你懂的。

谢谢楼上的几位回复,这几天抽时间把镐头书从头到尾翻了一遍,个人认为收获不大。现在想了解一些底层的基础

这几天还是硬着头皮把元编程啃下来了,虽然后面好多的不懂。感觉他就是把 DRY 精神贯彻到极致的思想。不知道我说的对不对?

写代码看不懂被草很正常,毕竟不是谁都能 21 天从小工到专家了,我第一章看完,感觉莫名其妙再看一遍,发现就根本没记住什么。如果你想理解这些概念,我倒是建议你去学习 Lisp 看完就不觉得被草的很严重了。SICP 强推。 这些概念其实都不新鲜,lisp 里面早就有了。你要学 Ruby 的原力,还不如去看他的爹 Lisp,看完就差不多懂了,我推测楼主直接上手 Rails 然后再学习的 Ruby,所以看不懂是很正常的,如果你学过函数式语言就发现这些都很基础。DSL,MetaProgramming,这些说到底是为了让你写更好的代码,Rails 本身就是鼓励打字工们写出多快好省的代码。所以想要升级,打怪升级是必须的。元编程不过就是一个稍微大点的 Boss,打 Boss 无非就是极品装备点击就送。

ls 纯粹在害人,lz 别信

#38 楼 @crazyphage 对...

镐头和 cookbook 是新手入门最好的选择,然后就可以写自己喜欢的东西,web?采集?都可以,只要动手。新手最重要的不是要知道 tdd,bdd,敏捷,重构,而是如何保持兴趣和注意力,不要这两天学 ruby,后两天 lol,下个星期开始 python。

等开始觉得自己可以写出好代码的时候,就要去看下一本书。 重构?设计模式?元编程?选其中看完一本,然后回头看一下之前写的代码,很丑是不是?那恭喜你了。

至于学 lisp,这种妥妥提高逼格的好事我不反对,但是得看时候...

PS:看了一下 Java 圈子,好像现在只要向新手推荐编程思想绝对被喷....

#39 楼 @saiga 《Java 编程思想》是本好书!

这么多技术书要看,你还有时间怀疑自己能力?赶快看书去!哈哈

#39 楼 @saiga 没有思想写代码?真是打字工?当然,我耶没有说我一定要楼主这样做,我只是觉得这样子帮助理解。谢谢。

#42 楼 @crazyphage

至于学 lisp,这种妥妥提高逼格的好事我不反对,但是得看时候...

SICP 是好书,但是通读 + 习题全攻略半年以上应该要吧。让一个要学习 ruby 的新手投入 lisp 半年,这个...

#44 楼 @saiga 用了一段时间 clojure,感觉只有一个,我的智商不够。

#45 楼 @yfractal 如果不肯说是投入的学习,写代码有什么意义?学习 Scheme 以前是 MIT 的新生教材也不是不知道。既然说楼主是想要学习这些,自然说让他去学习这个是怎么来的。学习半年 Lisp 耶没什么不好的。

#46 楼 @crazyphage 我小白一个。。。什么都不懂。还比较笨。 觉得语言是用来解决问题的工具,需要用什么语言,就用什么语言。

#48 楼 @yfractal 你可以试着继续用 clojure,或者两个一起来,坚持总能收获的。

看起来都懂,但是不会写。看多了书就开始烦了,好像都懂了一样。现查现学现写才行。能完整把 railsguides 看懂,跑 1 个完整的 rails 项目出来,就 OK 了。大功能什么的就抄吧。

看的懂,但是很少应用,一般看完就忘了。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号