Voilà plusieurs mois que je me pose la question : Python ou Ruby ?
je souhaitais depuis un moment me lancer dans l’apprentissage de l’un ou de l’autre sans réellement savoir ce que j’allais en retirer. J’ai fait pas mal de recherche sur le web et finalement je tournais en rond car les questions et réponses que je trouvais ne me correspondaient pas.
Du coup pour faire mon choix je me suis posé quelques questions.
Quels types de projets je peut réaliser ?
En effet, si je souhaite développer une application mobile ou bien un jeux vidéos (voir les deux), ou encore si je souhaite réaliser un réseau social en mode web ou des scripts pour faire dialoguer avec une application mobile et une web app, certains langages sont naturellement plus orienté vers telles ou telles tâches et du coup certains autres sont à proscrire.
Dans mon cas, ne connaissant pas l’avenir, je me suis focaliser sur le présent et donc de mes besoins actuels.
Je me suis arrêté au fait que j’avais besoin d’un langage qui me servirais non seulement pour développer des web apps (voir du mobile) mais également pour faire de l’AdminSys (administration de serveur). En gros, qui pourrait me passer de développeur web (dans une certaine mesure) pour Shyne! et qui me servirai dans mon boulot actuel (création de scripts serveur).
Je fais un peu de PHP depuis pas mal d’années et j’avais envie d’aller voir ailleurs et ces deux langages que sont Python et Ruby m’attirent de plus en plus. Encore une fois, je ne sais pas précisément ce que je voudrai faire, du coup j’ai préféré réfléchir à des « situations » auxquelles je suis confronté la majeur partie du temps.
Ensuite ces deux langages sont suffisamment puissants pour mettre en place de petits projets comme de très grands (Youtube, Google, Instagram, Pinterest, Twitter sont écrit en Python par ex., du côté de Ruby on nommera GitHub, Dreeble, Twitch, Shopify et AirBnB en autre). Il me faut donc un langage qui « donne » des programmes qui s’exécutent le plus rapidement possible et qui peuvent supporter des projets scalables.
Existe-t-il beaucoup de tutoriels et sous quels format ?
Étant seul dans mon coin (physiquement) dans mon apprentissage, si j’opte pour un langage de programmation je m’attacherai au fait qu’il existe beaucoup de ressources gratuites sur le web et dans une langue que je comprends. Là il s’agit de savoir s’il existe une forte communauté pour éviter de passer trop de temps bloqué sur des problèmes de débutant et pour éviter de réinventer la roue à chaque fois.
Python et Ruby bénéficient chacun d’une large communauté majoritairement anglophone mais également francophone. En outre, il existe beaucoup de tutoriels en ligne que ce soit sous forme de billet de blog, de cours en ligne gratuits ou non et de vidéos. Python bénéficie d’une très grande communauté de chercheurs et d’universitaires (mais pas que) ce qui est idéale pour trouver des projets expérimentaux libres pour manipuler du son ou de l’image par ex. ou encore pour l’analyse de données statistique ou administrer ses serveurs Linux.
Python ou Ruby, lequel des deux est plus facile à apprendre ?
Les deux langages sont relativement simples à apprendre. Python est plus explicite (même si très concis le code nécessitera qu’on déclare les objets et fonctions qu’on appelle) et Ruby a un côté magique (lui aussi a un code très concis mais souvent nous ferons appelle a des objets ou fonctions et avec très peu d’arguments nous seront capable de faire ce que l’on veut mais sans trop réellement savoir ce qu’il se passe dans le détail, ce qui peut rendre le debugage très long et compliqué quand on débute).
Puis-je développer en Python ou Ruby sur mes différents OS
La réponse est bien évidemment oui (même sur AmigaOS ou AROS!), utilisant Linux, MacOsX et Windows, je peux installer les environnements de développement sur chacune de mes machines et utiliser DropBox pour héberger mes dossiers de travail, ainsi quelque soit l’endroit où je me trouve je peux reprendre mes développements là où je les ai arrêté.
Ok mon choix est fait : Python
Donc j’ai choisi de me lancer dans la programmation Python. J’ai les ressources et les matériels qu’il me faut. Je peux commencer à programmer sur mon Windows 10, poursuivre sur un portable sous Ubuntu ou sur un mac grâce à la synchronisation de mon dossier DropBox (ok le client DropBox pour Linux c’est le bordel la dernière fois que j’ai essayé… mais au pire je peux utiliser une autre solution ou bien monter mon serveur webdav et bosser dessus… à voir..)
Un des sites qui m’ont définitivement fait pencher en faveur de Python est Sam et Max, qui a publié une page listant de manière totalement non exhaustive le genre de chose que l’on peut faire avec Python.
Ce qui est également très intéressant avec Python c’est que pas mal de gros projets permettent de créer des plugins afin d’étendre leurs possibilités ou des scripts pour pouvoir les manipuler à sa guise (MineCraft, Battlefiled 2, Blender, …), piloter une wiimote ou un kinect… : http://sametmax.com/quest-ce-quon-peut-faire-avec-python/. Saviez-vous que le client BitTorrent et DropBox étaient écrit en Python ? Même la NASA l’utilise dans l’analyse de données. C’est dire la diversité des usages de ce langage!
Un autre point particulièrement intéressant est Kivy, qui permet de créer des applications Android en programmant en Python.
Voici par exemple, un Sudoku pour Android écrit en Python.
Et pour en savoir plus sur le développement d’applications Android en langage Python rendez-vous sur Quora.
J’ai recherché quelques tutos sur le web et j’en ai trouvé de très bien faits.
Je vous conseille si vous débutez totalement en programmation la chaine « les teachers du net » qui contient beaucoup de tutoriels de toutes sortes. Voici une playlist qu’ils ont créé et qui s’appelle « Initiation à la programmation avec Python » (d’une pierre deux coups : on apprend les principes de base en programmation tout en découvrant Python)
Si vous souhaitez aller plus vite voici une autre vidéo vraiment super sympa pour apprendre à programmer en Python de la chaine « MatteReal » (elle aussi très clair mais qui peut être un peu compliquée si vous n’avez aucune notion de base en programmation) :
Après avoir suivis les vidéos ci-dessus qui vous apprendront les bases de la programmation en Python, vous pourrez vous amuser à créer votre premier jeu vidéo en Python grâce à Pygame. Dans la série de vidéos publiées par Alexandre Ghelli, dont voici la première partie ici, vous apprendrez à créer clone de Flappy Bird
Il existe également un cours OpenClassRoom dédié à la création de jeux vidéos grâce à Pygame
Si cela vous intéresse, voici un article intéressant expliquant pourquoi, notamment, les data-scientists préfère Python à Ruby.
Voilà, à présent plus d’excuses, si vous souhaitez vous mettre à la programmation et que vous ne savez pas par où commencer, vous n’avez qu’à faire un premier pas en commençant avec Python qui est un langage particulièrement puissant, multiplateforme, gratuit et très léger (un vieux pc ou mac tout pourri fera l’affaire). Et si par la suite, vous souhaitez toucher à Ruby et bien lancez-vous, ce que vous aurez appris avec Python vous servira puisque Ruby qui est un langage un peu plus jeune, a été influencé par Python dans son élaboration.
Si cet article vous a plu, n’hésitez pas à le partager autour de vous !
14 août 2017
hello !
ca dépend à quelle disciple on souhaite s’atteler ..
python = maitre du machine learning, tous les modèles y existent en librairie
ruby = pour du web plutot, meme si j’ai réalisé quelque proto sympa en machine learning avec 😀
j’ai qd meme fini 700ième sur 1400 dans un kaggle (concours data science) uniquement avec du ruby (versus python versus R) ..
donc bon, l’important n’est pas le langage mais l’utilisation qu’on va en faire 😀
15 août 2017
Oui je suis d’accord avec toi, l’essentiel n’est pas le langage mais la personne qui l’utilise 😉