Ruby on Rails应该具有陡峭的学习曲线还是仅我一个人?[关闭]


17

我是一个自学成才的程序员。自10月以来,我一直在学习RoR,而且强度有所不同(有时一天一整天,有时几周都没空)。在此之前,我只了解Java,但是非常了解。我听到过很多关于RoR的炒作,以及它如何使您快乐,多产等。到目前为止,这只是让我感到沮丧。我是从敏捷书中学到的,并且我怀疑部分困难可能与我不了解JavaScript和CSS以及对数据库和HTML的掌握不佳有关。但是显然,我完成敏捷书中的项目所花的时间比其他人花了很多时间,我仍然不记得很多。关于Rails的某些事情我似乎无法理解,例如何时使用符号,何时不使用符号或如何调用动态方法。

最近,我收到了一个小的Rails任务,要求我对界面进行一些小的更改。我花了大约25个小时,尽管我在理解代码方面取得了一些进步,但我仍然不知道如何进行。我什至不能问Stack Overflow,因为要提供上下文,我必须提供太多代码。

所以我的问题在标题中:RoR应该花很长时间学习还是我只是很慢?可能是我从错误的书中学到了什么吗?我的学习风格使我要么什么都不懂,要么什么都不懂(如果有的话)。


1
学习永远渐进式的,每次学习都会使您了解更多。解决问题非常困难,需要耐心(不管编程语言的专业知识如何),一旦您接受它,就会更容易以冷静的心来解决问题。
Aditya P

我以为这样做了,但这可能是因为就我而言,它的约定非常明确。非常习惯于配置很多它按照惯例所做的工作。
钻机

Answers:


17

从您的问题来看,很明显,您不仅要尝试学习Rails,而且同时您必须掌握Web开发的概念以及数据库和SQL。这是一项艰巨的任务,因此请耐心等待。

另一方面,使用Rails别无选择-您必须同时学习MVC中的 M,V和C这三者,但是周围的任何MVC框架都是这种情况,其中Rails最简单, 我会说。

相反,您可以做的是从一些简单的框架开始,例如Sinatra,直到您熟悉Ruby和HTTP的基本概念,然后再慢慢地向更丰富的表示形式(视图和CSS)和基于数据库的模型发展。


10

当您学习Rails且唯一的背景是Java时,您不仅在学习新的Web框架。您也在学习一种新的编程语言,它与Java有很大的不同。

它可能有助于您先学习Ruby,然后再了解Rails及其约定。一旦我不再需要理解Ruby并且可以读取(和编写)Rails代码/模板,学习Rails的功能以及如何做对我来说就变得容易得多。

我浏览了Ruby on Rails教程,发现它非常有帮助。该教程是免费的,并且有Rails 2.3和3.0的版本。您可能还会发现一般阅读MVC(模型-视图-控制器)和Web开发/页面生命周期会有所帮助。


6

安妮塔,我和您有几乎相同的经历。但是我想我现在明白为什么这么难学习了:

  • RoR不是一种语言,它是多种技术,语言和技术的集合。
  • 它不像Java,C ++或其他具有逻辑结构的语言
  • 没有一种学习方法,也没有一本书可以教你(稍后会详细介绍)
  • 我认为,社区似乎有某种“被排斥”的态度,在学习时没有其他社区宽容。人们经常对如何“完成”事情有不同意见。这是自上而下,来自发明RoR的人
  • 在大多数RoR课程中,都强烈建议将测试作为开发的核心部分,并且测试语言是DSL的DSL,也可以增加已经很高的学习负担。
  • 该语言没有适当的文档,只有API,一些指南以及您可以找到的任何书籍。
  • 一些核心方法和技术是“自动的”,尚不清楚它们如何工作。例如,has_secure_password方法。

我已经学习了一年多了,以下是我从经验中学到的一些知识:

  • 从几个角度攻击它。当您有几本书籍,教程和博客可以使用时,这可以“打开”学习的途径。单独拥有一本书或博客可能会让您“陷于困境”。
  • 考虑学习一些 HTML / CSS和Ruby。在您深入了解RoR之前,还不止这些,只是足够了。
  • 参加有关RSpec的课程(或类似的测试方法)。RSpec上的Codeschool特别好,这将阻止您因为无法参加测试而陷入RoR课程。
  • 获得约3本书。Obie Fernandez的“ The Rails 3 Way”是必须的,当您根本没有得到某些东西时,可以用作参考(不包括封面内容)。您提到的敏捷人士让我感到困惑。“学习Rails 3”的发展方向不同,可以帮助解决一些其他教程无法解决的问题。
  • 进行截屏或在线学习课程。迈克尔·哈特尔(Michael Hartl)的教程很好,但是学习却非常艰巨。我发现上面的书,再加上RSpec的Codeschool课程,都帮助我理解了这一点-但我仍然需要在一些小问题上与作者联系。
  • 问,问,问!有一个Ruby论坛,Rails论坛,IRC房间和StackExchange等- 经常使用它们!

请不要放弃-您很聪明,但是似乎拥有与我相似的学习风格,并且Rails很难学习并且在任何地方都不是(完全)很好地教书的。


4

也许问题出在红宝石(和/或铁轨)上少了,而更多的是您对HTML / CSS / JavaScript和SQL及数据库只有“摇摇欲坠”的事实。

Rails是一个“全栈框架”。如果您之前的编程经验是可能带有一些Swing的核心Java,那么同时需要学习很多概念。

如果要解决此问题,我将从首先确定SQL和关系建模入手(SQL没有浏览器布局问题!)。当您对数据库层有信心时,请使用ActiveRecord并了解Rails如何包装数据库中的元组。

下一步将是学习控制器和路由,然后是UI(html / javascript等)。

如果要使用几乎任何Web框架进行任何Web开发,则都需要了解SQL和关系建模(即使以后选择NoSQL路由)。


1

我也有Java背景,并且学习Rails时非常困难。我遇到了您提到的所有相同问题。我发现观看railscasts.com在一开始就有所帮助。只看别人是如何做的就可以帮助我继续前进,然后我就开始自己做事。自从Rails 3发布以来,我还没有碰过Rails。


1

您的话“有时整天,有时好几个星期都没有”告诉我所有我需要知道的。如果您正在学习一种新的语言AND框架(我想这就是您正在做的事情,因为您提到了“ Ruby on Rails”,而不仅仅是“ Ruby”),那么一致性会有所回报。我发现学习和保留概念的唯一方法是每天大约半小时学习,通常是在一天结束时,就寝之前。如果我学习了半个多小时,我会变得烦躁不安,失去注意力。如果我学习较少,我就不会保留所学的知识。

消除干扰-这是我最好的建议。并每周学习每一天。在不知不觉中,事情就会开始发生。

我没有看到任何后续帖子,所以我想知道您的情况如何。已有2年了,学习成为顶级Web开发人员肯定应该有足够的时间!


0

我学习Ruby和Rails已有8个月了。我对HTML,XML,SQL有了一定的了解。我仍然发现与您相同的问题,对我有用的是解决实际问题,而不仅仅是阅读和希望理解。您可能必须对代码段或mvc进行很多小型测试才能掌握一个概念。符号是我仍在努力的东西。一次解决一个问题,在解决这些问题时,您将学到解决项目中另一个问题所需的知识。

答:不,它不应该具有陡峭的学习曲线,该曲线因您的背景而异。


0

它可以。我知道每次我尝试坐下来并专注于学习Rails时都会碰到“学习曲线”(现在每隔几个月,大约2年以上)。问题在于,Rails中的许多事情都以闪电般的速度变化,而且您发现的资源通常几乎立即就过时了。

我的建议是先开始关注Ruby(至少是基础知识),然后再关注Rails,因此您不必完全依赖Rails框架来为您处理所有事情。出于明显的原因,您还应该复习HTML / CSS / Javascript。同样,从经验中也不要陷入Rails世界不断变化的情况:如果您忽略了Rails熟悉的所有新奇事物,例如Haml,Sass,RSpec / BDD,Cucumber等,或者您将不得不淹没学习BDD和RSpec来编写代码,必须学习Haml和Sass(虽然不难,但这是另一回事)才能编写前端代码,等等。


0

任何编程语言都有一个学习曲线。我们并不是真的以传统方式学习语言。像C / C ++一样,但是当事情变成现实时,我们还必须了解几种技术的基本要素。

最好的方法就是边做边学。竭尽全力自己做。通常我们会阅读一些东西,但是当涉及到真实图片时,我们会坚持下去。我是本地C ++程序员,我也可以使用C#进行编码。我知道从抽象的角度来看,该语言和库有很多好处,但是我只是阅读和跳过了许多主题。所以,如果你问我,我实际上是残障人士。

我正在学习Django框架。我选择的书很有趣,很简单,它创建了一个社会书签应用程序。因此,这就像通过真正的项目实践从头开始学习到高级一样。我建议您采用这种方式,因为我们正在自己学习中。


0

RoR(尤其是第二个“ R”)的问题在于,大多数学习教程都侧重于教您“代码猴子”样式。尤其是《敏捷》一书,其中充满了肤浅的“现在我们要做的是,不用理会”编程步骤。加上他们不断改变自己的范例的事实-即,首先,他们在宣传RJS的发展之路,现在突然之间,它与UJS有关。

正如这里的某些人所建议的那样,您可以先尝试学习Ruby语言本身的来龙去脉,然后再继续学习框架。如果您仍然想同​​时学习两者,我发现这本名为“ Ruby for Rails”的书会很有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.