Ruby ou Python? [fermé]

24

Cette question est extrêmement subjective et ouverte. Cela pourrait même ressembler à quelque chose que je devrais simplement rechercher par moi-même et prendre ma propre décision. Mais je voudrais le mettre là-bas et obtenir des réflexions des autres.

Pour faire court - j'ai épuisé la course aux rats et je suis en congé sabbatique autofinancé cette année. Une grande partie consiste à prendre une pause dans la vie de l'entreprise et à voyager, mais je veux aussi jouer avec les nouvelles technologies et faire des projets d'auto-apprentissage, pour rester au courant de la programmation, et bien - j'aime juste bricoler avec programmation, quand il n'y a pas de pression!

Voici la chose: je suis un programmeur C / C ++ / Java à vie. Je suis un peu snob avec des crochets depuis que je travaille avec cette famille de langues pour toute ma carrière de programmeur. Je voudrais donc apprendre une langue qui n'est pas si étroitement liée syntaxiquement à ce groupe. Ce que je recherche essentiellement, c'est un langage qui est relativement polyvalent, amusant à apprendre, qui a de nouveaux concepts différents de C ++ / Java et qui a une bonne communauté. Une considération secondaire est qu'il a de bons cadres de développement Web. Une considération tertiaire est que ce n'est pas totalement académique (lire: il existe des emplois dans le monde réel qui l'utilisent).

Je l'ai réduit à Ruby ou Python. Mon impression de Ruby est qu'il est extrêmement orienté Web - que la seule vraie application est un langage de script côté serveur pour faire des trucs Web (principalement Ruby on Rails). Je n'ai pas du tout une impression de Python, sauf qu'il semble avoir une base de fans passionnés et semble être un langage assez polyvalent.

TL; DR et pour le dire le plus succinctement possible: lequel serait le mieux pour un gars C ++ / Java pour apprendre à obtenir de nouvelles perspectives sur la programmation? Et lequel est plus ouvert et à usage général et applicable à un ensemble plus large d'applications? Je penche pour Ruby pour le moment, mais je crains à un point tel qu'il semble qu'il ne soit utilisé que comme un langage Web côté serveur.

Tables Bobby
la source
"Pour Python, je n'en suis pas si sûr"? De quoi? En quoi est-ce pertinent?
S.Lott
Vous pouvez trouver beaucoup plus sur Ruby vs Python sur StackOverflow. Je suis surpris que Lennart lui-même n'ait pas encore commenté. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/…
Job du
@ S.Lott: Désolé, ce n'était pas clair. Je voulais juste dire que je n'ai pas encore une impression très détaillée de Python. Sauf qu'il est polyvalent et a une forte base de fans.
Bobby Tables
9
Perl, bien sûr.
Bruce Alderman
Cela tombe dans le "Quelle technologie est meilleure?" catégorie de questions qui, selon la FAQ, sont considérées comme hors sujet.
ChrisF

Réponses:

35

Ne vous laissez pas tromper par le fait que le Ruby est passé dans le langage courant en grande partie à cause de Rails (le cadre d'application Web). C'est un langage de programmation à usage général, et vous pouvez l'utiliser pour tout ce que vous pouvez utiliser dans n'importe quel autre langage.

Jouez avec Ruby et voyez si vous en tombez amoureux. Soit vous le ferez, soit vous ne le ferez pas. C'est un peu comme la musique de Grateful Dead; vous l'aimez ou vous ne le supportez pas.

Ruby va étirer votre cerveau. À bien des égards, c'est aussi loin que possible de C ++ / Java. Je viens d'un milieu C et C #, et j'ai trouvé la dynamique et la puissance de méta-programmation de Ruby assez enivrantes.

Cela étant dit, Python est un langage absolument exceptionnel, et il vous fera sortir de votre parenthèse frisée.

Pourquoi ne pas apprendre les deux? J'utilise les deux régulièrement: Ruby pour la programmation avec Rails et Python pour travailler avec Google AppEngine.

Adam Crossland
la source
2
+1 pour une référence Dead
,;
1
Merci. Je vais d'abord avec Ruby et voir si j'en tombe amoureux. :)
Bobby Tables
8
Je suis un peu en retard à la fête, mais trypython.org et tryruby.org sont d'excellents sites pour essayer les langues.
Michelle Tilley
17

Je n'ai certes pas utilisé Ruby, mais voici mes impressions sur Python:

  • lorsque j'écris un pseudocode pour dessiner une fonction, je trouve que ce que j'écris pratiquement est du Python, et parfois remarquablement peu de réécriture est nécessaire pour en faire un code réel. Vous pouvez même ignorer le pseudocode tous ensemble et simplement exprimer vos pensées directement en Python
  • quand j'ai besoin de faire quelque chose qui semble être une tâche courante, Python a tendance à avoir les fonctions nécessaires (à un niveau élevé) intégrées dans sa bibliothèque standard. Par exemple, au début, lorsque je voulais ouvrir un fichier et le scanner ligne par ligne, la réponse était aussi simple que «pour les lignes dans monFichier: dostuff (lignes)». Je pense que cela s'appelle l'approche `` batteries incluses '', et elle diffère de certaines autres langues que j'ai utilisées où les opérations quotidiennes sont beaucoup plus délicates

Ces deux choses me viennent à l'esprit.

Andrew M
la source
Je pense que ce sont exactement les raisons pour lesquelles je préfère Ruby. Ruby est plus OO et a moins de mots clés. Par exemple en Ruby "[1,3,5] .length ()" et "[1..10] .each () ..." vs Python "len ([1,3,5])" et "for i dans la plage (1,11) "
LennyProgrammers
6
@Lenny - Ruby a en fait plus de mots-clés: krijnhoetmer.nl/stuff/ruby/keywords vs zetcode.com/tutorials/pythontutorial/keywords - pour Python 2.6, cela fait 31 mots-clés pour Ruby's 38. De plus, 'more OO' semble être utilisé assez subjectivement ici, car dans les deux langues "tout est un objet" s'applique (et encore plus littéralement avec Python 3.x, comme tout sous-classe object). En outre, len(obj)est un raccourci pour appeler obj.__len__()et for i in rangerésume également les détails opérationnels des objets générateurs de fonctionnement. Je pense que / équivalent mais différent / est plus précis.
Wayne Werner
j'ai le sentiment que Lenny voulait dire que vous utilisez moins de mots-clés dans votre déclaration typique, par exemple «pour i dans la plage (1,11) a 3 mots-clés (pour, dans, plage). Bien sûr, parfois plus de mots, c'est mieux.
Andrew M
5
la plage n'est pas un mot clé, c'est une fonction
Kugel
9

Si vous prenez une année sabbatique, je vous suggère de passer une semaine ou deux à apprendre chacun, puis de décider par vous-même de ce que vous préférez. J'ai de l'expérience avec les deux et à mon avis, ils sont tous deux si capables que vous avez vraiment besoin de décider lequel vous préférez.

Jason Webb
la source
+1, Les deux semblent assez faciles. Clojure, d'autre part ... est très amusant, mais c'est aussi plus difficile.
Job
7

OMI, vous devriez aller avec Python. La raison en est qu'il est plus polyvalent, vous pouvez l'utiliser pour presque tout. Ruby est, comme vous l'avez remarqué, plus utilisé dans le développement web en raison de ses frameworks web. Contrairement à Python, Ruby n'est pas très bon pour le développement d'applications de bureau gui, de programmes de traitement numérique, statistique ou d'image.

Marcin
la source
1
Pouvez-vous indiquer ce qui fait que Ruby "n'est pas si bon pour le développement d'applications de bureau gui, de programmes de traitement numérique, statistique ou d'image"? Quand je programmais en Ruby en 2001/2002, je faisais toutes ces choses avec plaisir.
LennyProgrammers
7
@ Lenny222. Dans Ruby, il n'y a pas de bibliothèques telles que numpy, scipy, sympy, PIL, matplotlib. Quelles que soient les bibliothèques numériques, elles sont loin derrière Python. De même avec la documentation et les bibliothèques pour le développement d'applications gui.
Marcin
1
Vous dites que Python est plus polyvalent et pointez ensuite sur les bibliothèques pour savoir pourquoi. Je vous accorde qu'il n'est pas aussi facile de faire certaines choses dans Ruby faute d'une bonne bibliothèque, mais cela ne signifie pas que Ruby lui-même est en quelque sorte moins polyvalent.
Twisol
@Twisol c'est exactement pourquoi: Python étant très simple (et cohérent) est la raison pour laquelle il est si polyvalent et pourquoi il y a tant de bibliothèques utiles (IMO).
Nadir Sampaoli
6

Ruby existe depuis bien plus longtemps que les rails, alors laissez-moi le dire dans le monde Ruby != web, même si cela fait très bien. Il y a une multitude de choses liées aux systèmes qu'il peut et qu'il fait. Il semble que tout le framework Rails ait englouti le reste du monde Ruby. Et oui, je suis fan de Ruby.

Python, d'autre part, a beaucoup à faire et il a été intégré à presque tout sur Linux. Cela me dit qu'il est probablement assez facile à intégrer dans des programmes plus grands (par rapport à Ruby, Java, etc.). Il y a une bonne quantité d'infrastructure Ubuntu Linux écrite avec Python, ce qui me dit que Python a une application dans la programmation de systèmes. J'ai entendu que son framework web est vraiment sympa, je n'ai pas encore joué avec.

Cela dit, Ruby et Python sont tous deux des langages de même capacité, et vous les trouverez vous faciliter la vie beaucoup. Ruby a beaucoup plus de têtes Web dans sa communauté, mais ce n'est pas la totalité de la communauté. Je l'ai également utilisé sur un certain nombre de projets d'infrastructure.

Berin Loritsch
la source
5

Il s'agit d'un cas spécial de « séquence d'apprentissage du langage de programmation idéal» et de questions similaires . Ce dont vous avez besoin n'est pas "la seule langue parfaite", vous avez besoin de plusieurs paradigmes linguistiques et de multiples expériences d'apprentissage pour vous ouvrir l'esprit.

Je sais que vous avez dit que vous l'aviez réduit à Ruby et Python, mais je vous suggère de commencer par Racket (un schéma populaire). Il est conçu pour l'apprentissage et il étirera bien votre cerveau vers la programmation fonctionnelle, la programmation interactive et la frappe dynamique. Il n'y a pas d'emplois (littéralement zéro), une communauté très petite et fragmentée, et aucun cadre Web majeur, c'est exactement pourquoi vous ne serez pas coincé dessus; faites frire votre cerveau pendant un certain temps, puis passez à autre chose.

Deuxièmement, vous voulez apprendre Ruby ou Python pour des travaux possibles. Je vous suggère d'apprendre les deux. Apprendre le second de ces deux sera beaucoup plus facile que le premier malgré leurs différences. En ce qui concerne les emplois possibles, mon instinct est qu'il y a plus de travail Ruby à cause de Rails, mais je sais qu'il y a aussi du travail Zope dans ce domaine. Investissez dans au moins l'un d'entre eux, mais vérifiez également l'autre au moins assez longtemps pour construire quelque chose de petit.

Honnêtement, vous en apprendrez probablement plus au cours de votre première semaine de travail avec l'un ou l'autre que vous n'en avez jamais appris par vous-même; ils ont tous deux de grands écosystèmes avec beaucoup d'outils, de culture et d'expressions idiomatiques.

tl; dr: Both et Scheme.

Jesse Millikan
la source
1
+1 Tout ce que j'ai vu était "la seule langue parfaite" et "le schéma". :)
dietbuddha
1

Moi aussi, je viens du milieu Java / C ++ et j'ai programmé en Python avec le framework Django au cours des 4 derniers mois et c'est vraiment génial. Chaque fois que j'ai un problème ou une question, je peux trouver des explications sur les messages existants. Je ne peux pas garantir Ruby car je ne l'ai pas encore utilisé, mais je vais certainement l'essayer quand j'aurai du temps.

Personnellement, j'aime la façon dont vous pouvez faire des choses très rapidement avec Python car il dispose de nombreuses fonctions utiles intégrées.

chiurox
la source
1

Je voterais pour Ruby. Je suis venu de l'arrière-plan .Net et C #, j'ai d'abord essayé Python, mais Ruby m'a juste charmé =)
J'y écris beaucoup de choses système, et certains Rails le font. Il est capable en tant que Python dans la programmation système et est génial sur le Web. Et ça me semble plus raffiné ..

Alexey Anufriyev
la source