La première étape quand on veut débuter dans le développement est de choisir son premier langage de programmation et ce n'est pas un choix facile, surtout quand on découvre la quantité de langages disponibles. Cependant, le choix devient plus simple si on est capable de répondre à certaines questions (quel domaine nous intéresse, quelles contraintes existent dans cet écosystème, et quel niveau de difficulté on souhaite accepter au départ...).
Naturellement on peut se demander pourquoi il existe autant de langages étant donné que l'objectif reste toujours le même : expliquer à l'ordinateur ce qu'on veut lui faire faire.
Dans les faits l'informatique couvre aujourd'hui de nombreux domaine qui ont des besoins très différents et une personne qui développe un jeu vidéo n'aura pas les mêmes contraintes / besoins qu'une personne qui travaille dans les telecom. En fonction du domaine, certains langages seront donc plus adaptés que d'autres.
Avant de choisir un langage, on peut commencer par réfléchir au domaine qui nous attire : web, jeu vidéo, mobile, logiciel, systèmes, etc. Dans certains cas, l'écosystème impose presque directement le langage à apprendre. Pour vous donner quelques exemples :
Dans ce genre de situation, le choix s'impose à vous et vous n'aurez donc pas vraiment de choix à faire.
Si vous ne savez pas encore précisément quel domaine vous attire, il peut être intéressant de choisir un langage plus générique. L'objectif est alors d'apprendre les bases de la programmation sans se fermer trop rapidement à un domaine particulier.
Python est un bon exemple de langage généraliste. Il est utilisé dans beaucoup de domaines différents, même s'il n'est pas forcément le meilleur choix pour chacun d'entre eux. Son intérêt réside dans le fait qu'il permet de faire beaucoup de choses différente et donc de découvrir progressivement ce qui vous plaît.
Il faut aussi garder en tête qu'un premier langage ne détermine pas toute une carrière. On peut très bien commencer avec un langage, puis en apprendre un autre plus tard. Une grande partie de ce que l'on apprend se transfère facilement : la logique, les concepts de base, la manière de décomposer un problème... C'est surtout la syntaxe qui va changer d'un langage à l'autre.
Un autre critère important, c'est le niveau de complexité du langage. Même si l'objectif d'un langage de programmation est de communiquer avec la machine ils sont surtout pensé pour être compréhensible par des humains. Ils permettent de se concentrer sur la logique, pendant que le langage et son environnement gèrent des aspects plus techniques comme la mémoire et la gestion du processeur. Les langages peuvent apporter plus ou moins d'abstraction et être plus ou moins complexes en fonction du niveau de contrôle qu'ils veulent donner au développeur. On parle alors de langage de haut niveau (beaucoup d'abstraction, simple pour un humain), ou de bas niveau (peu d'abstraction, meilleur contrôle de la machine mais aussi plus complexe).
Cette catégorisation est en général assez binaire mais dans les faits la délimitation entre bas et haut niveau n'est pas forcément si évidente mais pour la suite on va considérer qu'un langage bas niveau est un langage qui vous forcer à vous occuper d'autre chose que la logique.
Les langages plus bas niveau donnent plus de contrôle sur la machine. Ils permettent de gérer plus finement la mémoire, les accès disques, le GPU... Ce contrôle peut être très utile lorsqu'on a des besoins de performance ou de précision, mais il rend souvent l'apprentissage plus complexe car en plus de comprendre la logique à créer, on doit comprendre certaines contraintes techniques.
Dans ces conditions on peut donc se demander s'il vaut mieux commencer par un langage plus complexe ou s'il faut privilégier un langage haut niveau. Malheureusement il n'y a pas de réponse unique :
Parmi les langages répandus et plutôt accessibles, on peut citer Python, Java, JavaScript. Ce sont des langages haut niveau, utilisés dans beaucoup de contextes, avec une courbe d'apprentissage généralement plus progressive.
Quand on débute, il est important de choisir un langage pour lequel on trouve facilement de l'aide. Plus un langage est utilisé, plus il y aura de ressources, de tutoriels, de contenus et de personnes capables de répondre à vos questions.
C'est aussi un point qui compte avec l'avènement de l'intelligence artificielle. Les modèles sont plus entrainés avec des langages qui disponsent de nombreux exemples en ligne, ce qui peut les rendre plus efficaces pour vous aider à comprendre une erreur ou à répondre à une question.
Sur ce site on se focalise sur le développement web et c'est un domaine qui a une particularité importante : il est séparé en deux parties, le front-end et le back-end.
Pour comprendre cette distinction, on peut faire une analogie avec un commerce. La boutique, dans laquelle les clients entrent pour voir les produits, correspond au front-end (front office). Mais pour que cette boutique fonctionne il y a toute une partie cachée des consommateurs : le transport, le stock, l'entrepôt... Cette partie cachée correspond au back-end. Elle n'est pas visible directement, mais est indispensable au fonctionnement de l'ensemble.
On retrouve cette même distinction pour le web :
Lorsque l'on souhaite attaquer le domaine du développement web il faudra faire un choix entre frontend et backend (même si à terme vous pouvez voir les 2). Si vous ne savez pas trop quoi choisir vous pouvez commencer les 2 parcours et voir ce qui vous correspond le mieux.
Si c'est le front-end qui vous intéresse, il n'y a pas de choix à faire en terme d'apprentissage car on est limité par les langages qui sont supportés par le navigateur :
Pour le back-end, le choix est plus large de nombreux langages permettent de créer un serveur web.
Même si certains langage générique permettent de créer des applications web il est important de noter qu'il existe aussi des langages qui n'ont été pensé que pour cet usage :
En plus de ces langages spécifiques au web il est aussi possible d'utiliser des langages génériques qui se sont adapté au web à travers des outils supplémentaires.
Il existe d'autres langages plus spécifiques comme Go ou Rust mais je les pense trop spécifique pour un premier langage à apprendre.
Si votre objectif est de trouver un emploi, il est utile de regarder les offres autour de vous. Les technologies demandées peuvent varier selon les pays, les régions ou les entreprises. Si vous voyez beaucoup d'offres en PHP, apprendre PHP peut être pertinent. Si Java revient souvent dans votre secteur, Java peut être un meilleur choix pour démarrer.
L'idée n'est pas de trouver le langage parfait, mais de choisir un langage qui correspond à votre objectif actuel. Il vaut souvent mieux commencer à apprendre avec un langage utile et demandé plutôt que passer trop de temps à chercher le meilleur choix théorique et finalement ne rien apprendre par peur de s'engager sur un choix.
Pour choisir votre premier langage, commencez par identifier le domaine qui vous intéresse. Si ce domaine impose un langage, le choix se fait naturellement. Si vous ne savez pas encore où aller, un langage généraliste comme Python ou Java peut être un bon point de départ.
Pour le web, JavaScript est incontournable côté front-end et peut aussi être utilisé côté back-end. PHP reste une bonne option pour démarrer progressivement dans le back-end web, avec beaucoup de ressources disponibles. D'autres langages comme Python ou Java peuvent aussi être de très bons choix selon vos objectifs (mais je ne les couvre par sur ce site).
Dans tous les cas, le premier langage n'est pas définitif. Le plus important est de commencer, d'apprendre les bases, puis de passer à d'autres langages si vos besoins évoluent.