开发人员学习ruby需要多长时间。并开发像stackoverflow这样的生产网站?一般。 如果开发人员具有.NET经验但没有ruby和MYSQL或PostgreSQL经验。
答案 0 :(得分:14)
我在.net工作了大约3 - 4年,在此之前我在java工作了3年,现在我在铁路商店工作。
学习基本语法很简单。围绕一些概念包围你需要更长的时间。作为一个清单
这是简单的事情。在那之后,你想要学习更多这些东西
很难说这需要多长时间。对我来说,第一部分花了大约一个月玩红宝石和阅读书籍。下半场可能更像是三四个(尽管那里也有铁杆学习)
至于MySQL / pg,它不像你必须从头开始。工具没有SSMS那么好(imo,MS堆栈的最佳部分),但它足以让你顺利通过。如果使用rails,大部分数据库内容都会被抽象掉。如果你需要在数据库中查看一些内容,那么十分之九会启动一个脚本/控制台并使用ActiveRecord api(这个世界太惊人了)
编辑:
对象个性化意味着每个对象实例都是它自己的“东西”,它基于一个类,但可能不仅仅是那个类。这里有一些例子
首先,我们建立一个类
irb(main):001:0> class TestClass
irb(main):002:1> def tc
irb(main):003:2> puts 'testclass method'
irb(main):004:2> end
irb(main):005:1> end
=> nil
现在我们实例化它两次
irb(main):006:0> t1 = TestClass.new
=> #<TestClass:0x7fea78ee6f78>
irb(main):007:0> t2 = TestClass.new
=> #<TestClass:0x7fea78ed6ba0>
修改仅在t2
irb(main):008:0> def t2.only_on_t2
irb(main):009:1> puts 'this will not be accessible anywhere else'
irb(main):010:1> end
=> nil
irb(main):011:0> t1.only_on_t2
NoMethodError: undefined method `only_on_t2' for #<TestClass:0x7fea78ee6f78>
from (irb):11
from :0
irb(main):012:0> t2.only_on_t2
this will not be accessible anywhere else
=> nil
重新定义从类中提取的方法,但仅限于t1
irb(main):013:0> def t1.tc
irb(main):014:1> puts 'redeffing something picked up from the class'
irb(main):015:1> end
=> nil
irb(main):016:0> t1.tc
redeffing something picked up from the class
=> nil
irb(main):017:0> t2.tc
testclass method
=> nil
上面的代码非常罕见,因为在另一种方法中嵌入一堆方法定义内容通常非常难看。尽管在模块中混合使用特定实例非常强大,尤其是考虑到鸭子类型时。
irb(main):018:0> module TestModule
irb(main):019:1> def tm
irb(main):020:2> puts 'this is where it gets interesting'
irb(main):021:2> end
irb(main):022:1> end
=> nil
irb(main):023:0> t2.extend TestModule
=> #<TestClass:0x7fea78ed6ba0>
irb(main):024:0> t2.tm
this is where it gets interesting
=> nil
irb(main):025:0> t1.tm
NoMethodError: undefined method `tm' for #<TestClass:0x7fea78ee6f78>
from (irb):25
from :0
irb(main):026:0> t1.is_a? TestModule
=> false
irb(main):027:0> t2.is_a? TestModule
=> true
这是更先进的东西,并且是你应该达到的最后一件事情之一,但有些情况下,做一个动态扩展是一个更优雅的解决方案,然后替代方案(这是一个常见的警告与最先进的红宝石的东西,不要这样做,因为你可以,只在你需要时这样做)
答案 1 :(得分:1)
这是一个主观的主观问题,因为它取决于你的经验和时间。但是,我最近学习了Ruby,并且在阅读了Pickaxe书的几天之后就能够学到基础知识。如果您之前有编程经验,我会推荐这本书,或者如果您以前从未编程过,那么我会推荐给Ruby的Poignant Guide。
因此,您应该能够在工作几个小时后了解一些基本语法,但是要精通这门语言需要花费更长的时间。期待几个月的扎实学习能够称自己为先进。
既然你提到了web开发,像Sinatra这样的框架很容易上手。 Rails有点难,在构建功能性网站之前需要更多的学习。因此,在学习了Ruby之后,我会说大约2到3周(取决于投入的时间)能够与Sinatra建立“适当的”网站。至于类似StackOverflow的东西,这需要更长的时间,可能还需要一组开发人员。
答案 2 :(得分:0)
如果您遵循"Ruby Koans",您将在大约4小时内学到很多关于Ruby的知识。在那之后,你有了练习,它会来。
这不是一门难学的语言,特别是如果您已经熟悉混合功能和面向对象概念的语言(如C#)。它是一种非常富有表现力的语言,当你进入元编程时,它让你做的不仅仅是C#。
至于使用Ruby开发网站,defacto框架是Rails,可以写出像StackOverflow这样的网站。这带有自己的,更陡峭的(IMO)学习曲线。 Rails确实将数据库从您身上抽象出来,因此了解特定数据库并不是必需的。