Ruby 如果让你写 “Just Enough Ruby”,你会写哪些内容?

xiaolai · 2012年10月27日 · 最后由 waterblues 回复于 2018年03月06日 · 5442 次阅读

学习是循环渐进重复迭代递归轮回的。所以,不见得一定要精通 Ruby 之后再学 Rails(其实这还真的很难做到)。所以,“学一些必要的 Ruby 知识,然后就开始用 Rails,而后再反复补充 Ruby 知识”,可能是个最常见的途径。坛子上的各位高手,如果让你指导朋友,教他“Just enough ruby”,你会包含哪些内容呢?

好网站!

笑来老师在酝酿新书?

#3 楼 @chairy11 我得还有十年才有可能写这方面的书吧?你以为我超人啊?

我觉得可以看完 ruby 元编程那本就就可以了,实际上这还是分人的,如果是第一门编程语言,那就要多学点,如果是第二第三门,取决于你第一门语言带给你的除语言以外的东西。

#4 楼 @xiaolai 嘿嘿,你的学习速度,高不可测啊……

Integers, Strings, gets puts, variable assignments, comparison, logic operators, flow control, methods, array, hash, basic iterator methods

简单地说,就是把 Ruby 作为一个 procedural programming 的语言,加上 select, map, delete_if 这些 array 里面带 block 的用法。用这些就可以开始讲基础 Rails 到自主开发第一个项目。我已经按这个做了个系列,但还没有公开。。

基础 Rails 后再讲 Ruby 的 Object Orientation 和 TDD, 在回头看 Rails 里面的 Object Oriented Design 和 测试。

最后是把 Ruby 当作一个动态语言,讲 Metaprogramming 和 Rails“去魔术化”,跳进 Rails 的源码,开发 Gem 等。

#2 楼 @xiaolai

#2 楼 @xiaolai "Just Enough"这个概念非常重要,我认为说全了应该是 "Just Enough to Keep Coding". 在我们的课程里,讲授,鼓励,督促,答疑等一切都是为学生自己动手写代码服务。

#7 楼 @rails 这个也真好!

刚刚好最近一直在思考这个问题,明天上海有个 7 周 7 语言的活动,我去给大家讲 Ruby 基础,虽然不涉及 Rails,但是仅就一天的 Ruby 基础知识学习,希望能帮助来听的人对他们日后学习 rails 有所帮助。

活动地址: http://w774.51qiangzuo.com/

我希望从我的学习体验,给大家讲清楚这门语言的编程模型(即 Ruby 的纯面向对象模型),以及为了追求良好的编程体验,语言设计者在设计这门语言的良苦用心:

内容包括

  • 如何安装 Ruby
  • 如何使用 irb
  • 基本语法以及表达式
  • 如何查文档
  • Ruby 的数据类型
  • 函数,Block,Class 以及 Module
  • 继承和 Mixin
  • 如何编写最基本的 Ruby 脚本

如果一天能够完整的过一遍这些 Ruby 的语法特点,我觉得压力还是比较大的,但是对这些东西有了初步的概念后,在去学习 Rails 应该会更有感觉。

总的来说,如果把目标定位在掌握 Rails 本身,我认为跟学游泳一样,先下水再说。先到 Rails 里面去扑腾,边学边实践,Ruby 语言自然就掌握的七七八八了,至少这是我自己的感受,也是很多跟我一样的人的感受。

我相信,咱社区的很多人,一定走过这个弯路的。

如果你只是止步于 一般水平, 当然这样没问题了。可是如果你真想提高,迟早还是要恶补一番的。

今天 RubyConf 的 @FredWu 讲的一句话我很认可,翻译过来就是 除非学好 Ruby, 否则不要用 Rails

仅仅就事论事的话,我不鼓励社区总是宣扬 十五分钟写一个博客, 会点 Ruby 就开始开发 Rails, 这对新人应该有严重的误导。

我承认有人可能会这种方式,而且也很牛,但是 Ruby 绝对不是他们的第一门语言,而且,这些人绝不会在社区问这样的问题,他们心里肯定有谱,而且往往它们的方式不可复制的。一个新人,你如果也学那样的话,那就惨了。

什么叫学好,如何评价学好呢? 这个标准太模糊了。 我觉得 学 rails 的过程,本身也可以看做是学 ruby 的过程 这不矛盾啊?

@zw963 我理解的是刚开始用 rails 做一个简单的东西,快速的展现出来,让新手体会到 ruby 的魅力,然后再循序渐进的学习,如果你要说学好?什么程度才算学好呢?

#15 楼 @virgil

看你自己喽。Ruby 是真正的干货。Rails = Ruby 干货 + 大量的 (也是几乎每隔几天都在变的概念) + SQL 基础 + MVC 模型,很明显,除了第一条,后面的东西,其实都不是专属于 Ruby 的。反倒是一坨一坨的大把 Gem, 来来回回不停的出更好的,其实都是 Ruby.

@zw963 我不赞成您的说法,只有你用了别人的东西,知道它的好处,你才能够明白,哇,原来还能这样啊。吸取精髓,积累经验。然后不断的驱动继续好学下去。

#16 楼 @zw963 反正,欲速则不达,恒理。

#17 楼 @virgil

不知道你有没有这样的感触,真相总是很简单的,但是往往隐藏的很深,而且有时候,只可意会不可言传。

你所谓的好处,也许是真的好处,但也许只是你看到的表面而已。

我仅仅是发生在我自己身上的例子,这样的好处你看到越多,你可能会越糊涂,最后,往往就是重新系统学习归纳下,才恍然大悟。枉费之前很多功夫,想跟 Ruby 混,迟早要还的。

BTW: 以上说法仅限于 Ruby 这种魔幻语言,其他语言,不要照搬。

@zw963 这个我同意,但我个人认为,完全是个人认为,这个是必须过程,有些弯路是没法避免的,没有真正的体会到,是没有感觉的。

如果是我的话会避免为了“能上手 Rails”而教 Ruby...

@knwang 您的总结太 prefect.

#23 楼 @knwang woooow, what can I say, totally agree.

想 enjoy ruby 先让一般人能装的上吧。。。

#11 楼 @lgn21st 习惯 Java 的文档格式, Ruby 的文档 始终觉得不习惯. 活动有没有留视频?很想了解 Ruby 查文档的技巧

我工作主要是 Java, Ruby 纯爱好。刚开始接触 Ruby 的时候,直接上的 Rails。 感觉从环境安装,编辑器选择方面,各种碰壁。久而久之,兴趣大减。

后来通过这篇文章又重拾 ruby: 《Ruby 语言最小化》 http://thinkinginruby.group.iteye.com/group/wiki/1266-chapter-i-ruby-language-to-minimize 现在始终坚持一个理念:“不能为了学技术学技术,多数情况这会让人很痛苦”。 我的做法: 先让 Ruby 成为日常使用的脚本语言。 比如用 Ruby 处理文本,用 Ruby+Sinatra 做小的 WebService(比如做远程 cmd)。 ...

之后,等能够熟练使用 Ruby 后再去碰 Rails.

"精通 Ruby 之后再学 Rails"。感觉精通没必要,熟练就 ok.

P.S: 做了近 4 年的 java。Java 语言,各种主流框架每一个敢说精通的 = =||

#23 楼 @knwang 总结的太好了,受教了。

#28 楼 @lvjian700 同样不习惯 ruby 文档的风格,感觉根本看不懂....希望能提供更好的 API 文档

#32 楼 @lvjian700 这个也用过,只有 rails 的 API, 文档的结构还是不如 javadoc 清晰,难道是我摆脱不了 java 的阴影?

除了系统安装什么的,如果是关于 ruby 语言,我一直推荐 Agile Web 那本书的附录,不过只有第二版以前有 ruby 入门,后面的版本好像把这段砍掉了

#29 楼 @lvjian700 “比如用 Ruby 处理文本”……嗯,这也是我入手的方式。

#23 楼 @knwang 所以“学习 Rails " 本身从来不是 大多数人 的目的,成为厉害的 web developer 才是。想请教下 knwang,成为厉害的 web developer 需要哪些知识,重点讲下后端技术,谢谢

#12 楼 @zw963 除非学好 Ruby, 否则不要用 Rails。想知道一下为什么?楼主遇到了哪些困难和问题?我的背景是 C、C++,接触 ruby on rails 半年左右。

#39 楼 @zhenjunluo

关于这句话,我没有太多体会,因为到目前为止,我一直是这么做的,你可以密 @Fredwu, 我在前几天的 RubyConf 上听他这样说过,不妨让他现身说法,讲讲为什么这样说?? 我觉得不过越抽象的东西,往往越容易陷入迷途,如果你不够了解,往往有将简单问题复杂化的趋势,因为你根本不了解核心规律。

#38 楼 @zhenjunluo 我的眼界有限,我能想到的:

  1. 编程语言和框架 - 比如 ruby 和 rails, 能够快速上线模具 / prototype
  2. 程序的构架和组织 - Object Orientation, Design Patterns etc. 对 Functional Programming 最好也有理解。相关的概念还有比如重构,测试等等都在这个层面上。
  3. 新技术的跟进和快速学习能力
  4. 工具的选择和系统的架构 - 数据库,消息队列,应用集成方式等
  5. 系统运营,发布,脚本管理,生产环境的维护
  6. 团队协作和开发流程
  7. 性能,拓展型的工程解决方案
  8. 算法,人工智能,大数据分析和梳理

这个顺序也大概跟随着项目成熟的阶段,或者是在小团队,起步项目的环境里容易学习到前面几点,而在大公司,成熟的项目里面是学习后面几点的地方。或者反过来,如果你的志向是开拓创业的方向,可以集中精力突破前面的几点,如果你的志向是做大型技术公司的骨干或 CTO, 要找机会接触学习后面的东西。

#11 楼 @lgn21st 如何查文档这个比较感兴趣/

像 The Little Schemer 这本书一样,从 ruby 代码中来讲解和运用基础知识

#11 楼 @lgn21st 期待大牛的视频

循序渐进还比较好理解,什么叫 重复迭代、递归轮回?笑来老师应该是没时间仔细讲解了,但我还是想问一下,万一有时间呢?😂

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