Bon langage de programmation pour débuter

Le problème exposé dans ce sujet a été résolu.

Salut ! ^^

Après avoir choisi un éditeur de texte (Vim en l’occurrence) et avoir appris un peu à le contrôler, je m’oriente maintenant vers le choix d’un bon (et non meilleur, tous se valent) langage pour commencer la programmation. On m’a conseillé Python, comme plus "simple à maîtriser" et "haut niveau", mais je ne comprends pas pourquoi Perl ou Ruby qui ont une syntaxe très proche ne sont jamais suggérés ou considérés comme appropriés aux débutant. On peut également faire du web en Python (Django) et en Ruby (RubyOnRails).

Pourriez-vous m’orientez un peu pour choisir un bon langage pour débuter?

PS : Comment "choisir" un langage en utilisant Vim (utilise-t-on une extension de fichier par ex:.py, faut il installer un plugin ou utiliser le compilateur intégré)?

Si tu as une idée de projet en tête, alors tu peux nous exposer tes besoins et peut-être qu’on pourra te conseiller sur un ou plusieurs langages à utiliser.

Si ton but est seulement d’apprendre à programmer avec un langage, tu peux survoler les langages que tu as mentionné pour voir celui qui te plait le plus puis en choisir un et te concentrer sur ce dernier.

Le choix d’un langage de programmation n’est vraiment pas important quand on cherche à programmer, ce sont les concepts derrière qui sont importants. Peu importe le langage de programmation, tout bon tutoriel te permettra d’apprendre les concepts qu’il y a derrière les fonctionnalités du langage : variables, boucles, fonctions, …

Après certains langages sont plus riches que d’autres et il existe différents paradigmes, mais pour un premier langage, cela a peu d’importance.

Je m’intéresse beaucoup à la conception de jeux vidéos et à l’IA, et un peu au développement web. Je n’ai pas encore vraiment d’idées de projets, c’est pourquoi je voudrai pour commencer un langage polyvalent pour voir ce qui m’intéresse le plus, et ensuite me spécialiser dans certains types de programme. Ce n’est pas juste pour apprendre un langage de programmation pour frimer ou se lancer un défi mais vraiment pour l’utiliser et développer des programmes.

Je vais alors commencer avec Python qui a l’air assez complet (jeux avec Pygame, web avec Django, etc…). Comment s’appelle cette bibliothèque que tu me recommandes?

As-tu des tutos à me recommander (à par ceux d’OC, Zds et celui de Gérard Swinnen)?

+0 -0

Je vais alors commencer avec Python qui a l’air assez complet (jeux avec Pygame, web avec Django, etc…). Comment s’appelle cette bibliothèque que tu me recommandes?

As-tu des tutos à me recommander (à par ceux d’OC, Zds et celui de Gérard Swinnen)?

ToxicScorpius

Je pensais à Tensorflow, mais sur ce lien il parle d’autres librairies (le lien date un peu cependant)

As-tu des tutos à me recommander (à par ceux d’OC, Zds et celui de Gérard Swinnen)?

ToxicScorpius

Surtout pas celui d’OC qui contient plein de mauvaises pratiques. Pendant des années on s’est battus avec les débutants qui commencent par ce tuto et qui acquièrent involontairement des mauvaises pratiques. Comme l’auteur fait la sourde oreille pour les corrections depuis des années aussi…

Ceux de ZdS sont pas hyper aboutis pour les débutants. Par contre, celui de Swinnen, bien qu’imparfait pour apprendre Python, est vraiment bien pour apprendre à programmer tout court (le fait qu’il utilise Python est en fait presque de l’ordre du détail).

Pour Vim, dans un premier temps, s’appuyer sur ce qui est activé par .py sera largement suffisant (et perso j’utilise que ça même au boulot).

+2 -0

As-tu d’autres cours alors? Je vais commencer à lire celui de G.S.

Non, je pense que Swinnen est super pour commencer. Après, tu peux lire des trucs plus poussés sur des points particuliers (il y a quelque tutos d’entwanne et de nohar ici par exemple sur des points avancés du langage), ou bien en cherchant sur Google une solution à un problème quelconque on tombe parfois sur des gemmes expliquant bien un trucs précis (que ce soit tant purement technique sur Python que des réflexions sur les design patterns à adopter et ceux à éviter).

Enfin et surtout, un point que j’apprécie beaucoup avec Python est la doc du langage et de la lib standard très bien foutue qui comprend même des tutoriaux sur certains points (exemple pour parser des arguments en ligne de commande avec argparse). Bon, par contre, faut se mettre à l’anglais. Mais c’est comme tout, c’est avec la pratique que ça vient, et l’anglais technique "de base" si j’ose dire n’est pas très compliqué.

+2 -0

Salut :)

Personnellement, même si en ce moment je passe très peu de temps à apprendre la programmation avec Python, j’utilise le cours de Swinnen comme grosse base, ainsi qu’un cours traduit en français sur dvp .com "How to think like a computer scientist ?". Tu auras des redondances, et c’est normal, mais, il y a 2, 3 méthodes de programmation (algo, préparation, dév incrémental, …) qui sont bien sympas. J’utilise, également, le cours d’algo de Pise info (tape "algo pise" sur un moteur de recherche). Là, c’est uniquement de l’algo.

Et bien, avec tout ça, je me prépare mieux à la pratique, je me sens plus efficace.

+0 -0

Et bien, avec tout ça, je me prépare mieux à la pratique, je me sens plus efficace.

Tiens, ça me fait penser à un truc qui n’a pas été dit. Ça sert à rien de se donner d’avance des tonnes de trucs à lire (ça peut même être néfaste si on se décourage devant le volume). la meilleure préparation à la pratique, c’est la pratique. On n’apprend pas à développer des logiciels en lisant, on apprend en développant intelligemment, donc en se servant de ce que tu lis pour réfléchir à ce que tu fais et aux problèmes que tu rencontres en codant.

Les bouquins ne sont qu’un outil (certes précieux) à l’apprentissage, pas un moyen suffisant.

+1 -0

Après avoir choisi un éditeur de texte (Vim en l’occurrence) et avoir appris un peu à le contrôler, je m’oriente maintenant vers le choix d’un bon (et non meilleur, tous se valent) langage pour commencer la programmation. On m’a conseillé Python, comme plus "simple à maîtriser" et "haut niveau", mais je ne comprends pas pourquoi Perl ou Ruby qui ont une syntaxe très proche ne sont jamais suggérés ou considérés comme appropriés aux débutant. On peut également faire du web en Python (Django) et en Ruby (RubyOnRails).

ToxicScorpius

Perl a la réputation de produire du code écrit une fois, mais jamais relu. Il est très approprié pour du traitement de chaîne de caractères, mais avec ses opérateurs dans tous les sens ça devient vite le bordel.

Ruby a voulu reprendre plusieurs éléments de la philosophie de Perl, notamment qu’il y ait plein de manières différentes et équivalentes d’arriver à un même but. Ça amène à étudier de nombreuses structures différentes du langage (blocs, procs, lambdas, énumérations, qui se recoupent tous un peu).

Python est parti sur l’idée opposée : il ne peut y avoir qu’une seule manière simple et évidente d’arriver à un but. Je pense que c’est cela qui en fait un langage plus simple à prendre en main pour débuter.

Mais surtout, il y a la question des ressources : en Python, il y a le très bon livre de Gérard Swinnen dédié à l’apprentissage de la programmation.

Pendant des années on s’est battus avec les débutants qui commencent par ce tuto et qui acquièrent involontairement des mauvaises pratiques. Comme l’auteur fait la sourde oreille pour les corrections depuis des années aussi…

adri1

Et maintenant ils ont un nouveau cours tout neuf, avec encore plus de mauvaises pratiques, et des auteurs qui se bouchent tout autant les oreilles.

Bon, par contre, faut se mettre à l’anglais.

adri1

La traduction de la documentation avance, doucement, certes.

Ruby a voulu reprendre plusieurs éléments de la philosophie de Perl, notamment qu’il y ait plein de manières différentes et équivalentes d’arriver à un même but. Ça amène à étudier de nombreuses structures différentes du langage (blocs, procs, lambdas, énumérations, qui se recoupent tous un peu).

Python est parti sur l’idée opposée : il ne peut y avoir qu’une seule manière simple et évidente d’arriver à un but. Je pense que c’est cela qui en fait un langage plus simple à prendre en main pour débuter.

entwanne

Le succès des langages est souvent social. Là pour le coup je soupçonne que les profs ont vu un truc qui a permis d’obliger les élèves à indenter. Du coup des élèves débarquent en stage chez des scientifiques qui doivent se mettre au Python pour suivre ce que font leurs stagiaires, et cela crée le besoin d’avoir un truc aussi efficace que le Fortran, ce qui aboutit à l’écosystème contemporain en Python, où l’on va jusqu’à voir des boites comme Intel fournir (gratuitement) des implémentations optimisées, pour leurs processeurs, des principales bibliothèques scientifiques en Python.

Avec une telle situation, il est aujourd’hui assez difficile de l’éviter. J’ai même envie de dire que l’on ne peut que le recommander sur des clusters de calculs à la place des anciens langages dominants ou même de logiciels comme matlab, scilab, envi…

Et cela justifie encore plus de l’enseigner.

Vous me direz, OCaml & cie n’ont pas connu le même succès…

BTW, ce n’est pas entièrement vrai qu’il n’y a qu’une seule façon de faire. P.ex. au niveau des boucles, il y a boucle ou les listes en extensions. C’est sur Sam&Max je crois, que l’on trouve ainsi des implémentations du FizzBuzz en oneliner assez cryptiques.

Concernant Perl, ce qui gêne beaucoup, c’est le côté automagique où le langage essaie de comprendre ce que l’on veut faire pour essayer de le faire malgré nos erreurs. Qu’il y ait plusieurs façons de faire une même chose, franchement, ce n’est pas la première chose que l’on regarde. Pire, cela peut retirer des moyens qui simplifient la résolution d’autres types de problèmes.

En python, en fonction de ce que tu appelle "AI", il y a pas mal de chose. Si tu fais l’amalgame AI=Machine learning il y a déjà scikit-learn qui est une référence. Si tu veux ensuite aller dans la hype du deep-learning, on peut citer TensorFlow, PyTorch, Theano, Keras ou encore Caffe2. La bibliotèque à utiliser dépend beaucoup de ce que tu compte faire et à quel niveau tu souhaite te situer.


Pour en revenir à la comparaison à Perl et Ruby, outre le fait que le code Python est généralement plus facile à lire, un gros avantage de Python sur les deux autres, je pense, c’est sa généricité. Ruby est surtout populaire pour des outils Web, avec Rails pour le tracter. Perl est fort en traitement de chaines de caractères mais le reste est plus pénible. Python est largement le langage le plus polyvalent de cette catégorie. Ce n’est pas forcément qu’il est mieux ou meilleur fondamentalement, simplement il a réussi à devenir le langage par défaut pour bon nombres de sujets, le langage glu par excellence. Il a des bibliothèques de très grande qualité pour pratiquement toutes les thématiques tandis que les autres langages de scripts ont une ou deux super lib dans une niche.

Cette polyvalence est probablement la plus grande force de Python et pourquoi je le recommande facilement au débutant : quelque soit leurs projets, il y a de grandes chances qu’ils puissent faire quelque chose de sérieux avec Python. C’est pas vrai pour tout (jeux, embarqué) mais ça évolue…


Du coup des élèves débarquent en stage chez des scientifiques qui doivent se mettre au Python pour suivre ce que font leurs stagiaires, et cela crée le besoin d’avoir un truc aussi efficace que le Fortran, ce qui aboutit à l’écosystème contemporain en Python, où l’on va jusqu’à voir des boites comme Intel fournir (gratuitement) des implémentations optimisées, pour leurs processeurs, des principales bibliothèques scientifiques en Python.

Mouais non. Numpy est bien plus vieux que l’enseignement de Python en école. C’est parcequ’il a un bon écosystème que les gens migrent, sinon ils seraient restés sur Matlab

+5 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte