Quanto tempo levará um programador a aprender ruby? [fechado]

Quanto tempo demora um desenvolvedor a aprender ruby? E desenvolver um site de produção como o stackoverflow ? Normalmente. Se o desenvolvedor tem experiência. net, mas sem experiência ruby e MYSQL ou PostgreSQL.

 6
Author: 唐英荣 , 2010-06-09

3 answers

Trabalhei com a. net durante 3-4 anos, e com a java durante 3 anos antes disso, agora trabalho numa loja de trilhos. Aprender a sintaxe básica é muito simples. Envolver a cabeça em torno de alguns dos conceitos vai demorar muito mais tempo. Como uma pequena lista de verificação
  • como as variáveis de instância funcionam e são definidas (muito diferentes então c#)
  • Como tudo relacionado com os métodos é apenas açúcar para passar a mensagem.
  • o que significa o eu em qualquer parte do seu código (especialmente o eu no âmbito da declaração da classe vs âmbito da declaração do método)
  • mixinas
  • quando usar um módulo, quando usar uma classe
  • como as classes são apenas um tipo diferente de objeto
Isto é uma coisa simples. Depois disso, você quer aprender mais sobre isso
  • aprender sobre os callbacks de nível de língua mais comumente usados (como method_mising e included)
  • envolver a cabeça em torno de métodos que definem métodos
  • Compreensão blocos, coroutinas, procs, e como todos eles trabalham juntos (este é provavelmente o número um)
  • compreender como funciona o método de análise, e escolher a quantidade certa de () ou {} que irá resultar na Menos tipagem
  • envolver a tua cabeça em torno da individuação do objecto (isto levou algum tempo para mim)
  • pára de usar objectos para tudo, e cole-te às barras, se for caso disso
  • Aprende quando a meta-programação é apropriada e quando não é. não o conheço bem. Aprender a resolver problemas comuns com estas novas ferramentas de melhores maneiras é possível com algo como C# (Construtores, adaptadores e estratégias destacam-se para mim como os mais radicalmente diferentes em termos de padrões GoF)
É difícil dizer quanto tempo isto vai demorar. Para mim, as primeiras partes demoraram cerca de um mês a brincar com ruby e a ler livros. A segunda metade provavelmente levou mais de três ou quatro (embora houvesse trilhos aprendendo lá too) Quanto ao MySQL / pg, não tens de começar do zero. A ferramenta não é tão grande quanto o SSMS (imo, a melhor parte da pilha de MS), mas é suficiente para sobreviver. Se você usa trilhos, a maioria das coisas da base de dados é abstraída. Se você precisa verificar algo no db, nove em cada dez vezes você acende um script / console e apenas usa a API ActiveRecord (que está fora deste mundo incrível)

Editar:

Individuação do objecto significa que cada objecto instância é sua própria "coisa", que é baseada em uma classe, mas pode não ser apenas essa classe. Aqui estão alguns exemplos Primeiro, construímos uma classe.
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
Agora vamos instanciá-lo duas vezes.
irb(main):006:0> t1 = TestClass.new
=> #<TestClass:0x7fea78ee6f78>
irb(main):007:0> t2 = TestClass.new
=> #<TestClass:0x7fea78ed6ba0>

Def a method that is only on 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

Redefinir um método que é puxado para dentro da classe, mas apenas em 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

O código acima é extremamente raro de ver, porque ter um monte de definição de método em linha em outro método é geralmente muito feio. A mistura em módulos com instâncias específicas é muito poderosa, porém, especialmente quando você leva a datilografia de pato em conta.

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

Esta é mais avançados, e é uma daquelas coisas que é a última coisa que você deve estar para chegar, mas há casos em que fazer um a voar estender é muito mais solução elegante para um problema, em seguida, as alternativas (o que é comum um aviso com mais avançado ruby coisas, não fazê-lo desta maneira porque você pode, só o fazemos quando necessário)

 11
Author: Matt Briggs, 2010-06-10 12:22:13
Esta é uma questão massivamente subjetiva, pois depende de sua experiência e tempo. No entanto, eu recentemente aprendi Ruby, e foi capaz de pegar o básico ao longo de alguns dias de ler o livro picareta. Eu recomendaria esse livro se você tiver experiência de programação anterior, ou o Guia pungente de _why para Ruby se você nunca programou antes.

Então, você deve ser capaz de saber alguma sintaxe básica após algumas horas de trabalho, mas vai levar muito mais tempo para ser proficiente com a língua. Espere alguns meses de aprendizagem sólida para ser capaz de se chamar avançado.

Desde que você mencionou o desenvolvimento da web, frameworks como Sinatra são muito fáceis de começar. Rails é um pouco mais difícil, e requer mais aprendizagem antes que um site funcional poderia ser construído. Então, depois de ter aprendido Ruby em si, eu diria cerca de 2 a 3 semanas (dependendo do tempo investido) para ser capaz de construir sites 'adequados' com Sinatra. Quanto a algo como StackOverflow, isso levaria muito mais tempo, e provavelmente uma equipe de desenvolvedores.
 1
Author: bennybdbc, 2010-06-09 10:25:23

Se seguires o "Ruby Koans", vais aprender muito sobre a Ruby em cerca de 4 horas. Depois disso, você tem a prática, e ela virá.

Não é uma língua difícil de aprender, especialmente se você já está familiarizado com linguagens que misturam conceitos funcionais e orientados a objetos (como C#). É uma linguagem muito expressiva, e permite que você faça mais do que C# quando você entra em meta-programação.

Quanto ao desenvolvimento de sítios web com a Ruby, o "defacto framework" é Rails, que um site como StackOverflow pode certamente ser escrito. Isto vem com a sua própria curva de aprendizagem mais íngreme (IMO). Rails abstrata a base de dados longe de você, então saber muito sobre as bases de dados em particular não é uma necessidade.
 0
Author: Brian Genisio, 2010-06-09 10:21:29