读这篇博客,需要《SICP》这本书作为前置知识。它说道的过程抽象、数据抽象、元语言抽象等词汇都是指的过程式编程、OOP 的抽象基础。
这篇博客我认为写得非常棒,高屋建瓴,虽然它的主题是 DSL 和声明式编程,但从编程的复杂性和抽象方式这个更本质的角度说明了元语言抽象的益处。
users.select { |user| user.id > 33 }中,Block 设计的本质是代表了了什么?这里的 select 虽然只是一个普通的方法,但它的目的却与普通意义上的 OOP 里的方法不同(普通的 OOP 不会这么设计,因为 OOP 里方法调用通常代表了向对象发送消息,改变或查询对象的状态),但它的语义实际上类似于 for 循环这样的语言基本语义,可以被视为一种自定义的基本语义。从一定程度上跳出了普通方法的框框,向问题域迈进了一步。
为什么要这么使用 Block 而违反普通的 OOP 做法。它有两个好处: 1,第一个好处很明显,可读性大大增强。 2,第二个原因是:普通的 API 设计方法存在一种天然的陷阱,那就是不管怎样封装,大过程虽然比小过程抽象层次更高,但本质上还是过程,受到过程语义的制约。也就是说,通过基本元素/语义构造更高级抽象元素/语义的时候,语言的构造规则很大程度上限制了抽象的维度。
但 Block 的抽象维度既不同于过程式语言的过程抽象,也不同于 OOP 的数据抽象,而是《SICP》中所说的“元语言抽象”。不同于传统的 API 设计,它根据问题域选取适当的抽象维度,利用语言的基本语法构造领域特定的语义和语法。
这也是为什么 Ruby 的语法这么强大的本质原因之一。理解 Block 这么设计和使用的深层原因,理解元语言抽象对 Ruby 和 Rails 的重要意义,岂不对 Rails 编程本身会有更深的体会吗?
@linjunhalida 学到了一招,犀利呀~~
#13 楼 @linjunhalida 你这是 C 文件,是 grep CRuby 本身的源代码?
#4 楼 @linjunhalida 你的“./vm_eval.c”是怎么调试出来的呀?好神奇。(● _ ●)
Oracle 的好处是可以锻炼技术,但 4 年经验 + 英语流利才 15K,实在太低了。
太棒了,精神上支持一个 :D
#2 楼 @linjunhalida @Kabie 他的意思是只要 Ruby,如果有熟 python 或 PHP 的可以转 Ruby。
LZ 很靠谱,之前是 gurudigger.com 的合伙人,各位雇主不要错过啊。 :D
看一个金融产品的价值,最基本的是要看它的属性:发行量,边际供需,与其他产品的兑换,背后价值来源,信用来源,价格的稳定性。
现在比特币是作为收藏品和投资产品,根本不具备实际意义上的货币功能。
先说个定律:边际供需决定价格而不是总供需。比特币因为供给被少数大户控制,所以很容易形成庞氏骗局。但是在这个每天成交量很少的游戏里,只要有大户卖出,价格体系会瞬间崩溃,不管是散户还是大户都很难抛。
你持有 10 万枚某币,每天成交量 1000 枚,你该如何卖掉?每天卖 1000 枚也会让供给翻番。除非来一个银行做准备金,声称:本银行 1000 元每币全收,永久有效,这样此币才能避免归零,但是价格会立刻重挫到 1000 元。货币的核心价值是流通,流通本身是与收藏相克的。所以币值一定得稳定!
《如何用 Ruby 实作一个后台推送服务》:http://liusihao.com/post/65514214172/ruby
#1 楼 @isofttalent 您是指哪方面的算法?推荐系统、NLP、或其他?
机器的本质是拓展人类的感官和肌肉, 互联网的本质是拓展人类的大脑。
坐等 + 1
"每个月工资准时上交;生活节俭,一件 30 元钱的短袖穿了四年"。好恐怖!!!(重点又错 +。+
@puake 将邮件发到你的邮箱了。 :D
看到得是 Logdown 突破口做得非常好: 1)定位上给 hacker 主打 markdown 博客, 2)宣传上进了 Hacker news, 3)功能上也是确定了 hacker 们真正需要哪些功能才添加,重点功能的用户体验做到了极致,而不去加一些没有用却影响用户焦点的功能, 4)在吸引注册和使用上花了两个星期去做首页和首页上的宣传视频。 产品中很多要点都结合得比较好,成就了一个极佳的突破口。 精确定位是关键。想想 yy 一开始就是魔兽打副本用的。
同一类产品,同一类商业模式,但为什么 writings.io 死了,而 logdown 活了下来?