2022-08-13 00:26 Temps de lecture : 27 min

5 nouveaux langages de programmation à connaître

Pour certains, s'engager dans l'apprentissage d'un nouveau langage de programmation est perçu comme un effort superflu. Pourquoi, se demandent-ils, avons-nous besoin d'une autre langue ?

N'en avons-nous pas déjà suffisamment ?

Les outils existants ne suffisent-ils pas à accomplir les tâches ?

Cependant, il existe des esprits curieux qui saisissent chaque occasion d'explorer de nouvelles voies et de découvrir des pépites. Pour eux, l'apprentissage est une fin en soi, et ils n'hésitent pas à consacrer leurs week-ends à la création d'un jeu de cartes en ligne dans un nouveau langage encore méconnu.

Quel que soit votre camp, une chose est certaine : nous aspirons tous à investir notre temps dans des domaines porteurs d'avenir.

Ceux qui sont attachés aux outils existants estiment que leur langage de prédilection a déjà une dynamique établie et continuera de prospérer. Il est cependant important de leur rappeler que même leurs outils de développement préférés, aujourd'hui mature, furent autrefois une nouveauté que beaucoup hésitaient à adopter. C'est ainsi que de nouvelles technologies apparaissent, pour répondre à de nouveaux problèmes ou pour simplifier le processus de développement.

Si une technologie se distingue par une approche novatrice, il est fort probable qu'elle gagne en popularité et atteigne le sommet. Lorsque cela se produit, il est préférable de ne pas être laissé pour compte. 🙂

Et pour ceux qui sont attirés par les nouveautés, un avertissement : s'amuser est essentiel pour un programmeur, mais il faut éviter de gaspiller son énergie inutilement.

Certes, Brainfuck est un langage minimaliste, complexe et amusant, mais il est peu probable qu'une étude approfondie vous soit utile. Il est préférable de rechercher une technologie nouvelle, pertinente et avec des bases solides.

Comment ces langages ont été sélectionnés

Choisir un langage de programmation peut s'avérer difficile, surtout quand il s'agit de considérer les opportunités professionnelles et la satisfaction à long terme. Chaque créateur de langage est convaincu d'avoir conçu la solution idéale, répondant à tous les besoins. Comment alors faire un choix ?

Dans cet article, j'ai limité ma recherche en me basant sur certains critères.

Date de lancement

J'ai délibérément écarté les langages très récents.

Par "récents", je fais référence aux langages ayant moins de 5 ou 6 ans au moment de la rédaction de cet article, en particulier ceux qui n'ont pas encore atteint une certaine stabilité (c'est-à-dire une version 1.0). Cela exclut malheureusement des outils prometteurs comme Crystal, sur lesquels j'espère revenir ultérieurement. 🙂

Un extrait de code en Crystal ("Rapide comme C, élégant comme Ruby")

Pour moi, la période idéale se situe entre 5 et 12 ans, un moment où le langage s'est stabilisé tout en continuant à évoluer. Bien sûr, il existe des exceptions, que je prendrai en compte le cas échéant.

Ce point, bien qu'évident, est souvent négligé lorsque l'on est enthousiasmé par une nouveauté. Pour beaucoup, le soutien d'une grande entreprise est un gage de succès, mais ce n'est pas toujours le cas.

Bien qu'Objective-C d'Apple et maintenant Swift aient prospéré grâce à leur position dans un écosystème très contrôlé, Facebook D et Hack (une interprétation maladroite d'un langage déjà peu attrayant, selon moi) restent des projets plus ou moins expérimentaux.

L'idéal serait de trouver un langage soutenu par une grande entreprise stable, dont la popularité est en pleine croissance (comme React).

L'aspect fondamental reste la communauté. Si un langage ne suscite pas d'intérêt et n'est pas adopté par un nombre suffisant de développeurs, il ne sortira pas de sa niche sur GitHub.

Cela exclut pour moi des langages reconnus et fascinants comme Racket et Erlang, dont la croissance est restée stable.

Proposition de valeur claire et ciblée

Le troisième critère est l'objectif précis du langage. Une version améliorée de PHP qui corrigerait les problèmes de nommage et se compilerait en PHP natif ne me convainc pas.

Les bénéfices seraient trop faibles pour justifier l'investissement, à condition que tout le monde adopte cette solution. C'est pourquoi j'écarte des tentatives comme CoffeeScript et de nombreux autres langages qui se compilent en JavaScript.

Honnêtement, j'écarte d'emblée les langages qui se contentent d'améliorer la syntaxe. L'histoire a prouvé que la fonctionnalité prime sur l'agrément lorsqu'il s'agit des langages, donc si un nouveau langage ne fait qu'améliorer l'expérience, il ne trouvera pas sa place dans cette liste.

Syntaxe claire et cohérente

Oui, je sais. J'ai juste affirmé que la syntaxe n'était pas un facteur déterminant. Plus précisément, j'ai dit que les simples "améliorations de la syntaxe" n'étaient pas importantes. Cependant, la syntaxe reste un élément clé pour la productivité et la maintenabilité des développeurs, et doit donc être prise en considération.

La syntaxe est liée à la cohérence. Le nommage des fonctions, la structure des modules, etc., sont des aspects importants qu'un langage ne doit pas négliger. Nous sommes en 2018, et une nouvelle conception de langage de type PHP serait un affront à notre profession. Sans plus tarder, voici mes cinq recommandations.

1. Julia

Pour les chercheurs du MIT, les langages disponibles pour la science des données étaient au mieux un compromis. Python, malgré sa clarté et sa popularité, ne possédait pas de fonctionnalités natives pour manipuler les objets de données. De plus, en tant que langage interprété, Python était lent (les bibliothèques mises à part, car elles sont principalement écrites en C).

Le principal obstacle était peut-être son modèle de concurrence maladroit et son absence de capacités de calcul parallèle, un aspect fondamental du supercalcul.

C'est ainsi que Julia a vu le jour.

Julia a atteint sa version stable le 29 septembre 2018, quelques jours seulement avant la rédaction de cet article (quelle coïncidence !). Voici ce que dit le site officiel concernant ses capacités :

Julia excelle dans le calcul numérique. Sa syntaxe est idéale pour les mathématiques, de nombreux types de données numériques sont pris en charge et le parallélisme est prêt à l'emploi. Le dispatch multiple de Julia est particulièrement adapté pour la définition des types de données de nombres et de tableaux.

D'un point de vue syntaxique, Julia peut être considérée comme une fusion entre Python et C. Il s'agit probablement de la première fois qu'un langage ambitionne ces deux qualités et réussit.

Pour faire simple, Julia est extrêmement rapide et n'impose pas de typage strict. Voici quelques benchmarks :

Les benchmarks officiels de Julia

Comme on peut le constater, Julia est légèrement moins performante que C mais surpasse largement Java et Python. Et à quoi ressemble le code Julia ?

Voici l'implémentation d'une fonction pour calculer l'hypoténuse d'un triangle rectangle :

Bien que l'écosystème Julia soit principalement orienté vers les mathématiques, je pense qu'il a un bel avenir dans d'autres domaines.

C'est, à ma connaissance, le premier langage qui offre un support de premier ordre pour le calcul parallèle, il ne serait donc pas surprenant de le voir gagner en popularité dans les secteurs du web et de l'IoT.

2. Rust

Si vous avez testé les dernières versions du navigateur Firefox, vous savez qu'après des années d'effort, il semble qu'elles puissent enfin récupérer une part du marché face à Chrome.

Si le navigateur paraît léger, rapide et réactif, c'est grâce au langage développé par Mozilla : Rust.

Dire que Rust a un avenir prometteur serait un euphémisme. Ce langage connaît déjà un succès considérable, et si vous n'en avez pas encore entendu parler, c'est que son domaine d'application est spécifique, avec un objectif ambitieux : remplacer C++ ! Oui, nous avons enfin un langage qui est non seulement capable de le faire, mais qui le fait déjà.

Pour ceux qui sont frustrés par les défis liés à la conception et à la gestion de la mémoire avec C++, Rust est une bouffée d'air frais.

Voici à quoi ressemble un programme Rust :

Concise et élégante, à mon avis. Rust suit une approche de programmation fonctionnelle, ce qui rend votre code plus composable, sans les contraintes des hiérarchies orientées objet.

Alors, qu'est-ce qui donne à Rust la confiance nécessaire pour s'attaquer à C++ ? C'est son modèle de gestion de la mémoire. Au lieu de reposer sur l'ancien mécanisme new()/delete(), Rust introduit le concept de propriété.

Plutôt que d'allouer et d'accéder directement à la mémoire, les variables Rust "s'empruntent" les unes aux autres, avec des restrictions strictes imposées par le compilateur. Le concept est trop complexe pour être expliqué ici, je vous encourage donc à consulter la documentation officielle.

L'essentiel est que cela se traduit par une sécurité de la mémoire totale sans nécessiter de ramasse-miettes, ce qui est un avantage non négligeable.

Rust a conquis le monde de la programmation système. Il est déjà pris en charge sur plusieurs plateformes, les navigateurs puissants et les moteurs de rendu remplacent rapidement le code C/C++ dans les systèmes de production, et il est utilisé pour écrire des systèmes d'exploitation.

Bien sûr, tout le monde n'a pas envie de créer un autre navigateur ou pilote de périphérique, mais Rust gagne également du terrain dans d'autres domaines. Nous avons déjà plusieurs frameworks Web performants et rapides en Rust, et de plus en plus de bibliothèques applicatives sont en développement.

Honnêtement, si vous recherchez un avenir stimulant, Rust est le langage idéal, et c'est le moment parfait pour vous lancer. Rust est un avion qui a décollé, mais il n'est pas trop tard pour monter à bord, car il se dirige vers les étoiles !

Apprendre Rust avec Dmitri Nesteruk.

3. Élixir

Parmi les langages qui mettent l'accent sur le plaisir des développeurs, Ruby occupe sans conteste la première place. C'est un langage qui se lit comme de la poésie et qui dispose de suffisamment de raccourcis pour réduire les frictions mentales.

Il n'est donc pas surprenant que le framework Rails continue de dominer le développement full-stack pour les développeurs et les startups. Mais certains n'étaient pas entièrement satisfaits de Rails, notamment l'un de ses principaux développeurs : José Valim. Selon lui, la genèse de ce langage est expliquée de manière claire dans une interview :

L'histoire est longue, mais je vais tenter de la résumer. En 2010, je travaillais à améliorer les performances de Rails avec les systèmes multicœurs, car nos machines et nos systèmes de production sont équipés d'un nombre croissant de cœurs. Cependant, cette expérience a été frustrante car Ruby ne fournit pas les outils adaptés pour gérer les problèmes de concurrence. C'est alors que j'ai commencé à explorer d'autres technologies, et que je suis tombé amoureux de la machine virtuelle Erlang.

J'ai commencé à utiliser Erlang de plus en plus, et avec l'expérience, j'ai réalisé que certaines fonctionnalités disponibles dans d'autres langages, y compris fonctionnels, me manquaient. C'est à ce moment que j'ai décidé de créer Elixir, dans le but d'apporter différentes fonctionnalités et d'excellents outils à la machine virtuelle Erlang.

Et voilà, Élixir est né !

Tout comme Scala améliore Java en ciblant la même machine virtuelle (la JVM), Elixir exploite la machine virtuelle Erlang, éprouvée et vieille de plusieurs décennies.

Entrer dans le détail d'Erlang dépasserait le cadre de cet article, mais il est essentiel de savoir qu'il s'agit du secret le mieux gardé de l'industrie des télécoms : si nos réseaux téléphoniques sont plus fiables que nos systèmes basés sur le web, c'est grâce à Erlang.

En termes plus simples, voici ce que cela signifie : si vous développez un système en temps réel comme un chat, Elixir sera beaucoup moins gourmand en RAM et plus stable que Ruby (ou PHP, Python et Java, d'ailleurs).

Une machine qui exécute Ruby et atteint un maximum de 10 000 connexions simultanées peut facilement en gérer 200 000 avec Elixir, tout en conservant suffisamment de RAM pour exécuter des jeux 2D !

Extrait de code Elixir

En termes de syntaxe, Elixir s'inspire sans complexe de Ruby, et son framework web principal, Phoenix, reprend les idées de Rails. Je considère que c'est un avantage, car avec Laravel, Grails, Masonite, etc., nous atteignons un point où tous les langages ont des frameworks de type Rails qui facilitent la transition. Certains pourraient critiquer ce manque d'originalité, mais je n'y vois pas d'inconvénient.

Pour résumer, Élixir fait partie de ces technologies rafraîchissantes, agréables et très pratiques. De nombreuses entreprises Ruby (et même d'autres) migrent vers Elixir, et de grandes sociétés comme Pinterest l'utilisent en production avec des résultats très satisfaisants.

Beaucoup pensent que Node.js était une tentative improvisée de concurrence et qu'il sera bientôt remplacé par Elixir. Je dois avouer que je suis d'accord avec cette idée. 🙂

4. Kotlin

En 2017, lors de la conférence I/O, Google a annoncé une nouvelle qui a secoué l'industrie : Kotlin était officiellement désigné comme le langage principal pour le développement Android.

Le fait que Google cherche activement à remplacer Java n'est pas surprenant après avoir été impliqué dans un procès avec Oracle. Cependant, l'adoption de Kotlin était inattendue, et il y a de fortes chances que Google développe sa propre machine virtuelle à terme. Pour l'instant, Kotlin connaît un essor important.

Kotlin a été développé par JetBrains, une société renommée pour ses excellents éditeurs de code. L'un d'eux, IntelliJ IDEA, constitue la base d'Android Studio. Les objectifs de conception de Kotlin sont la sécurité, la concision et une interopérabilité totale avec Java.

Le compilateur Kotlin s'efforce notamment d'éliminer les erreurs de pointeur nul qui sont courantes dans l'univers Java. Il permet également de réduire la verbosité habituelle de Java, ce qui soulagera de nombreux développeurs.

Voici une comparaison pertinente entre le code Java et Kotlin :

Crédit image : hype.codes

Le code Kotlin est nettement plus court et plus facile à assimiler.

Soyons clairs sur un point : il est peu probable que Kotlin remplace complètement Java, même s'il est en passe de devenir une référence. Je pense que dans dix ans, les petites et moyennes équipes privilégieront Kotlin, tandis que les grands groupes continueront à utiliser Java pour des raisons de compatibilité avec des systèmes existants.

Cela dit, Kotlin a un avenir très prometteur car il fait tout ce que Java fait, peut s'intégrer avec du code Java et est beaucoup plus agréable à utiliser !

5. TypeScript

Il m'a fallu me retenir pour cette dernière place ! Une partie de moi criait "Elm ! Elm !", mais malgré ses idées innovantes et sa syntaxe élégante, Elm n'est pas encore considéré comme une option grand public pour le développement front-end. 🙁 Bref, passons à ce qui est plus répandu : TypeScript.

JavaScript est comme des baies sauvages : peu attrayant et au goût discutable, mais vous devez faire avec si vous souhaitez survivre dans la jungle du développement front-end. De nombreuses tentatives ont été faites pour le remplacer (et le nouveau standard WebAssembly pourrait bien y parvenir), mais c'est le sur-ensemble développé par Microsoft qui a retenu l'attention.

Il y a de fortes chances que vous ayez déjà entendu parler de TypeScript : Angular a été le premier framework à l'adopter à partir de la version 2, et les développeurs l'ont vite remarqué. C'est parce que TypeScript ajoute des fonctionnalités indispensables au langage de programmation le plus connu au monde.

Oui, il est enfin possible d'écrire du code JavaScript sans souffrir et sans regretter son existence !

Voici les améliorations apportées par TypeScript :

✓ Typage fort : enfin, une chaîne n'est pas un nombre, et un nombre n'est pas un objet, qui n'est pas un tableau vide !

✓ Vérification du type à la compilation : si votre code se compile correctement, il est presque garanti qu'il ne contiendra pas les erreurs d'exécution habituelles de JavaScript.

✓ Classes et modules : oui, les classes sont incluses dans ES6, mais elles font également partie de TypeScript, en plus d'un système de modules efficace.

✓ Inférence de type : pour les types complexes, le compilateur peut facilement identifier le type, ce qui vous épargne des maux de tête.

✓ Async/await : les mots-clés et modèles async/await sont fondamentaux, plus besoin de vous préoccuper des promesses et des rappels !

Espaces de noms, génériques, tuples... Je pourrais continuer encore longtemps, mais cela devrait suffire à prouver que TypeScript transforme l'une des pires expériences de développement en l'une des meilleures.

Extrait de code TypeScript

L'impact de TypeScript est indéniable. Il a écarté des tentatives similaires comme Dart de Google (bien qu'il revienne avec Flutter, un framework de développement mobile) et a sensibilisé les développeurs JS aux avantages d'un typage plus puissant.

Par conséquent, des bibliothèques majeures telles que React, D3, Vue (et même jQuery !) ont maintenant une version TypeScript, et dans les entreprises de pointe, tout le code JavaScript est écrit en code TypeScript. Des entêtes TypeScript sont désormais disponibles pour Node.js (honnêtement, si Node pouvait améliorer la gestion de la concurrence et corriger ses problèmes de mémoire, il pourrait durer longtemps).

Vous serez peut-être surpris d'apprendre que le créateur de Node.js, après avoir publiquement regretté sa création, travaille sur un nouveau runtime (il n'y a pas de site officiel pour l'instant, seulement le dépôt GitHub) qui utilise TypeScript comme langage principal.

La bonne nouvelle ? TypeScript est un langage facile à apprendre qui offre des avantages considérables pour l'avenir. Si vous êtes un développeur JavaScript intermédiaire, vous pourrez maîtriser TypeScript en quelques jours et migrer facilement votre code existant !

Conclusion et mise en garde

D'autres langages, tout aussi populaires, n'ont pas été inclus dans cette liste pour diverses raisons. En voici quelques exemples :

  • Golang : C'est un langage déjà bien établi, bien que sa popularité soit relative. Je pense que Golang a de nombreux concurrents qui vont limiter sa part de marché.
  • R : R est déjà très utilisé par les scientifiques de données, et il est peu probable qu'il attire un public plus large de développeurs d'applications. De plus, les bibliothèques d'apprentissage automatique s'intègrent progressivement dans tous les principaux langages (même PHP en possède maintenant !), il suffit donc d'attendre un peu. 🙂
  • Swift : Apple contrôle totalement son écosystème, et Swift est le seul langage utilisable. Autrefois, Objective-C était en vogue, tout comme Swift l'est aujourd'hui. Je considère cela comme de la triche et je refuse de l'inclure ici. 😀

L'avenir est toujours incertain, et une façon d'aborder votre carrière est de rester fidèle à ce qui fonctionne déjà et de ne pas se laisser "distraire". Si vous adoptez cette approche, Java, PHP, Python, Ruby, etc., sont d'excellents choix. Cependant, certains d'entre nous estiment que la norme ne suffit pas. Ils souhaitent explorer et parier sur l'avenir. Si vous faites partie de cette catégorie, l'un de ces cinq langages devrait figurer en tête de votre liste.

Enfin, lorsque vous évaluez un langage, ne vous laissez pas intimider par l'effort à fournir, car il n'est pas aussi important qu'il n'y paraît. Si vous connaissez déjà quelques langages de programmation, vous pouvez apprendre n'importe lequel d'entre eux en deux mois maximum, en y consacrant 5 à 6 heures par semaine. Les bénéfices en termes de plaisir et d'opportunités financières seront largement supérieurs.

Ai-je oublié un langage essentiel ? Ou peut-être suis-je dans l'erreur concernant les langages mentionnés ? Si c'est le cas, n'hésitez pas à laisser un commentaire pour m'aider à m'améliorer. 🙂

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.