web-dev-qa-db-fra.com

Ruby ou Python?

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 j'aimerais le publier et obtenir les 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 est de prendre une pause dans le Grind d'entreprise et de 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 entre crochets depuis que je travaille avec cette famille de langues pour toute ma carrière de programmeur. J'aimerais donc apprendre une langue qui n'est pas si étroitement liée syntaxiquement à ce groupe. Ce que je recherche fondamentalement, 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 y a 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 application réelle de celui-ci est aussi 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 du tout, sauf que il semble avoir une base de fans passionnés et semble être un langage assez polyvalent.

TL; DR et pour le dire aussi succinctement que 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 vers Ruby pour le moment, mais je crains dans une certaine mesure qu'il semble qu'il ne soit utilisé que comme un langage Web côté serveur.

24
Bobby Tables

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

Jouez avec Ruby et voyez si vous en tombez amoureux. Que vous le vouliez ou non. C'est un peu comme la musique de Grateful Dead; vous l'aimez ou vous ne pouvez pas le supporter.

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).

35
Adam Crossland

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 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, très tôt quand 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)". Ce que je crois qu'ils appellent l'approche "piles incluses", et cela diffère de certaines autres langues que j'ai utilisé là où les opérations quotidiennes sont beaucoup plus délicates

Ces deux choses me viennent à l'esprit.

17
Andrew M

Si vous prenez une année sabbatique entière, 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.

9
Jason Webb

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) , des programmes de traitement numérique, statistique ou d'image.

7
Marcin

Ruby existe depuis bien plus longtemps que Rails a, alors permettez-moi de le dire dans le monde que Ruby != web, bien qu'il le fasse 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 l'ensemble du cadre Rails englouti le reste du monde Ruby. Et oui, je suis un Ruby = ventilateur.

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'entends que son framework web est vraiment sympa, je ne l'ai pas encore joué avec.

Cela dit, les deux Ruby et Python sont des langages également capables, 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.

6
Berin Loritsch

Il s'agit d'un cas particulier de " séquence d'apprentissage du langage de programmation idéal" et 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, programmation interactive et dactylographie 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 bloqué dessus; faites frire votre cerveau pendant un certain temps, puis passez à autre chose .

Deuxièmement, vous voulez apprendre Ruby ou Python pour les travaux possibles. Je vous suggère d'apprendre les deux. Apprendre le second de ces deux sera beaucoup plus facile que le d'abord malgré leurs différences. En ce qui concerne les emplois possibles, mon instinct est qu'il y a plus de Ruby travail à cause de Rails, mais je sais qu'il y a aussi du travail de Zope dans ce domaine. Investissez dans au moins l'un d'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.

5
Jesse Millikan

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 je 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 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 possède de nombreuses fonctions utiles intégrées.

1
chiurox

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

1
Alexey Anufriyev