新手问题 关于 “0 基础”

xiaolai · 2012年10月04日 · 最后由 Anleb 回复于 2012年11月08日 · 10658 次阅读

经过这一小段时间的折腾,觉得新手最大的坑就是“误以为可以零基础”。

大家罗列下自己觉得开始学 rails 之前必须会的东西呗?

比如,我就觉得对外行来说,掌握一个编辑器(textmate/sublime text)的使用很重要。

哈,怒水的一个贴……

要先有点编程的概念,不要连编程的逻辑都没有 刚开始看 Java 的书时,最简单的循环,判断语句都要理解半天。

html、css、javascript、jquery。动态网页原理,asp 和 php 入门教程开篇都有介绍,但 rails 假设用户都懂这个了。

技术社区还有个流传甚广的误区:“精通从底层入手,懂了底层就懂了应用层了”,于是乎,为了精通 JAVA 去啃 C 语言,为了精通 C 语言去啃汇编。因为潜意识里觉得 JAVA 是 C 语言开发的,C 语言是 JAVA 的爸爸,汇编是 C 语言的爸爸,懂了爸爸,就懂了儿子了。于是 ruby 也被当成了 rails 的爸爸

#2 楼 @gaicitadie 同意你的关于底层和应用层的观点,写 ruby 不需要懂 c,即使 ruby 底层是 c 实现的。但你的这些类比不成立。ruby 和 rails 之间的关系不是你说的底层和应用层的关系。

找几个有 web 开发经验的人,只给他们 rails 文档,让他开发几个应用,看会出现什么问题就知道学 rails 需不需要会 ruby 了。

对国内的人来说,英语、翻墙,都成了障碍。唉。

#3 楼 @hooopo 开发 rails 当然得用到 ruby 语言,但很多 ruby 的高级特性,除非自己再开发个框架,如果仅仅用 rails 做项目,ruby 的高级特性基本上用不到,不会成为拦路虎。

有 web 开发经验的都从其他语言摸爬滚打好多年了。OO、哈希、数组、递归这些概念在 ruby 上只是写法不同,掌握 ruby 比掌握 rails 快的多。rails 包罗的概念太多了,有 web 经验的还好,从 php 或别的语言框架苦逼过,能了解 rails 的复杂带来的好处。对没有 web 经验的,rails 的那些概念就像天书

  1. HTML
  2. HTTP request / response; get / post
  3. Basic programming concepts (what is an array? what does assignment mean?)
  4. Basic terminal commands for development environment
  5. Basic system tasks such as installing packages
  6. Basic Ruby
  7. Static pages and dynamic pages

有了这些就差不多了。我推荐学 Rails 前花时间学下 Rack 和 Sinatra, 可以让新手对 Ruby 开发 Web 有个很好的基础。再有就是 Rails 本身的东西了

#6 楼 @knwang rack 有好书推荐么?

#8 楼 @knwang 有好老师真的很重要很重要。

#7 楼 @xiaolai 没听说过 Rack 的书。Rack 本身不难,可以从这里找些资料看看,然后贡献个总结? :)

https://github.com/rack/rack/wiki

#10 楼 @knwang 我会上你的课的。现在还不知道那一个月的时间里,我有没有空。

#5 楼 @gaicitadie 拦路虎往往并不是高级特性,都是一些很基本的问题,你可以翻翻新手问题里的帖子,看看哪些问题高级?

真正开发也是一样,实际的核心代码花费不了多少时间,浪费时间的是 debug,是对细节的调整,ruby 不熟悉就会在小问题上浪费大量时间,甚至没办法继续编码。

#8 楼 @knwang 不同人挖不同坑而已,像 6 楼提到的 Rack 和 Sinatra 我就觉得是坑。

#14 楼 @Rei 是的,Rack 和 Sinatra 非常容易变成坑,知道停在哪里非常重要。学习 Rails 的过程本身也是这样的。掉进 ActiveRecord::Base 里面出不来,或者试图明白 Routing 里面所有参数是什么意思怎么用,或者对 performance 过早担心,都是坑

这也是开源平台的一个特有的情况,就是技术点碎片化。 因为很多都是不同的人贡献的,所以,每个小东西都需要学。 不像当年 M$做一个 IDE,大家就用这个就够了。 我就在 rspec 上面卡了很久。 直到看了 codeschool 的那个课,上面总结的太好了。 顺利通过。

我觉得最坑爹的一句给新手的指导就是:‘你 ruby 不用掌握得太好,了解就行’

@xiaolai 您说的很对,英语就是最大的坑...

#17 楼 @superbatironmans5 嗯。确实不需要了解 ruby 的全部(事实上,是没办法了解全部啊!),但其实需要了解很多。

我也是误以为零基础,然后发现看http://huacnlee.com/blog/how-to-start-learning-ruby-on-rails/ http://readful.com/post/12322300571/0-ruby-on-rails 这些新手导航,开始学 Ruby on Rails Tutorial Learn Rails by Example 和 Web 开发敏捷之道这些东西,但是发现看不下去,自己只是死板地照着书上一步步做,很多东西并不理解,然后就暂时放下了。

每个人的基础都不一样,Rails 开发似乎要求掌握 Web 开发的各个方面。而一本 Rails 的入门书显然不可能让新手全部学会,最多用一章带过。

于是决定一步步先学点基础,之后再看 Rails。个人到现在还是小白一个,以下只是我的学习计划,不知道合不合理?请前辈指点。

Ruby

随便翻翻书,熟悉一些高级特性,写一些脚本,写一些几百行的小程序,尝试写一个 Gem The Ruby Programming Language Metaprogramming Ruby Eloquent Ruby Programming Ruby Everyday Scripting with Ruby Ruby Cookbook Ruby Best Practices The RSpec Book …

Web

用 Sinatra 写一些简单的程序,熟悉 HTTP 写简单的 HTML 和 CSS 学习 Javacript 学习 Datebase and SQL

因为是学生,时间还是很充裕的,Ruby 真的是一门令人喜欢的语言,没事情的时候学习下新的东西,也是令人开心的。

#6 楼 @knwang

Basic system tasks such as installing packages

回头我出个视频讲 apt-get deb dpkg 这些东西

#21 楼 @happypeter 好啊。

其实选择用 Linux 的这些多半没问题。倒是很多 Mac 用户从没开过 Terminal 的,Windows 的用户还是 VirtualBox 吧,开发会真的很痛苦

#23 楼 @xiaolai 听说过没用过,很有意思。我对这个还有 Chef, Puppet 这些都感兴趣, @happypeter 有计划做这些的 Screencast 么

#23 楼 @xiaolai 这是什么东西?

#24 楼 @knwang 先放到我的 TODOs 里了,学习学习再说。不过 railscasts.com 上有相关的

http://railscasts.com/episodes?utf8=%E2%9C%93&search=Chef

我以前说过,再重复一下,程序员最好要理解操作系统中的一些基本概念,比如环境变量

@gaicitadie 学 rails 当然要先学 ruby,因为你在 rails 中写的每一行都是 ruby 代码,而用 ruby 基本不会涉及 c

看这个帖子的回复,就知道 ruby-china 的 wiki 要改进了……;)

#29 楼 @jjym 我不否认要学 ruby,不然怎么拿 rails 开发程序?但是通过学精 ruby 以后再来学 rails 我觉得不可取,学习 rails 的过程本身就包含对 ruby 理解的加深。

如果说 ruby 是必要条件,那么 html、css、javascript、数据库、操作系统、git,哪一项不是必要条件?缺哪一项都寸步难行。这些领域加起来知识含量比 ruby 一门语言多得多,还有 rails 不同寻常的那些“理念”,大多数人学 rails 受阻不是卡在 ruby 上

社区有几个 ruby 是他第一门语言的?大多数都在 ruby 之前已经熟悉多门语言,那些语言里的 OO、模块的概念跟 ruby 里的大同小异,转换语言的时候大部分知识点可以传承。但是从其他 web 框架转 rails 很多概念都是 rails 独有的。对于只用 php 写过网页或根本就没开发过 web 的 coder,如果学 rails 挨了当头一闷棍,这棍子不是 ruby 砸出来的

#32 楼 @gaicitadie 不过,由于 ruby 的语法很灵活,乃至于很多新手看不懂一些 idioms,也确实是障碍之一吧?

#11 楼 @xiaolai 支持去上 @knwang 的课,一定能让学习曲线平滑很多。在课余时间,不知道笑来老师有没有兴趣互相帮助一下。我和 @poshboytl 可以提供你学习过程的辅助辅导,你可以帮我们 review 一下英文内容,:)

#33 楼 @xiaolai 我没否认 ruby 是 rails 的必要条件之一

#34 楼 @yedingding :) 绝对可以啊!我先帮忙再说。呵呵。

#36 楼 @xiaolai 哈。可以 GTalk 上找我,[email protected]. 或者考虑一下其他方式。

PS:其他朋友也可以加我,:)

#20 楼 @oa414 我的特别在前面说明了两年其他的 Web 开发经验的呀

#17 楼 @superbatironmans5 如果是从 Rails 开始的话,Ruby 确实不用特别去学一下。我就是这么过来的

#39 楼 @huacnlee 当时看到了,不过参考了其他的新手建议,觉得你写的比较好就跟着你的方法做了。

我说说我,学习 rails 之前做过 php,了解 http,了解一点 html,css,js,用过 mysql,2 年的 linux 和 vim 使用经验,再加上大学的各种基础的东西。 最终要的是,有一颗爱折腾的心~

#44 楼 @zgm 最后一句亮!

rails 零基础,是说 rails 本身零基础,并不代表你不需要 ruby 的语法基础,编程思维基础,html 基础,css 基础,javascript 基础,http 基础,数据库基础,xml 基础。

是一个比较大的坑

#8 楼 @knwang 嗯。严重同意,有个老师太重要了。

建议先看书,这种看似慢的方法其实是最快的,http://ruby-china.org/topics/5333

rails 确实不好掌握,ruby 本身水就很深,而且 rails 是做企业开发的架子,要用来做互联网就得破坏性创新,一旦成功威力巨大,所以来到本论坛的都是没淹死的

#31 楼 @gaicitadie

不赞同你的观点

你所谓的 Rails中的很多理念' 除了极少部分来自于除了RESTful 和 , 真没啥东西了. 剩下的理念, 几乎全部都是来自于Ruby` (MVC, SQL 例外), 除了以上我说的部分,剩下的只有概念了,大量的概念,头晕~~

还有你 2 楼的观点,前面扯的内容和最后的论据 所以ruby也被当成了rails的爸爸, 根本不搭调呀。为了精通 Java 去学 C 语言,为了精通 C 语言去研究汇编,这是假爸爸, 但是 `Ruby 是 Rails 的真爸爸'.

web 开发无非就是对数据库的增、改、删、读,ruby 基础的函数、OO、块这些知识对 web 开发已经足够了,元编程虽然 rails 用的很多,但是用 rails 开发 web 基本上用不到。

前几天看到个讨论怎么实现连减的帖子,各种简便的实现方式精彩不断。但是这种技巧对 web 开发的效率提升几乎为 0。有时间去思考那个还不如思考一下怎么布局一个论坛、一个商城,去思考怎么规划各个模块,怎么实现业务逻辑。这些东西才是 web 开发真正的价值,虽然实现这些东西都需要写 ruby 代码,但是可以认为与 ruby 无关。再打个比方,语言学家不一定能写出优秀的小说,甚至写不出像样的小说。

会有新人在困惑,为什么我写不出 ruby-china 呢?为什么写不出 iteye、twitter、微薄?甚至写一个网站都不知道怎么开头,他们困惑的时候会找这样的帖子寻找答案。如果从精通 ruby 去寻找突破口,那么可能会离 web 越来越远,迷上了磨刀,却对砍柴失去了兴趣

苦逼 java 表示 做 WEB 还是得用 rails

#16 楼 @xuluan 求 code school 上讲 rspec 的地址。

会写代码不一定能做好的项目,是有基础知识的积累的,比如算法,数据结构,操作系统,数据库,这些必须有相应概念,如果做高性能系统,还需要了解各种流行架构,cache 系统,分布式系统等等,光单纯的程序员竞争力是不够的

web 开发哪儿有什么 0 基础,html,css,session,cookie,http 协议等等不说精通,至少要真的很明白,好在这些知识都是通用的,rails 受大家欢迎也是因为其视图模板可以用 html 来写,在我看来比 asp.net 是漂亮多了

我倒是觉得,新手不要太介意自己“什么也不懂”,教程上看不懂的东西,要么暂时跳过,要么就先死记硬背下来,走完整个教程,逼着自己去写一个完整的应用出来(即使大部分内容都看不懂,靠 Google + 复制粘贴 + 靠谱的提问也能做到),然后再慢慢深入学习各方面的知识。

想当年我在 VB 和 Delphi 里拖控件的时候,连什么叫变量都不知道,第一次用 C 语言写代码时完全不懂 malloc 的使用,在 N 次 trail & error 之后程序才成功地编译 & 运行……

#60 楼 @iwinux 嗯。不懂也要走完,这个观念特别重要。看来你是我眼中那种“天生的递归学习者”。

#8 楼 @knwang 这就是创业和没有创业的区别,思维不一样,出发点不一样,定位也不一样。不过我也越来越推荐 knwang 的方法了,BDD,browser driven development。 先开发一个产品,然后迅速上线,接受用户的批评,然后在批评中改进,提升,获得更多的用户。不要关起们来研究技术,技术是工具,用来解决问题的。

#63 楼 @woaigithub

BDD 一般指的是 Behavior Driver Development 的了。我说的 Browser Driven Development 是半开玩笑的。除非 prototype 非常简单,业务也非常直白,写些测试还是需要的,尤其涉及到钱。

不过意思还是这样的。程序员和创业者的思路是很不一样的,而“程序员创业者”这个职业只是在最近几年才开始形成小气候,而大部分人也是在摸索中前进的。所以看互联网 Start up 里面真正由程序员做出来的总体比例其实并不大(但是少数成功的一般都会做的很大)。经验要积累,所以创业要趁早啊。

其实 rails 并不是适合 没有一点 web 开发经验的人,一个 asp 开发者都比一个精通 ruby 的人 要好的很,因为至少他知道 web 原理,加上一点 元编程的知识 就可以开始 rails 了。

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