Quel langage pour débuter en programmation ?

Bonjour,

Quel langage conseilleriez-vous à quelqu’un qui désire se lancer dans la programmation ?
Pourquoi ce langage en particulier ?

J’entends toujours que commencer par Python est une bonne idée, est-ce forcément toujours LE bon choix ?

Je ne pense pas qu’il puisse y avoir une réponse absolue à cette question : chaque personne souhaitant apprendre la programmation le fait pour une raison précise. Le fait est que Python est à la fois très simple à comprendre et suffisamment souple pour être efficace dans la majorité des besoins, et qu’il est donc souvent conseillé (je le conseille moi-mêm). Mais d’un autre côté, on peut avoir envie d’apprendre le dev uniquement pour faire du web et le faire rapidement, et pour ça, PHP (que je déteste du plus profond de mon âme) est un choix pertinent, de par l’immédiateté des résultats, et l’accès à l’embauche qui vient ensuite.

2 « J'aime »

Ruby est très agréable pour commencer à apprendre. D’autant plus que pour la dernière remarque sur le web il est parfait pour ça. Et il a l’avantage d’avoir un langage très simple et expressif et concis. C’est vraiment bien car plus proche du langage naturel.

Après un langage également très bien pour débuter de par sa proximité avec le pseudo code : Ada. Ça permet de commencer par écrire des choses très propres et très puissantes (genre la partie traitement parallèle). Très bon pour apprendre les algos et débuter.

(Bon après moi j’ai commencé avec un peu de basic et surtout de l’assembleur avant de passer au c++ et au perl…)

5 « J'aime »

Je vais faire mon hasbeen mais je reste convaincu que l’apprentissage langage bas niveau vers langage haut niveau est une bonne approche pour le profile de développeur (futur) professionnel (donc ne s’applique pas forcément aux développeurs amateur qui veulent juste coder un site web pour le chat de leur grand-mère).

En pratique je recommande :

  1. C pour une approche globale et orienté procédural qui est pour moi un paradigme plus simple à prendre en main que l’OO pour une première expérience.
  2. C++ la suite logique du C (pour l’apprentissage) ou Java, pour commencer l’apprentissage de l’OO.
  3. Insert language here
2 « J'aime »

Je rajouterais une recommandation supplémentaire: ne pas commencer avec un language “événementiel”.

JavaScript peut remplir ce rôle pour deux raisons.

  • Un runtime JS est dispo sur tous les ordis. Il suffit de lancer son navigateur, F12 et de jouer avec la console. C’est clé en main, rien à installer.
  • Manipuler le DOM renvoie un feedback très visuel, graphique. On débute ainsi sur des cas de prog’ concrets avant de se plonger dans des considérations plus abstraites.

Tout sauf Javascript !
Un langage, avec typage fort, qui se compile et comme kakawait, du bas vers le haut niveau.

1 « J'aime »

Java est un langage plus intéressant pour apprendre la programmation que Python, et ça reste le choix des plus grandes écoles d’informatique dans le monde. Python est devenu à la mode parce que c’est plus facile à apprendre (interprété et simpliste), surtout en initiation basique dans les écoles généralistes (celles qui ne forment pas les ingénieurs), mais Python est fort différent des langages classiques utilisés en entreprise, comme Java, C# et C++, et donc Python c’est la solution de facilité, et c’est donc un très mauvais choix pour former de futurs développeurs.

Généralement dans les bonnes écoles qui visent à faire des Bac+5 niveau ingénieur ou pour les Master Fac en informatique, le cursus c’est d’apprendre des bases avec des langages comme C ou Pascal, d’explorer rapidement Assembleur et Cobol pour des raisons historique, puis de passer aux choses sérieuses avec un vrai langage moderne, complet et riche, généralement soit Java, soit C# (qui est la même chose que Java mais chez Microsoft).

1 « J'aime »

@Masterdev, je pense que nous ne sommes pas en phase sur la question.

Tu l’as interprétée d’un point de vue très professionnalisant, or je considère de mon coté que la programmation au sens large a des vertus bien plus diverses que de se retrouver à coder dans l’open space d’une grosse boite.

2 « J'aime »

Ouch.

Python c’est la solution de facilité, et c’est donc un très mauvais choix pour former de futurs développeurs.

Sérieux ? Un très mauvais choix ? Parce que python est plus simple que C++ ? Ha oué…

apprendre des bases avec des langages comme C

Ce qui est en général une mauvaise idée, il vaut mieux apprendre avec des langages un peu plus “propre” que du C trop bas niveau pour apprendre les principes généraux de la programmation.

Pascal

A mon avis ça fait quand même un moment que plus personne ne fait de pascal

d’explorer rapidement Assembleur et Cobol pour des raisons historique

Idem, si c’est pour apprendre à programmer l’intérêt est quand même nul sauf si le but est de bosser sur du vieux code pourri en Cobol

puis de passer aux choses sérieuses avec un vrai langage moderne, complet et riche, généralement soit Java, soit C#

Ha oui, nous y voilà, un vrai langage.

C’est l’histoire du vrai et du faux langage :

  • Avec un vrai langage, tu peux écrire un programme, l’exécuter et réaliser ce que tu veux.
  • Avec un faux langage, tu peux écrire un programme, l’exécuter et réaliser ce que tu veux, mais tu vois c’est un faux langage.

Bon déjà C# c’est quand même “légèrement” différent de Java, outre le fait que ça vienne de chez Microsoft, entre autre C# est un langage beaucoup plus riche et moderne justement que Java.

Mais surtout, c’est marrant cette histoire de vrai langage moderne. Surtout quand nombre de langages sont plus complets, plus riches et ont des paradigmes plus propres que Java. Genre des langages beaucoup plus orientés objet, ou beaucoup plus expressifs, etc.

Bref, dans tous les cas ça répond pas vraiment à la question de quel langage pour débuter.

D’ailleurs par certains côtés il peut être vraiment intéressant de commencer la programmation par des langages fonctionnels (lisp, clojure, haskell, etc). C’est une approche vraiment intéressante et qui permet d’écrire de manière propre et concise.

2 « J'aime »

Ca sent le troll.

Le grand avantage du C est qu’il est très peu idiomatique* et donc partage une base sémantique assez proche de l’algorithmique à la main qui lui même proche d’une certaine mesure des mathématiques (hors langage fonctionnel).

En outre, avec un langage bas niveau on se focalise souvent sur des concepts (gestion de mémoire, structure de données, pointeurs, threads, etc) complètement abstrait sur les langages de haut niveau et je trouve important de les comprendre et de les implémenter pour connaitre leur coûts et leurs limites dans l’optique d’utiliser au mieux les abstractions que nous proposerons nos langages de haut niveau.

Mais comme toute formation, elle doit s’adapter à la personne et a ses besoins. Je ne pense pas qu’il y ai une solution unique. J’ai moi-même commencé par l’un des plus moche (= permissive) langage de programmation Perl (à l’époque Python et Ruby n’avait pas encore détrôné) car j’étais destiné à faire de l’administration réseau et dans ce context le choix est justifiable (voire judicieux).


* Idiomatique: C’est un avis personnel mais prenons l’exemple du python:

results = [x for x in range(20) if x % 2 == 0]

Certes c’est lisible, compact mais c’est spécifique au Python et pour une première expérience je trouve intéressant de se limiter aux concepts intrasects aux langages procéduraux ou OO avec des bons vieux while, for et compagnie.

Cette avis se base surtout sur le fait que les langages procéduraux et/ou OO dominent actuellement le marché. Et vous pouvez me targuer qu’on peut faire des while, for et Python mais avec un langage de bas niveau on est moins tenté.


PS: Je dénigre pas le Python, pour moi il fait partie de la top list des langage pour débuter mais tout dépend du profile et de la motivation.

1 « J'aime »

Je suis en phase avec ta réponse @CrEv , surtout l’histoire du vrai et du faux langage ;)

En revanche, que plus personne ne bosse (ou n’ai envie de bosser) en pascal, assembleur et cobol n’enlève rien à la valeur historique de ces langages. Et l’histoire, ça permet de mieux comprendre le présent.

À mon avis, le bon choix n’existe pas et n’a jamais existé. Comme tu peux le voir, cette question entraîne invariablement des guerres de chapelle entre les tenants de tel langage, ceux de tel paradigme, etc.

On pourrait peut-être reposer la question différemment, le choix du premier langage étant sûrement bien moins important que le choix du prof/mentor ?

Dans ce cas on peut peut-être plus se poser la question de ce qu’est un bon langage pour débuter. Est-t-il avec une syntaxe simple et de haut niveau pour apprendre les concepts, genre programmation objet (et un langage objet à prototype est intéressant).
Est-t-il fonctionnel pour bien apprendre les algos et des structures de données sympa ?
Est-il avec typage faible, interprété, rapide à mettre en place en étant laxiste pour commencer en douceur ? Ou alors typage fort, compilé et bien rigide pour directement apprendre à faire propre ?

Pour moi Java.
Tout les concepts que l’on voit a travers se langage sont nickel pour bien structuré sa pensée.
En plus cela permet d’être opérationnel tout de suite. La plupart des projets en SSII sont en Java(ou C#) (Spring Hibernate Struts2).
C’est un langage qui permet le moins possible d’ambiguité donc il est bien pour les débutants. Ensuite on peut migrer vers Ruby pour se mettre à Rails. Ou alors Php pour se mettre a Symfony 2 par exemple.

Pour répondre à Crev il y à encore énormément d’écoles et de Fac qui ont le Pascal dans leur programme pour la partie initiation, et au niveau professionnel c’est même encore utilisé avec un produit pro comme Delphi (Pascal objet).

Tout ceci contredit totalement tes propos par des faits, et cela montre que tu fais parti des personnes qui donnent leur avis sans avoir la moindre expérience de tout ceci, je ne réponds pas au reste du troll qui ne mérite même pas de réponse, vu que que tu as totalement déformé mes propos sans même avoir essayé de les comprendre une seule seconde. Il y à des notions de base que tu ne peu pas apprendre en C# ou en Java car c’est de trop haut niveau, donc dans le cursus éducatif cela est vu en C ou en Pascal, c’est pas pour autant que le reste de l’enseignement va se faire avec des langages de base, le reste de l’enseignement se fait ensuite le plus souvent en Java, C# ou Python. Quand tu as fait un cursus Bac+5, tu as logiquement étudiés des concepts avec plusieurs langages.

Alors évidemment c’est sujet à flame war :) Pour recentrer le débat, dans la question j’ai bien lu pour débuter.

Donc, pour débuter, il faut éviter tout ce qui est manipulation de DOM et génération de page HTML, car on est déjà en train de mixer deux technologies. Pour un vrai débutant, assimiler à la fois la programmation en elle même, et la génération d’un document qu’il ne maîtrise pas, c’est le meilleur moyen pour être perdu et ne rien comprendre.

Pour revenir au Python, évidemment on peut écrire

results = [x for x in range(20) if x % 2 == 0]`

Il s’agit d’une feature du langage, et je ne la présenterai pas à un débutant. Je l’écrirai plutôt avec un for plus classique :

results = []
for x in range(20):
    if x % 2 ==0:
        results.append(x)

ou bien une boucle while avec un incrément (je passe sur l’exemple).

Et c’est bien l’avantage de Python. Il peut être utilisé de différente façon et s’adapte à de multiples domaines et façon d’écrire du code.

Il est conçu avec une philosophie idiomatique, mais reste ouvert à n’importe quelle approche. Par exemple, on peut faire de la programmation procédurale, de la programmation orientée objet, ou bien de la programmation fonctionnelle, et il est donc possible d’apprendre tous ces concepts avec la même syntaxe.

Le problème avec Python, c’est qu’il ne permet pas d’appréhender comme il le faudrait les types de donnés qui sont masqués par le typage dynamique. Pour ça, je dirais qu’apprendre un deuxième langage serait pas mal, en l’occurrence Java.

Et sinon, un article du monde informatique en toute objectivité semble t’il qui explique que les universités américaines utilisent Python en majorité pour enseigner la programmation.

1 « J'aime »

au niveau professionnel c’est même encore utilisé avec un produit pro comme Delphi (Pascal objet).

Ça tombe bien j’en ai déjà fait professionnellement

Tout ceci contredit totalement tes propos par des faits

Pas vraiment non. D’ailleurs il y a bien des gens qui utilisent windev, c’est pas pour ça que c’est une bonne idée

et cela montre que tu fais parti des personnes qui donnent leur avis sans avoir la moindre expérience de tout ceci

Cool des attaques perso, c’est trop mignon ! Menfin à moins que je me trompe tu ne sais pas vraiment de quoi j’ai l’expérience ou non…
Bref, c’est ridicule.

donc dans le cursus éducatif cela est vu en C ou en Pascal

Et c’est le genre de chose qu’il peut être intéressant de remplacer par du Ada (et d’ailleurs c’est déjà le cas dans certaines écoles)

Le DOM, ou ses inconsistances pour être plus précis, peuvent en effet poser problème. Mais à mes yeux la clé du concept est d’être d’emblée dans un environnement interactif.

John Resig (le gars derrière jQuery) illustre très bien ce point. Il bosse désormais à la Kahn academy sur cette problématique précise : comment introduire la programmation à des débutants. http://ejohn.org/blog/introducing-khan-cs/

C’est pour cette raison qu’il a bossé sur le portage de Processing en JS : http://processingjs.org
Les lignes de codes tapées ont un rendu graphique automatique.

Finalement, on est pas très loin du LOGO http://en.wikipedia.org/wiki/Logo_(programming_language), ce langage qui permet à des enfants de venir faire bouger une tortue mécanique sur un tableau blanc posé au sol à l’aide d’instructions simples : avancer, tourner de 90deg etc…

J’ai eu la chance en école primaire de pouvoir manipuler cette tortue et ça a immédiatement provoqué en moi l’illumination sur ce qu’est la prog et surtout à quoi ça peut servir.
La gestion de la mémoire, l’OO, le fonctionnel ce n’est que du bagage qu’on accumule par la suite.

Pour finir sur le concept d’environnement de dévoloppement interactif ce n’est pas un hasard si de nouveaux IDE embrassent cette idée. Je pense notamment à http://lighttable.com

4 « J'aime »

C’est une réponse intéressante, merci, on semble sortir un peu de la gue-guerre entre langages et tant mieux :).

Avoir un environnement interactif comme tu le cites est un plus, mais la console textuelle en est un, et elle peu suffir à mon avis pour des adultes.

Pour te rejoindre, beaucoup de gens ont appris la programmation via Excel. VBA permet de manipuler et d’automatiser facilement l’environnement existant et déjà connu d’Excel (les lignes, colonnes, cellules, les formules …). Dans ce cas, Excel est l’environnement interactif qui leur a permis d’approcher la programmation et d’atteindre facilement leurs objectifs.

Dans la même idée, j’imagine que certains ont appris à coder avec LeekWars ou d’autres jeux du genre.

Par contre vraiment, DOM et HTML sont complexes et riches en soit, c’est trop de choses différentes à acquérir d’un coup pour un débutant, sauf s’il maîtrise déjà ces technologies frontend.

Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s