Que doit savoir un développeur Python lors de son apprentissage de Ruby? [fermé]


16

Je suis programmeur Python depuis environ 18 mois, composé d'un stage et de quelques projets parallèles, et je me considère assez à l'aise dans la langue.

Cependant, il semble y avoir beaucoup d'attention sur Ruby dans le domaine de la programmation, mais plus sur Python.

Donc, en apprenant Ruby, y aura-t-il des choses Pythoniques qui ne sont que de mauvaises pratiques en Ruby? À quoi dois-je faire attention et que dois-je éviter?


4
J'ai toujours considéré en tant que programmeur Ruby si je devais apprendre le Python car c'est tout ce dont tout le monde parle: P
Earlz

Malgré le buzz, il semble que Python soit toujours utilisé deux fois plus que Ruby (selon TIOBE au moins -> tiobe.com/index.php/content/paperinfo/tpci/index.html ).
Daniel Scocco

10
Au lieu d'être un "programmeur Python" ou un "programmeur Ruby", vous devriez essayer d'être un excellent programmeur. Ensuite, vous pouvez utiliser la langue de votre choix et passer à de nouvelles lorsque le moment sera venu.
BlackJack

Réponses:


31

J'ai fait Python en 2003-5, quand j'étais consultant Plone / Zope. Puis en 2006, j'ai commencé à acheter Ruby. Je n'ai jamais regardé en arrière. Je pense que différentes personnes se sentent plus à l'aise avec différents langages de programmation et cultures, mais pour moi, Ruby se sent beaucoup mieux que Python.

Personnellement, je pense que par rapport à Ruby, Python est le cheval de bataille fiable qui se trouve également être un peu staid et fade. Ruby est beaucoup plus amusant. C'est une langue plus jolie et peut être faite pour faire beaucoup de choses amusantes et géniales qui épateront ses pratiquants. J'ai entendu des gens de Python attaquer Ruby pour être trop dangereux, disant qu'il était trop facile de rouvrir des classes et de faire des trucs sauvages et irresponsables comme ça. Mais cela fait partie de ce qui fait que Ruby me ressemble comme une comédie d'aventure-action. Le python, en revanche, ressemble davantage aux meubles Ikea: il est agréable, confortable et fiable - mais il ne vous surprendra jamais et ne vous coupera pas le souffle.

Les deux meilleures choses à propos de Ruby, de mon point de vue, sont les deux choses qui le distinguent nettement de Python. Tout d'abord, Ruby est beaucoup influencé par Perl. Python semble être fier d'être l'anti-Perl. Mais ce que Ruby a emprunté à Perl est d'une grande valeur pratique. Prenez des expressions régulières, par exemple. Dans Ruby, vous pouvez écrire des expressions régulières naturellement, par exemple if mystring =~ /^\s+hello word!/ .... En Python, pas tellement, parce que Python est tellement anal à faire en sorte que tout suive une syntaxe uniformément prévisible. Dans Ruby, vous pouvez obtenir STDIN immédiatement avec input = STDIN.read. En Python, vous devez import syset puis sys.stdin.read(). Ce ne sont que deux exemples où l'effort de Python pour se distancier de Perl et être si prévisible régulièrement est contrebalancé par la volonté de Ruby de faire ce qui semble bien dans chaque cas.

L'autre chose qui distingue Ruby de Python est que Ruby est beaucoup plus proche de Lisp alors que Python est à peu près un langage de programmation impératif. Je pense que c'est un gros plus en faveur de Ruby.

Il existe de nombreuses fonctionnalités similaires à Lisp de Ruby qui permettent d'en faire plus avec moins de code dans Ruby qu'en Python. Par exemple, chaque instruction et structure de contrôle dans Ruby renvoie une valeur: vous pouvez vous en sortir dans Ruby sans jamais utiliser l' returninstruction. Même les ifinstructions évaluent une valeur, vous pouvez donc écrire des trucs comme celui-ci

result = if output == 'hello'
           [some code here]
           "world"
         else
           [some other code here]
           "there"
         end

En Python, il faudrait écrire

if output == "hello":
  [some code here]
  result = "world"
else:
  [some other code here]
  result = "there"

Python vous fait taper result =deux fois. Ce n'est pas très SEC (ne vous répétez pas). Il y a beaucoup d'exemples comme celui-ci où Ruby sera plus SEC que Python en raison de ses qualités de type Lisp. Matz, le créateur de Ruby, est issu d'un milieu Lisp.

Certaines personnes disent que Ruby botte aussi le cul de Python dans la métaprogrammation (aka programmation dynamique). Les gens de Python répondent soit en disant que la métaprogrammation est trop dangereuse, soit en disant que théoriquement, vous pouvez accomplir toutes les choses de métaprogrammation que Ruby peut faire en Python, juste différemment. Mais une chose sur laquelle tout le monde s'accorde est que la métaprogrammation est beaucoup moins courante en Python qu'en Ruby. Et c'est dommage, car la métaprogrammation est un voyage.

Je pense qu'il est probablement vrai qu'en fin de compte, Ruby et Python peuvent tous deux faire le travail. Comparé à C et Java, Ruby et Python sont à peu près la même chose. Ce sont des langues expressives, productives et de haut niveau.

Cela se résume donc à votre personnalité.

Aimez-vous que les choses soient prévisibles, régulières et sûres? Aimez-vous le style de programmation impératif? Voulez-vous peut-être travailler un jour pour Google? Pensez-vous que Perl est une ponte d'enfer chaotique? Restez avec Python.

Prenez-vous un grand plaisir à trouver le moyen le plus concis pour obtenir un résultat de programmation? Vous ennuyez-vous par la régularité et l'uniformité? Aimez-vous avoir la liberté d'écrire du code dans un style qui vous est propre, et avoir beaucoup d'espace pour trouver vos propres trucs sympas? Vous sentez-vous plus une affinité pour Lisp que pour C? Ressentez-vous une grande admiration pour la contribution historique de Perl à la programmation logicielle, mais souhaitez-vous seulement qu'elle soit un peu moins cryptée et laide? Pensez-vous au code comme les autres pensent à la poésie? Essayez Ruby.


11
"Et c'est dommage, parce que la métaprogrammation est un voyage" ... Et tout comme un voyage, ce sera génial pour une nuit, mais finalement vous vous réveillez le matin et oubliez ce que vous avez fait. Je pense que la métaprogrammation est surestimée en Ruby, et je préfère Ruby à Python. La plupart des solutions de Ruby aux problèmes de syntaxe est "vous pouvez contourner cela avec la méta-programmation"
Earlz

23
Quelle? result = "world" if output=="hello" else "there"est Python parfaitement valide (et trois caractères plus courts).
Tim Pietzcker

3
@Tim OK merci de me corriger. Mais pouvez-vous faire la même chose avec une instruction if / elsif / elsif / else - ie if / elif / elif / else en Python? Pouvez-vous faire la même chose même s'il existe plusieurs instructions à l'intérieur de la clause if ou else?
dan

1
Attendez, Python n'a pas d'opérateur ternaire?
PP.

3
"Matz, le créateur de Python, venait d'un milieu Lisp." attendez ... AFAIK Matz est le créateur de Ruby ...
Eimantas

6

Ça dépend.

Pour moi, le python est de loin plus facile à comprendre que le rubis, et les deux langues ont un objectif différent.

Python est plus un langage classique avec beaucoup de choses fantaisistes de bas niveau, le gardant propre et facile par rapport à C par exemple. Python n'a pas l'ambition de Ruby, qui a pour moi beaucoup plus de fonctionnalités de haut niveau.

Cela ne vous fera pas de mal d'apprendre Ruby, vous découvrirez de nouvelles choses, mais sachez que Python est plus proche de paradigmes de programmation simples qui ont fait le succès de C, avec de nombreux boosters de productivité. Ruby est plus pour les gens qui veulent aller plus loin dans les concepts de programmation en général: Scheme et tous ces langages "supérieurs".


3

Réponse courte: oui et oui.

Apprendre une nouvelle langue est presque toujours utile, et cela vaut particulièrement pour Ruby, car Rails est toujours très populaire. Et oui, bien connaître Python, il sera facile de prendre Ruby. Ils ont quelques différences syntaxiques et différentes conventions de dénomination, mais il y a aussi beaucoup de points communs.

Ce n'est pas un gros investissement de temps, et il est toujours avantageux d'avoir plus d'outils dans votre boîte à outils, alors allez-y!

(J'ai utilisé Python pendant environ 10 ans et j'ai récupéré Ruby l'année dernière. Je travaille actuellement à temps plein dans le projet RoR)


2

Tout a une niche. Par exemple, Python (django) est un citoyen de première classe dans GoogleApp Engine, alors qu'il est le langage ou le choix pour de nombreux projets bioinformatiques. Python a beaucoup de valeur marchande (j'obtiens un certain nombre de perspectives d'emploi non sollicitées simplement parce que j'ai fait beaucoup de choses avec Python), mais Ruby aussi - dans différents domaines. Comme vous l'avez sans doute entendu ici plusieurs fois, cela vous aidera toujours à apprendre plus de langues, alors oui, apprenez Ruby. Sera-ce compliqué? Ce sera beaucoup moins compliqué que d'apprendre COBOL, car les langages et les frameworks disponibles sont similaires les uns aux autres. Un exemple est les gemmes de Ruby et le pip de python .

N'oubliez pas que les langues sont des outils et que chaque outil est un but. Plus vous connaissez d'outils, plus vous pouvez construire la cabane dans les arbres plus rapidement, plus facilement et plus correctement.


Je voulais répondre dans le même sens, j'espère que cela ne vous dérange pas le montage ...
Dimitrios Mistriotis

2

Dois-je apprendre le rubis? Oui.

Apprendre un nouveau langage vaut toujours la peine (surtout s'il applique un paradigme de programmation différent de ceux que vous connaissez) et peut parfois vous rendre plus compétent même lorsque vous programmez dans d'autres langages. Par exemple, j'ai repris la plupart des programmes fonctionnels que je connais de Lisp et je les applique quand j'en ai besoin à Python et Ruby.

Est-ce que ça va être difficile? Si vous avez appris Python, vous pouvez certainement aussi apprendre Ruby.

C'est également utile si maintenant vous cherchez un emploi, cela montre que vous êtes curieux de la technologie et que vous pouvez apprendre des choses par vous-même.

Il y a une bonne comparaison entre Ruby et Python sur c2.com .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.