Quel est le meilleur langage pour débuter la programmation ?
Quel est le meilleur langage pour débuter la programmation ?
Les avis diffèrent et chacun a ses critères
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 ?
La programmation ... vaste nom.
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
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
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).
Arrêter ce genre de sondage svp!
Il faudrait peut être arrêter les sondages sur le choix des langages de programmation pour débuter.
Tout simplement parce que il n'y a pas de langage fait pour apprendre à programmer, et ce genre de débat tourne en général dans une discussion sans fin. (Chaque langage à été fait pour un cas d'utilisation bien précis, les finances pour le COBOL, la simplicité pour le java, les performances pour le c++, etc..., etc... (bien que le nouveau standard c++ tend à se rapprocher des autres langages tout en conservant sa rapidité. (ce qui en fait mon langage préféré.))
Quelqu'un qui connaît un langage mais qui ne maîtrise rien au niveau algorithmique, n'ira pas bien loin. :/
Des notions en mathématiques et en Anglais sont aussi nécessaires. (Statistiques pour les programmes économique, Géométrie et physique pour les jeux vidéos)
Personnellement moi j'ai commencé avec un langage particulier qui est plus un langage algorithmique que un langage de programmation :
Des diagrammes, des dessins (sur ordinateurs ou bien sur papier), etc... (Le diagramme dépendait plutôt du langage par contre (Pour le COBOL c'était une structure arboresscente, pour le c, une structure linéaire plutôt (de haut en bas) et pour l'orienté object, de l'UML.)
Le but étant de pouvoir traduire cela dans n'importe quel langage de programmation. ^^
Je pense qu'il ne faut pas commencer par un langage de programmation directement, il faut commencer par faire des diagrammes ou bien des dessins sur papier et comprendre ce que l'on fait, et c'est après seulement qu'on encode avec un langage de programmation (au choix ça dépend de ce que l'on veut faire comme type d'application) pour tester/optimiser et corriger les bugs.
Commencer par des cours d'algorithmique (comme je l'ai fais) est le mieux afin de ne pas avoir à trop changer de code par la suite.