Ruby 最近在看《元编程》,基本看来一遍,但是我依然对 ‘元编程’ 的含义很困惑,希望大神能给些帮助

sanm1992 · 2017年08月31日 · 最后由 jjym 回复于 2017年09月06日 · 2539 次阅读

毕业就开始 ruby 编程的我,到现在一年多了,之前基本都沉浸在 crud 业务代码,满足于完成 story。最近想提高一下自己,于是开始看《元编程》,但是看了一段时间,发现我依然不理解什么叫‘元编程’,希望老司机给予指点,或者给予一些学习 ruby 的建议。

看到那句话了吗?事实上,根本就没有什么元编程

基本上就是写一段写代码的代码

数据就是代码

4 楼 已删除
gyorou 回复

你的建议很有趣,可我感觉你所说的应该是产品经理应该做的事情。或 许您可能觉得我问的问题体现出我可能不太适合做程序员么?

额,同新手。看这个就是为了能看懂别人的源码。哈哈

Freeman1990 回复

哈哈,加油!加油!

sanm1992 回复

我的意思是说,要把时间花在更有价值的事情上。弄懂元编程带来的价值不大,不值得花这个时间。当然如果时间很多的话另当别论。

用不到的场景就别用吧

要认识的 Ruby 元编程的真正价值,就要从元编程的鼻祖 Lisp 开始,真正做到了 代码就是数据,数据就是代码,真正的代码和数据的完美统一。

真正掌握元编程的人,任何语法都限制不了一个程序员。

(macroexpand-1 '(-> 100 (+ 1) (+ 2) (+ 3)))    ;;=> (+ (+ (+ 100 1) 2) 3) 

(defmacro unless [expr form]
  (list `if expr nil form))

(macroexpand-1 '(unless false "Hi, Clojure!"))
;; => (if false nil "Hi, Clojure!") ;; 代码展开的样子

代码抽象现实世界,元变成抽象代码

至今我看了 5 遍左右,仍然不懂。每隔一段时间看一遍,每次都有收获,而且不小。

flowerwrong 回复

同感。

看不懂就继续坚持看,看书,看例子,实操。

看到各位大神也跟我有着差不多的困惑的时候,还是对自己的学习感到很欣慰的,我也是在坚持继续看,也希望能将代码和数据达到真正的统一

adamshen 回复

干掉了 SICP,十个 Ruby 元编程都不在话下 😍 😍 😍

SCIP 挺难理解的,我看得进度很慢。
不过感觉学这个挺有必要

flowerains 回复

谢谢你的建议😺 嗯嗯。谢谢呢,我之前都没听过这个

adamshen 回复

感谢感谢😄

miserytan 回复

哇,我很同意你的看法,我也是想多次看来着

在代码运行过程中操作 类 变量 方法等构件

大部分 gem 源码里都用了元编程啊,对于想自己研究库、写轮子的人,学好元编程还是有必要的。

暂时只写上层业务类应用的话,就没必要了,用多了甚至还会被队友谋杀😂

看 sicp 不要为了学习 lisp,只要看懂最关键的百分之十就可以了。把编程语言的构建和设计方法了解一下,理解下程序的本质,抽象和自动化。不要被各种语言里,抽象工具的设计、各种语法糖给绕晕了。我觉得就可以了

只要理解了“代码即数据”,自然就明白是怎么回事了。

概念可以参考书:《自私的基因》,《GDB》等

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