上期 Ruby Tuesday, 和一个朋友讨论起一个 Python 下的 Web 开发框架,叫做 Pyramid. 有一些感触,再加上刚刚看了一篇有关Learn Ruby The Hard Way有什么说法
的帖子,有感而发,不过发现回复太长了,干脆新开个帖子好了,这样更多的人可以看到。以下只代表我的一家之言的瞎扯蛋,仅供参考呀~~
我觉得 Rails 就像 Delphi, 因为太容易上手了,所以反倒很难深入,看似较低的门槛,但是,事实上是增加了提高的门槛,很多人往往只是看到优秀的框架光鲜的外表,而完全忽略了这个框架的精髓 (即,底层的实现语言),
因为大多数人都是直接来写应用,少了很多从一开始,从底层 小步前进
的 hard way
, 所以,本身这种实现方式,让 Rails 易学难提高,就像当年的 Delhpi 一样,永远没有成为最主流的开发工具,相反,Virtual C++ 没有那么 OO, 但是因为你不了解很多细节,你无法开发出一个成功的产品,换句话说:往往使用 VC, 都是经历了一个从点到面,一个长期的艰苦
过程,(hard way), 所以一旦掌握了它,你会感觉非常得心应手,無所拘束。
事实上就难度上来说,不见得 Delphi 比 Virtual C++ 的 MFC 难多少 (虽然前者更 OO,), 我觉得主要还是 Delphi 这个框架,给你做的太多了,使你一开始,就不会努力去深入进去,正因为如此,你用的越久,你会发现你越难提高,因为从一开始你就忽略了太多不应该忽略的细节,到真正需求大爆炸
的时候,你会懵掉,你会发现其实你最后还是不了解Rails
, 还是不了解Rails底层的那个叫做Ruby的语言
.
最后我想说的是:其实也许从一开始,小步前进,稳扎稳打的话,真正了解并掌握 Ruby, Rails(就如同学习 VC 一样), 也不是那么难,难的是你一开始对待 Rails 的的态度。难道你照着 DHH 的那个视频,15 分钟内写出一个 blog, 就表示你会 Rails 了吗?
工具确实会给使用者带来极大的影响啊,功能多了吃不透, 但是没有强大的语言效率又很难提上去。 总之,能做出漂亮的东西是一方面,程序员的内功修为也很重要~ 像 C 啊,lisp 这种本身并不复杂的语言就很适合用来练内功~
表面越是简单的东西,内部越是复杂。 表面越是复杂的东西,内部越是简单。
我认为 Delphi,曾经一度是 快速开发领域的 最主流的开发工具。
我觉得 Rails 的很多问题,归结于,其背后没有一个,强大的公司为其支撑。 VC 那么烂,但是却活到今天,完全是因为微软在支撑。 社区虽然很强大,但依然无法和资金雄厚的企业相比。
如果像真正想掌握 Rails,那么必须精通 Ruby, 如果只是想试试 Rails,那么你可以不了解 Ruby。 这个道理,我觉得适用于任何技术框架。
#10 楼 @fresh_fish 我认为,当一个程序员只熟悉一种语言的或者框架的时候,才会有膜拜论的现象,随着时间的推移,当其熟悉多余语言和框架以后,膜拜论不攻自破。
楼主真是有点“瞎扯淡”,什么叫做入门简单,却反倒很难深入?当然,rails 框架确实复杂,能够深入掌握是有难度的,但是也不是不可能的,@kenshin54 就是一个敢于深入的人。世间道理都是如此,入之愈深,其进愈难,而其见愈奇。关键在于人是否有这样的猎奇心和毅力。rails 的核心开发者中,鲜有华人,更别说中国人!也许国人性格内敛,不屑张扬,高手如云,也未可知。
本来就是瞎扯蛋...
不是性格内敛, 不屑张扬
, 我觉得主要原因还是在于国情
. 这样的国情下,大家都没有造轮子
的动力。
如果唐宋
也是当下,就不会有中国古代诗词歌赋的繁荣与昌盛。我记得那本书说的,北宋年间,中国创造的 GDP 以及拥有的钱财占世界的一半,老百姓也富裕,闲的没事儿干,就研究这个研究那个。但是宋朝之后就不行了。
扯这么多,就是为了讲明白,为什么美国还有北欧那么多天才程序员?一方面是教育,另一方面,他们富裕。 国情不同。
#21 楼 @ery 没找到很早以前怎么实现的。 但是我真没看出来这段代码从可读性可维护性角度有什么问题,即使用了 class eval。不但可读性好,还 DRY,注释也很清晰。当然如果你的衡量标准是 ctag 能否定位过去。。那显然作者没考虑到。即使你和他提他也不会把这点作为首要的因素。
我看过一点 Rails 的代码,也认真看过一些 Rails core team 对某些 issue 的讨论,还有一些批评 Rails 的文章。总体感觉是: 1.Rails3 的代码比 Rails2 好很多 2.Rails3 以后的各版本的兼容性已经很好了。 3.如果 Rails 的代码算烂的,那么整个 Ruby 社区找不出来什么好代码了
楼歪了。
其实我觉得楼主的比较我是支持的,只是楼主说 Delphi,估计其实指的是 VCL 吧,是框架(CBC 也用的),对应于 MFC 吧。有了好的 framework,国人往往做的东西都是用很 easy 的部分就可以解决问题了,这部分的类别是很恰当的。
但是 Delphi 和现在的 Rails 不一样。Delphi 严重依靠 windows,结果 MS 不让它活,Borland 转到 linux 又没怎么成功,就挂了。Rails 天生是社区的文化,不存在对 MS 的依赖(linux 和 mac 开发为主),形势是不同的。
不过没干爹的确是个问题。
MFC 比 Delphi 恶心多了。搞了一大堆宏,就为了实现 Object Pascal 里 dynamic 关键字一样的效果。离开了 IDE,完全就没法开发了。
成了 MFC 的吐槽帖了,呵呵。 其实如果从 API 一步一步开始写,会感觉 MFC 还是不错的。 但是看看 VCL 就感觉不是一个 generation 的框架。
Ruby 看起来没公司支持,而实际上 Ruby 社区一直都有 Engine Yard, 37signals, Heroku, New Relic, Twitter 等公司鼎力支持的
请问@ery 像你这样的链接是怎么生成的?
https://github.com/rails/rails/blob/master/actionpack/lib/abstract_controller/callbacks.rb#L162
------补充,我知道了,点击左边的行号然后 copy 链接就可以了。
现在 github 也开始赞助很多 Ruby 活动了。
其实大多数的开源项目都是人们用业余时间做的,挺不容易。我觉得发现问题的同学可以直接在 github 上放个 patch pull request。这样是最直接解决的方法。
只要大方向是对的,被胁迫也未尝不是一件好事儿。怕的是不确定,走向另一个方向。
典型的:特色越来越少,像大众化靠拢...
p.s. 才发现这位老兄是今天注册的~~ 欢迎欢迎啊!!