Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quel est le meilleur langage pour débuter la programmation ?

Le , par Amine Horseman

514PARTAGES

4  4 
Selon vous, quel est le meilleur langage pour apprendre la programmation ?
L’équipe de Developpez.com a souvent remarqué des questions sur les forums ou les réseaux sociaux d’apprentis programmeurs qui demandent « quel est le meilleur langage pour débuter la programmation ? », le problème avec ce genre de questions, c’est que la discussion tourne rapidement vers un débat infini où les développeurs plus expérimentés prônent que leur langage de programmation préféré est le meilleur. Résultat : l’apprenti qui avait posé la question se trouve encore plus perdu dans son choix parmi le vaste nombre de langages qui existent.

Avant de pouvoir dresser une liste des meilleurs langages pour débutants, nous voulions d’abord connaître combien il existe de langages de programmation ? Une page sur Wikipédia nous a donné à peu près une idée, plus de 1500 langages répertoriés ! D’accord ! Ce n’était peut-être pas la bonne question à se poser. Nous nous sommes donc orientés vers les statistiques pour savoir quels sont les langages les plus utilisés : selon notre sondage, les trois langages de programmation préférés de la communauté de Developpez.com durant l’année 2014 sont C#, Java et C++ (avec à peu près 20% chacun), suivis de Python (10%) et Windev (7%).

Mais il faut avouer que cela ne touche qu’une communauté bien particulière, en réalité : le nombre de participants au sondage était de 257 lors de l’écriture de cet article, ce qui est assez peu en termes de statistiques pour pouvoir tirer des conclusions. De plus le sondage ne prenait pas en compte les langages orientés web. Heureusement, IEEE était là pour nous sauver puisque l’organisation de standardisation publie chaque année des études détaillées pour classer les langages de programmation, la figure suivante montre les 20 langages informatiques les plus utilisés dans le monde durant cette année :


Ceci montre déjà une nette différence, mais ne résout toujours pas le problème. En effet, il s’agit là des langages utilisés par les développeurs expérimentés et les grandes entreprises de développement, mais est-ce l’idéal pour un débutant ?

En fait, les avis sont partagés : certains des développeurs questionnés nous répondent que le meilleur langage pour l’apprentissage de la programmation est le C ; il est basique, simple et bas niveau, ce qui permettra à l’apprenant de comprendre réellement comment la machine fonctionne en interne. D’autres répondent que non : Python et Ruby sont les meilleurs pour apprendre puisqu’ils ont une syntaxe intuitive, ils sont puissants et en même temps très faciles à utiliser, de plus ils sont orientés objet ce qui permet de maîtriser ce concept assez tôt lors de la phase d’apprentissage.

D’autres encore préconisent qu’il faut commencer par des métalangages comme OCaml et SML, même s’ils ne pas beaucoup utilisés dans le développement professionnel, ils permettent tout de même d’apprendre l’importance des types de données et comment la machine les gère. Il y a aussi beaucoup de personnes qui conseillent de commencer avec PHP, qui reprend grandement la syntaxe du C++, mais en moins stricte. Quelques personnes parlent aussi du Java ou du C#, mais ce sont des langages beaucoup trop compliqués selon certains pour être adressés à des novices qui n’ont pas encore assimilé les concepts de base de la programmation.

Quoi qu’il en soit, les enseignants dans les universités et les écoles préfèrent généralement commencer par : C/C++, Python, Matlab, OCaml ou encore Ruby. Mais malgré tout ça, le choix final appartient à l’apprenant, et ce choix devra être basé sur son objectif final. Si quelqu’un veut entrer dans le domaine du développement web par exemple, il est peut-être plus sage de commencer tout simplement par le HTML non ?

Source : Sondage de developpez.com, IEEE Ranking Spectrum, Wikipédia.

Et vous ?

:fleche: Qu’en pensez-vous ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Simara1170
Membre éprouvé https://www.developpez.com
Le 19/11/2014 à 11:25
Le Php pour apprendre la programmation? Mon dieu jamais au grand jamais!
Apprendre la programmation, ce n'est pas apprendre un langage ( qui relève plus de la formation continue/ curiosité qu'autre chose), mais apprendre la logique de programmation, et le fonctionnement de la machine...
Et pour faire ça, il faut découper en 3 grandes catégories, chacune illustrées par un langage différent:
1/ l'algorithmique, ou avoir un langage très verbeux et très rigide (fortement typé) permettra d'apprendre la rigueur inhérente à l'algorithmique, et pour ça ADA, ça reste un must
2/ le fonctionnement de la machine, les changement de types, les pointeurs et autres joyeuseté bas niveau: la, le C s'impose, et les erreurs sur les pointeurs apprendront à l'étudiant quelques grands principes de la programmation bas niveau.
3/ la POO, qui devient de plus en plus prépondérante aujourd'hui. Mais pour ça il faut encore une fois un langage assez rigide pour imposer un "cadre de bonnes habitudes", et pour ça, je trouve le java relativement adapté...

Il n'y a pas de langage magique qui permette de maîtriser tout les aspects de la programmation d'un seul coup, il faut en utiliser plusieurs, chacun "symptomatique" d'une facette de la programmation
21  3 
Avatar de pcaboche
Rédacteur https://www.developpez.com
Le 19/11/2014 à 15:46
Citation Envoyé par xarkam Voir le message
Perso, j'ai mis mon fils de 7ans au python :mrgreen:
Pareil.

Du coup, plus besoin de nourrir le serpent pendant 3 mois...
17  0 
Avatar de redcurve
Membre éclairé https://www.developpez.com
Le 19/11/2014 à 12:50
Citation Envoyé par Thomas404 Voir le message
Le C pour apprendre la programmation ? Avec la gestion de la mémoire vous allez faire fuir les gens ... 8O

Non il faut un langage simple, puissant et généraliste tel que python ou tout autre langage permettant de "tester" rapidement ce que l'ont fait et de pouvoir faire beaucoup en ecrivant peu.
C pour apprendre la prog est parfait ça permet d'apprendre que ce n'est pas magique contrairement à Python et consort ça oblige à la rigueur. LE WTF n'est pas permis
20  6 
Avatar de or10n13
Membre à l'essai https://www.developpez.com
Le 19/11/2014 à 12:54
Avant de comprendre comme ont programme, il est plutôt utile de savoir comment fonctionne un ordinateur.
Devoir gérer la mémoire avec le C n'est donc pas une mauvaise idée. Au contraire, celà forcera les gens à comprendre ce qu'ils codent, et comprendre pourquoi quand ils font telle chose, ils ont tel résultat.
15  4 
Avatar de dfiad77pro
Membre expérimenté https://www.developpez.com
Le 19/11/2014 à 13:17
Les personnes choisissant (JAVA, ou C#),

Je me délecte à vous voir expliquer ( à quelqu'un qui n'a jamais codé) les notions de Polymorphisme , d'héritage ,de JVM/CLR :ptdr:

Je pense qu'il n'y a pas de langage meilleur à proprement parler,
mais qu'il faut personnaliser en fonction de l'envie de celui qui souhaite apprendre :

- Si il est fan de Site web, on adapte le programme pédagogique en le faisant petit à petit découler vers les structure conditionnelle, etc.
- pour la prog sur smartphone y'a du boulot...

enseigner c'est aussi donner envie d’apprendre,
personnellement dans mes études, j'ai commencé direct par le C sous Linux, je ne le regrette pas ( bon j'avais déjà programmé en autonome avant),

Cependant : sur une promo de 280 élèves, au bout de 6 mois il n'y en restai plus que 74 :mrgreen:
9  0 
Avatar de KsassPeuk
Membre confirmé https://www.developpez.com
Le 19/11/2014 à 13:34
Cela dépend très fortement de ce qu'on entend par "apprendre la programmation".

Typiquement, j'ai pu voir en haut des gens qui conseillent C "parce que ça aide à comprendre que la machine n'est pas magique et qu'il ne faut pas faire n'importe quoi, n'importe comment". Alors oui, mais non. En particulier, si apprendre la programmation inclut "apprendre à coder un algorithme", s'encombrer des problèmes de gestion mémoire, c'est se tirer une balle dans le pied. Le débutant a déjà du mal à pondre un algorithme correct et il faudrait en plus lui infliger la tâche de gérer la mémoire convenablement ? C'est s'attaquer à tous les problèmes à la fois et le meilleur moyen de n'en résoudre aucun.

Quant au fait de forcer à la rigueur ... Ça c'est la blague du siècle. Pour écrire un programme C correct, il faut effectivement être extrêmement rigoureux (et même comme ça, vu le nombre de points ambigus, obscurs ou mal implémentés dans la norme, ça ne garantit pas grand chose). Après dire que l'on peut enseigner le C rigoureux à des débutants, j'ai encore jamais vu. Je n'ai jamais vu de cours qui montre l'importance de contrôler chaque accès de pointeurs, chaque retour de fonction, chaque structure d'erreurs. Pourquoi ? Parce que c'est super compliqué et que le débutant ne sait déjà pas écrire un algo ...

Et on sait tous que dans la majorité des formations, "apprendre la programmation" inclut "apprendre à faire un algorithme" pour deux raisons :
  • c'est comme ça depuis longtemps (ça c'est la mauvaise raison),
  • pour valider un algorithme, le meilleur moyen c'est de le coder en vrai (ça c'est la bonne raison).

Autre chose :

Citation Envoyé par or10n13 Voir le message
Avant de comprendre comme ont programme, il est plutôt utile de savoir comment fonctionne un ordinateur.
Ben non, tout ça, c'est des détails et on est très loin du concept de programme. L'intérêt des langages de programmation est justement de s'abstraire de tous les concepts de hardware, si on a inventé les langages de programmation c'est en grande partie pour cacher tous les détails de la machine, sinon on se prendrait la tête à mort. Plus encore, quand tu débutes, tous ces détails tu t'en fous, en grande partie parce que c'est loin de t'aider à comprendre ce que tu fais.

La première étape c'est "j'apprends à écrire mon algorithme pour qu'il s'exécute", c'est déjà pas une étape facile.

Deuxième étape, je sais écrire des algorithmes, je peux apprendre comment être plus précis en dialoguant plus finement avec l'OS. Donc, problématique de gestion des ressources, comment le faire proprement, etc ... C'est déjà une forme de programmation qui n'intéresse plus qu'une partie des devs (et c'est normal).

Enfin, je peux passer à l'étape, je veux faire des programmes qui sont très performants. Je dois comprendre comment fonctionne l'ordinateur, et là on est plus que sur une fraction très faibles des développeurs (et encore une fois, c'est normal).

Citation Envoyé par grunk Voir le message

Je verrais bien quelque chose comme :

C : pour comprendre les bases : types, gestion mémoire, ...
Java: pour comprendre le modèle objet sans trop se soucier de la mémoire.
C++ : Pour appliquer les deux notions précédente
C comme langage pour apprendre le concept de typage ?! On parle bien du langage où :
  • void* est courant
  • union est courant
  • les fonctions variadiques ne sont pas typées
  • ... et j'en passe et des meilleures.

(Quand au fait de gérer la mémoire manuellement en C++, c'est généralement dû à de grosses erreurs dans le design).
11  3 
Avatar de rt15
Membre éclairé https://www.developpez.com
Le 19/11/2014 à 15:05
On remarquera que Visual Basic (6 ?) ou Delphi qui auraient été des candidats potentiels au début des années 2000 sont absents de ce type de sondage en 2014.
Visual Basic 6 pour sa simplicité et la facilité d'obtention d'application de bureau, de la plus simple jusqu'à un niveau de complexité assez élevé.
Delphi pour son langage pascal plus proche de l'homme, ses possibilités haut niveau/bas niveau, objet/procédural dans un seul langage, pour sa documentation de très bonne qualité à l'époque.

C'était l'instant nostalgie (Pardon).

En fin de compte je sais pas si le langage que l'on utilise pour ses premières lignes de code est vraiment important.

Ce qui me semble fondamental par contre, c'est de s'investir un certains temps au cours de son existence pour programmer en assembleur et en C.
Pour savoir ce que c'est un processeur, la pile, un thread, la mémoire et aussi pour comprendre ce que proposent les systèmes d'exploitations (CreateFile/open...).

Même si on ne continue pas dans cette voie, ça peut quand même beaucoup aider à écrire un peu moins d'anneries quand on retourne du côté de Java ou autre C#, avec lesquels on écrit facilement des bouts de codes qui se trainent lamentablement tout en bouffant des centaines de Mo de RAM pour ne rien faire ou presque.
8  0 
Avatar de yahiko
Rédacteur/Modérateur https://www.developpez.com
Le 19/11/2014 à 13:39
Il est possible de débuter avec n'importe quel langage. Ca dépend des aptitudes de chacun. (désolé, tout le monde n'est pas égal quand il s'agit d'assimiler les concepts de la programmation et de l'algorithmique, sauf dans le monde des bisounours peut-être ^^)

Un petit génie pourra débuter sans souci avec C++ tandis qu'une personne non prédisposée aura des difficultés y compris avec le BASIC par exemple.

Maintenant, si on demande quel est le meilleur langage pour débuter, je pense qu'un langage procédural est ce qu'il y a de plus "naturel". Pour débuter, il vaut mieux éviter d'aborder tout de go la programmation orienté objet (classes abstraite, multiple dispatch, polymorphisme, et tutti quanti) ou la programmation fonctionnelle (curryfication, fermeture, etc) et commencer sur un langage qui permet de faire simplement du if-then-else et des boucles for et while.

Je ne vais pas me faire que des amis en disant cela, mais c'est la raison pour laquelle je pense que la généralisation de l'apprentissage de Java, langage qui impose le carcan orienté objet, dans le cursus universitaire n'a pas dû être très heureux pour certains étudiants...

Le langage C ou C++ sont à mon avis un meilleur choix que Java, même si pour apprendre la programmation, on a tout de suite besoin d'importer des tas de bibliothèques pour faire la moindre application un minimum consistante, ce qui n'est pas forcément bien compris par les étudiants.

Le langage Python, même si je lui trouve plusieurs défauts est un bon compromis. Il est facile d'accès, sa syntaxe n'est pas trop exotique et est multi-paradigme ce qui permet de passer en douceur de la programmation procédurale à la programmation orientée objet. Dans la pratique, j'ai pu observer que beaucoup de personnes parvenaient rapidement à réaliser des programmes en Python, ce qui n'est pas toujours le cas avec Java ou C++.
7  0 
Avatar de Luc Hermitte
Expert éminent sénior https://www.developpez.com
Le 23/11/2014 à 12:35
Citation Envoyé par moldavi Voir le message
J'ai choisi ce langage pour la rigueur qu'il impose au développeur (cela pourrait très bien être un autre langage qui a les mêmes contraintes, mais je ne les connais pas).
Le C requiert de la rigueur, mais il n'est pas un bon langage pour l'apprendre. Cet argument est une vaste blague que l'on voit régulièrement.

(je copie-colle des choses que j'ai déjà dites ailleurs)

La majorité des cours est faite de telle sorte que la rigueur passe à la trappe car sinon les codes C seraient incompréhensibles pour des élèves débutants. Du coup, ce n'est pas du tout le premier truc appris ou retenu. Bien au contraire.

Résultat, beaucoup de codes C que l'on trouve ne passent pas le test "de Chen" (un if toutes les deux lignes, lien donné il y a 2-3 pages). En partie à cause des mauvaises pratiques (car pratiques simplifiées pour des cours) enseignées qui restent, en partie par fainéantise ("ouais, ça arrive jamais ça, on a toujours assez de RAM", ou encore "bon, alors si vous voulez que l'on prenne en compte ce cas dégradé, ça coutera deux jours de plus"). Et oui, il faudrait être rigoureux et avoir ces ifs toutes les deux lignes. Mais non, dans les faits rares sont ceux à qui cette rigueur a été enseignée, et rares ceux sont qui ont compris l'intérêt de cette rigueur. Regarder la proportion des appels foireux à realloc dans les codes C est aussi un bon indice de cette rigueur qui n'est pas du tout acquise dans ce langage qui est soit disant censé l'enseigner....

Les quelques qui vont retenir cette rigueur, ou même seulement entre-percevoir cette rigueur, c'est dû au travail supplémentaire (et probablement personnel) qu'ils ont fourni alors que cela ne leur était pas demandé.

Bref, j'assume mon "foutaises" quand j'entends/lis que "le C enseigne la rigueur". C'est tout le contraire dans les faits.

L'Ada qui l'impose (parce que sinon ça ne compile pas -- à contrario de parce que sinon ça va pas planter à la pleine lune) a plus de chance de donner des notions de rigueur que le C à des élèves débutants.
7  0 
Avatar de el_slapper
Expert éminent sénior https://www.developpez.com
Le 24/11/2014 à 12:00
Le débat est complètement foireux parcequ'il manque 2 choses essentielles :

(1)Quel est le but du jeu?
(2)Quel sont les études sérieuses sur le sujet?

Je n'ai rien sur le point 2, donc toute intervention de ma part sera dogmatique, voire religieuse. Pareil pour tout le monde.

Mais en plus, chacun a sa propre idée de ce que devrait être le point 1. Par exemple, Joel Spolsky, comme certains sur ce forum, est un grand fan du C pour débuter. Pour une raison bien précise : ça fait fuir les gens. Son objectif est de selectionner et de garder les meilleurs, tout en dégoutant les autres, qui sont la majorité.

D'autres ont au contraire pour objectif d'amener tout le monde à un niveau minimal pour survivre, et à ce titre vomissent sur C. Ils préfèreront des langages "gentils".

Il est bien possible que les uns et les autres aient raison, mais je constate qu'ils n'ont pas d'étude sérieuse pour appuyer leurs dires(même si j'ai tendance à les croire, une vérification systématique serait la bienvenue), mais il est surtout certain qu'ils ne peuvent pas se comprendre : leurs objectifs sont opposés.

Il y a peu, un ami à moi se plaignait de ce que "c'était trop difficile" de faire des macro sous EXCEL. Que l'interface était pourrie. Qu'il était scandaleux qu'il faille "apprendre des trucs" pour faire marcher "un truc simple". Qu'il ne devrait pas avoir besoin de "faire appel à des professionnels". Si on se place dans cette optique, le but du jeu et d'avoir des langages très simples, accessible à tous - quitte à monter en difficulté ensuite. Mais est-ce le but du jeu pour tout le monde? Cette approche est-elle la bonne pour des professionels de l'informatique? Et, d'ailleurs, est-ce seulement possible de faire des langaes simples accessibles à tous?

Je n'ai pas les réponses à toutes ces questions. Mais il faut y répondre avant de poser la sempiternelle question "quel langage pour débuter?". Pour débuter quoi? quelques automatisation EXCEL? Une carrière dans les drivers bas niveaux? Autre chose?
8  1