毕业就开始 ruby 编程的我,到现在一年多了,之前基本都沉浸在 crud 业务代码,满足于完成 story。最近想提高一下自己,于是开始看《元编程》,但是看了一段时间,发现我依然不理解什么叫‘元编程’,希望老司机给予指点,或者给予一些学习 ruby 的建议。
建议是不要看了,多想想业务逻辑,多考虑一下哪些地方可以改进,什么场景适用什么逻辑之类的,多总结遇到的问题,以及解决的方法。 如果除去工作时间,你的业余时间还是很多,可以试着去学习外语,多和人交流,认识更多朋友。也可以去考虑投资理财,以钱生钱。
我的意思是说,要把时间花在更有价值的事情上。弄懂元编程带来的价值不大,不值得花这个时间。当然如果时间很多的话另当别论。
要认识的 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!") ;; 代码展开的样子
大部分 gem 源码里都用了元编程啊,对于想自己研究库、写轮子的人,学好元编程还是有必要的。
暂时只写上层业务类应用的话,就没必要了,用多了甚至还会被队友谋杀
看 sicp 不要为了学习 lisp,只要看懂最关键的百分之十就可以了。把编程语言的构建和设计方法了解一下,理解下程序的本质,抽象和自动化。不要被各种语言里,抽象工具的设计、各种语法糖给绕晕了。我觉得就可以了