10
votes

Combien de temps faudra-t-il un codeur pour apprendre Ruby?

Combien de temps faudra-t-il pour un développeur d'apprendre Ruby? Et développer un site Web de production comme Stackoverflow? Normalement. Si le développeur a une expérience .NET mais aucune expérience de Ruby et MySQL ou PostgreSQL.


2 commentaires

Combien de temps dure une str.slice (fixnum, fixnum)?


Combien de routes un homme doit-il descendre ...


3 Réponses :


0
votes

Si vous suivez le "Ruby Koans" , vous en apprendrez beaucoup sur RUBY IN 4 heures. Après cela, vous avez la pratique et cela viendra.

Ce n'est pas une langue difficile à apprendre, surtout si vous connaissez déjà des langues qui mélangent des concepts fonctionnels et orientés objet (comme C #). C'est une langue très expressif et vous permet de faire plus que c # lorsque vous entrez dans Meta-programmation.

En ce qui concerne le développement de sites Web avec Ruby, le cadre de Defacto est des rails, qu'un site comme Stackoverflow peut certainement être écrit. Cela vient avec sa propre courbe d'apprentissage plus raide (imo). Les rails résument la base de données loin de vous, alors en sachant que beaucoup sur les bases de données particulières n'est pas une nécessité.


0 commentaires

2
votes

Il s'agit d'une question massivement subjective, car cela dépend de votre expérience et de votre temps. Cependant, j'ai récemment appris Ruby et j'ai pu ramasser les bases sur quelques jours de lecture du livre Pickaxe. Je recommanderais que le livre si vous avez une expérience de programmation préalable, ou le guide poignant de rubis de Ruby si vous n'avez jamais programmé auparavant.

Donc, vous devriez pouvoir connaître une syntaxe de base après quelques heures de travail, mais cela vous mènera beaucoup plus longtemps pour maîtriser la langue. Attendez-vous à quelques mois d'apprentissage solide pour pouvoir vous appeler avancé.

Depuis que vous avez mentionné le développement Web, des cadres tels que Sinatra sont assez faciles à démarrer. Les rails sont un peu plus difficiles et nécessitent plus d'apprentissage avant que un site Web fonctionnel puisse être construit. Ainsi, après avoir appris Ruby lui-même, je dirais environ 2 à 3 semaines (en fonction du temps investi) pour pouvoir construire des sites Web «appropriés» avec Sinatra. Quant à quelque chose comme Stackoverflow, cela prendrait beaucoup plus de temps et probablement une équipe de développeurs.


1 commentaires

J'adore _Pourquoi et son guide poignant, mais alors qu'il était divertissant, j'ai eu du mal à en apprendre.



17
votes

J'ai travaillé avec .NET pendant environ 3-4 ans et Java depuis 3 ans avant cela, je travaille maintenant dans un magasin de rails.

L'apprentissage de la syntaxe de base est morte simple. Enroulant votre tête autour de certains des concepts prendra beaucoup plus de temps. Comme un peu d'une liste de contrôle p>

  • Comment les variables d'instance fonctionnent et sont définies (très différentes que c #) li>
  • Comment tout ce qui concerne les méthodes n'est que du sucre pour le passage de message li>
  • Qu'est-ce qui signifie à n'importe quelle partie de votre code (surtout en particulier la déclaration de déclaration de la classe VS Méthode Déclaration Portée) LI>
  • mixines li>
  • Quand utiliser un module, quand utiliser une classe li>
  • Comment les classes sont juste un type différent d'objet li> ul>

    C'est le genre simple. Après cela, vous voulez apprendre plus de ce genre de choses p>

    • Apprendre sur les rappels de niveau de langage les plus couramment utilisés (comme méthody_missing et inclus) li>
    • Emballage de votre tête autour des méthodes qui définissent des méthodes li>
    • Comprendre les blocs, les coroutines, les processus et comment ils travaillent tous ensemble (c'est probablement le numéro un) li>
    • Compréhension de la manière dont la méthode analyse fonctionne et choisit la bonne quantité de () ou {} qui entraînera la composition du moins li>
    • Emballage de votre tête autour de l'indemnuation de l'objet (cela a pris un certain temps pour moi) LI>
    • arrêtez d'utiliser des objets pour tout et collez-vous à des hachages, le cas échéant li>
    • apprendre lorsque la méta-programmation est appropriée et que, quand ce n'est pas (beaucoup, de nombreux rubyistes, ils ne connaissent pas bien cela) Li>
    • Apprendre à résoudre des problèmes courants avec ces nouveaux outils de meilleure manière, est possible avec quelque chose comme C # (constructeurs, adaptateurs et stratégies qui me démarquent comme le plus radicalement différent en termes de motifs GOF) li> ul>

      Il est difficile de dire combien de temps cela prendra. Pour moi, les premiers bits ont pris environ un mois de jouer avec des livres de rubis et de lecture. La seconde moitié a probablement pris plus de trois ou quatre (bien qu'il y avait des rails d'apprentissage là-bas aussi) p>

      comme pour mysql / pg, ce n'est pas comme si vous devez commencer complètement à partir de zéro. L'outil n'est pas aussi génial que SSMS (IMO, la meilleure partie de la pile MS), mais il suffit d'obtenir. Si vous utilisez des rails, la plupart des trucs de base de données sont abstraits. Si vous avez besoin de vérifier quelque chose dans la DB, neuf fois sur dix vous déroulez un script / console et utilisez simplement l'API ActiveCord (qui est hors de ce monde incroyable) p>

      EDIT: P >

      Individuation de l'objet signifie que chaque instance d'objet est sa propre "chose", qui est basée sur une classe, mais n'est peut-être pas simplement cette classe. Voici quelques exemples P>

      Tout d'abord, nous construisons une classe p> xxx pré>

      Nous l'instanciez deux fois p> xxx pré> p> déformer une méthode qui est uniquement sur t2 code> p> xxx pré>

      redéfinir une méthode tirée de la classe, mais uniquement sur t1 CODE> P>

      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
      


2 commentaires

ajouté une explication comme édition


Merci Matt. Pour l'instant, je pense que l'individuation de l'objet est quelque chose comme JavaScript ou C # 4.0. Mais avec un soutien natif. Je pense que le rubis vaut la peine d'essayer dans le nouveau projet. Merci pour tout ce que vous avez dit!