Pour certaines personnes, l'apprentissage d'un nouveau langage de programmation est un excès qu'il vaut mieux éviter. Pourquoi, oh pourquoi, disent-ils, avons-nous besoin d'une autre langue?

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

Les outils existants ne font-ils pas le travail?

Et puis il y a ces chercheurs infatigables qui sautent sur l'occasion d'essayer de nouvelles choses et de tomber sur des joyaux. L'apprentissage est une fin en soi, et ils n'ont pas besoin de beaucoup de conviction pour passer leurs week-ends à construire un jeu de cartes sur console dans ce nouveau langage obscur.

nouveau langage de programmation

Quel que soit le camp auquel vous appartenez, il y a quelque chose au-delà du débat: nous voulons tous passer du temps sur quelque chose qui aura un bel avenir.

Pour les personnes du camp de l'héritage, leur langue existante préférée a déjà une tonne d'élan et continuera d'avoir un avenir radieux. Pour eux, je dois leur rappeler que leur chaîne d'outils de développement préférée, désormais mature, était autrefois un "kool-aid" que beaucoup refusaient de boire. Et c'est ainsi aujourd'hui; de nouvelles technologies sont ajoutées pour résoudre de nouveaux problèmes ou pour soulager la douleur du développement.

Si quelque chose fait cela assez radicalement, il y a de fortes chances que cela continue de capturer l'esprit et d'atteindre le sommet. Lorsque cela se produit, vous ne voulez pas être laissé pour compte. 🙂

Et à ceux qui aiment courir avec des trucs brillants, un avertissement: s'amuser est essentiel en tant que programmeur, mais il faut faire attention à ne pas gaspiller nos énergies sans but.

Bien sûr, Brainfuck est un petit langage incroyablement tordu, ressemblant à un puzzle et amusant, mais il est peu probable que vous en profitiez en le poursuivant sérieusement. Vous voulez quelque chose de nouveau, de sensé et qui a une base solide.

How these languages were selected

Comment ces langues ont été sélectionnées

La sélection de la langue est un travail intimidant, en particulier lorsque de nouvelles langues sont envisagées pour des avantages futurs en matière d'emploi et de satisfaction. Chaque auteur de langue est fermement convaincu qu'il a construit le langage parfait possible et résolu tous les problèmes auxquels il faut répondre. Alors, comment coupez-vous?

Pour cet article, je me suis concentré sur quelques paramètres pour maintenir ma recherche dans des limites raisonnables.

Date de sortie

J'ai spécifiquement évité les langues très, très nouvelles.

Nouveau, je veux dire les langues de moins de 5-6 ans au moment de l'écriture, et surtout celles qui n'ont pas atteint la stabilité (version 1.0, c'est-à-dire). Ceci, malheureusement, exclut certains vrais joyaux comme Cristal, Mais j'espère revenir sur ce sujet et écrire sur son succès un jour. 🙂

extrait de crystal-lang
Un extrait de code dans Crystal ("Fast as C, Slick as Ruby")

Pour moi, 5 à 12 ans est le point idéal, c'est-à-dire lorsqu'une langue s'est stabilisée et que d'autres raffinements sont en cours d'élaboration. Maintenant, bien sûr, il existe des exceptions à cette règle, et celles-ci seront prises en compte le cas échéant.

Intérêt communautaire fort

Celui-ci est une évidence, mais est souvent ignoré lorsque nous sommes enthousiasmés par quelque chose de nouveau. Maintenant, pour beaucoup de gens, le soutien d'une grande entreprise est un précédent suffisant pour réussir, mais ce n'est pas toujours vrai.

Oui, l'Objective-C d'Apple et maintenant Swift ont prospéré parce que c'était les seules options dans un écosystème hautement contrôlé, mais Facebook D et un entaille (une interprétation moche sur une langue déjà moche, à mon avis) ne restent guère plus que des expériences.

Intérêt communautaire fort

La combinaison idéale serait un langage soutenu par une grande entreprise stable et explosant en popularité (comme React).

Mais le cœur du problème reste la communauté. Si une langue ne crée pas de buzz et qu'il n'y a pas assez de développeurs pour éduquer et vulgariser, elle ne sortira pas de sa tombe GitHub.

Pour moi, cela exclut les langues matures et fascinantes comme Raquette et un Erlang, car ils sont restés stables sur la courbe de croissance.

USP ciblé et bien défini

La troisième chose que je recherche est un objectif clair pour la langue. Par exemple, une meilleure version de PHP qui corrige les problèmes de dénomination et compile en PHP natif ne fonctionne pas pour moi.

Les avantages sont tout simplement trop faibles pour justifier les fissures si tout le monde essaie de s'y mettre. À cet égard, je ne peux m'empêcher de rejeter des tentatives telles que CoffeeScript, et de nombreux autres langages de compilation vers JavaScript similaires.

se concentrer

Honnêtement, je suis obligé de rejeter immédiatement les améliorations de syntaxe uniquement. L'histoire a montré que l'utilité l'emporte sur la convivialité en matière de langues, donc si toutes les nouvelles langues se concentrent sur une expérience plus agréable, j'ai bien peur qu'elle ne fasse pas partie de cette liste.

Syntaxe claire et cohérente

Oui je sais. Je viens de dire que la syntaxe n'a pas d'importance. Eh bien, pour être précis, j'ai dit que les «améliorations de syntaxe uniquement» importaient peu. Mais cela dit, la syntaxe reste l'un des facteurs importants de la productivité et de la maintenabilité des programmeurs, c'est donc quelque chose qui doit figurer dans mes calculs ici.

Syntaxe claire et cohérente

Avec la syntaxe vient l'idée de cohérence. La dénomination des fonctions, la structuration des modules, etc., sont des éléments clés qu'un langage ne peut pas se permettre de se tromper. Nous sommes en 2018, pour l'amour de Dieu, et une autre conception de langage de type PHP serait une honte pour nous tous. Alors, sans plus tarder, commençons avec nos cinq principales recommandations.

1. Julia

Pour les gens du MIT, les langages disponibles pour la science des données étaient au mieux un compromis. Python, malgré sa clarté et sa popularité, manquait de constructions natives pour traiter les objets de données. De plus, étant un langage interprété, Python était lent pour eux (pas les bibliothèques, remarquez, car ils sont principalement écrits en C).

Mais le plus gros problème a peut-être été le modèle de concurrence maladroit et l'absence de modèle de calcul parallèle, ce dernier étant un élément de base du super-informatique.

En conséquence, Julia est né.

logo-julia-lang

Julia a atteint sa sortie stable le 29 septembre 2018, à peine quelques jours avant la rédaction de cet article (parlez de timing!). Voici ce que le site officiel a à dire sur 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 disponible immédiatement. La répartition multiple de Julia est un ajustement naturel pour définir des types de données de type nombre et tableau.

Sur le plan de la syntaxe, Julia peut être vue comme une combinaison de Python et C. Oui, c'est probablement la première fois qu'un langage vise ces deux qualités et réussit.

Pour garder les choses simples, Julia est extrêmement rapide et n'impose pas une frappe stricte. Voici quelques repères :

julia-benchmarks
Les benchmarks officiels de Julia

Comme vous pouvez le voir, Julia est légèrement pire que C mais souffle Java et Python hors de l'eau. Et quelle sorte de friandise offre Julia?

Eh bien, voici l'implémentation d'une fonction de calcul de l'hypoténuse d'un triangle rectangle:

extrait de julia

Enfin, alors que la plupart des Julia écosystème est fortement orienté vers le travail mathématique, je pense qu'il a un bel avenir polyvalent.

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

2. Rust

Si vous avez essayé les nouvelles versions du navigateur Firefox, vous savez que finalement, après des années de travail, il semble qu'ils pourraient être en mesure de prendre une part de marché à Chrome.

Si le navigateur semble léger et vif et rend rapidement, c'est grâce au langage spécialement développé par Mozilla: Calme.

logo-rouille-e1540114642789

Dire que Rust a un bel avenir sera un mensonge; le langage est déjà un énorme succès, et si vous n'en avez pas encore entendu parler, c'est parce que son domaine d'application est spécialisé, et son objectif effrayant: remplacer le C ++! Oui, nous avons enfin un langage qui non seulement est capable de faire cela, mais qui le fait déjà.

Pour les personnes frustrées par les défis surchargés de conception et de gestion de la mémoire de C ++, Rust est une bouffée d'air frais.

Voici à quoi ressemble un programme Rust:

extrait de rouille

Concis et élégant, à mon avis. Rust suit l'approche de programmation fonctionnelle, ce qui rend votre code plus composable, et il n'y a pas de hiérarchies orientées objet avec lesquelles lutter.

Alors, qu'est-ce qui donne à Rust le courage de s'attaquer au C ++? C'est le nouveau modèle de mémoire. Plutôt que de s'appuyer sur l'ancienne danse new () / delete (), Rust introduit l'idée de propriété.

Plutôt que d'allouer et d'accéder directement à la mémoire, les variables Rust «empruntent» les unes aux autres, avec des restrictions strictes placées par le compilateur. Le concept global est trop compliqué à expliquer en quelques mots, alors n'hésitez pas à consulter le documents officiels pour en savoir plus.

Le fait est que cela se traduit par une sécurité de la mémoire à 100% sans avoir besoin d'un ramasse-miettes, ce qui est un gros problème.

Rust a pris d'assaut le monde de la programmation système. Il est déjà pris en charge sur certaines plates-formes, les navigateurs puissants et les moteurs de rendu remplacent rapidement le code C/C++ sur les systèmes de production et sont utilisés pour écrire des systèmes d'exploitation.

Bien sûr, ce n'est pas la tasse de thé de tout le monde pour créer un autre navigateur ou pilote de périphérique, mais Rust se propage déjà à d'autres domaines. Nous avons déjà plusieurs frameworks Web entièrement fonctionnels et ridiculement rapides dans Rust, et de plus en plus de bibliothèques d'applications sont en cours de développement.

Honnêtement, si vous êtes intéressé par un avenir passionnant, Rust est le langage parfait, et maintenant est un moment parfait. Rust est un avion qui a décollé, mais il est encore temps de monter à bord alors qu'il se dirige vers les étoiles!

Apprendre Rouille de Dmitri Nesteruk.

3. Elixir

Parmi les langages axés sur le bonheur des développeurs, la première place est définitivement réservée à Ruby. C'est un langage qui se lit comme de la poésie et qui a suffisamment de raccourcis pour réduire les frictions mentales par ordre de grandeur.

Il n'est donc pas étonnant que le framework Rails continue de dominer le développement full stack pour les développeurs et startups sérieux. Mais tout le monde n'était pas satisfait de Rails, en particulier l'un de ses principaux développeurs - José Valim. Je pense que le créateur lui-même explique le mieux la genèse de ce langage dans un entretien:

C'est une longue histoire, mais je vais essayer de la rendre courte et douce. En 2010, je travaillais à l'amélioration des performances des Rails lorsque je travaillais avec des systèmes multicœurs, car nos machines et nos systèmes de production sont expédiés avec de plus en plus de cœurs. Cependant, toute l'expérience a été assez frustrante car Ruby ne fournit pas l'outil approprié pour résoudre les problèmes de concurrence. C'est à ce moment que j'ai commencé à regarder d'autres technologies et que je suis finalement tombé amoureux de la machine virtuelle Erlang.

J'ai commencé à utiliser de plus en plus Erlang et, avec l'expérience, j'ai remarqué qu'il me manquait certaines constructions disponibles dans de nombreux autres langages, y compris les fonctionnels. C'est à ce moment-là que j'ai décidé de créer Elixir, dans le but d'apporter différentes constructions et un excellent outillage au-dessus de la VM Erlang.

logo-élixir

Et voici, Élixir est né!

Tout comme Scala améliore le langage Java mais cible la même machine virtuelle en dessous (la JVM), Elixir tire parti de la machine virtuelle Erlang, vieille de plusieurs décennies et éprouvée au combat.

Maintenant, une discussion sur Erlang dépasse le cadre de cet article, mais le minimum que vous devez savoir est que c'est le secret le mieux gardé de l'industrie des télécommunications: si nos réseaux téléphoniques sont beaucoup plus fiables que nos systèmes basés sur le Web, tout cela grâce à Erlang.

En termes encore plus simples, cela signifie ceci. Si vous construisez un système en temps réel comme le chat, Elixir est beaucoup moins gourmand en RAM et stable que Ruby (ou PHP, Python et Java, d'ailleurs).

Une machine qui exécute Ruby et atteint un maximum de 10,000 200,000 connexions simultanées peut facilement gérer 2 XNUMX lors de l'utilisation d'Elixir et avoir encore assez de RAM pour exécuter des jeux XNUMXD !

extrait d'élixir
Extrait de code Elixir

En termes de syntaxe, Elixir copie sans vergogne Ruby, et son framework Web dominant, Phoenix, copie sans vergogne Rails. Je dirais que c'est une bonne chose aussi, car avec Laravel, Grails, Masonite, etc., nous atteignons un point où tous les langages ont des frameworks de type Rails qui peuvent faciliter la transition. Certains pourraient se moquer du "manque d'originalité", mais au moins je ne m'en plains pas.

Enfin, Élixir fait partie de ces technologies rafraîchissantes, agréables et sacrément pratiques. Plusieurs boutiques Ruby (et même non Ruby) déménagent vers Elixir, et de grandes entreprises comme Pinterest l'utilisent en production avec des résultats extrêmement satisfaisants.

Beaucoup de gens pensent que Node.js était une tentative improvisée de concurrence et serait bientôt remplacé par Elixir. Je dois dire que je suis d'accord avec eux. 🙂

4. Kotlin

En 2017 I / O, Google a lancé une bombe sur la foule sans méfiance. La société a officiellement annoncé Kotlin comme langage principal pour le développement Android, envoyant des ondes de choc à travers l'industrie.

Maintenant, que Google cherche activement à remplacer Java n'est pas une surprise après avoir été mordu par un procès Oracle; cependant, l'adoption de Kotlin était quelque peu inattendue, et il y a encore de bonnes chances que Google sortira bientôt sa machine virtuelle. Pour le moment, cependant, Kotlin connaît une poussée.

logo-kotlin-e1540113775298

Kotlin a été développé par JetBrains, une société mieux connue pour sa suite d'éditeurs de code incroyablement bons. L'un d'eux, IntelliJ IDEA, constitue le socle d'Android Studio. Les objectifs de conception de Kotlin sont la sécurité, la concision et une interopérabilité à 100 % avec Java.

Plus que toute autre chose, le compilateur Kotlin travaille très dur pour éliminer toutes les exceptions de pointeur nul qui sont si courantes dans le monde Java. Cela réduit également un peu la verbosité proverbiale de Java, ce qui soulagera beaucoup de gens.

Voici une merveilleuse comparaison de code entre Java et Kotlin:

java-vs-kotlin
Crédit d'image: hype.codes

Le code Kotlin est nettement plus court et a beaucoup moins de surcharge cognitive à parcourir.

Mais soyons clairs: Kotlin est extrêmement peu susceptible de remplacer Java, bien qu'il devienne rapidement un favori rapide. Je pense que dix ans plus tard, les équipes de petite et moyenne taille ne chercheront pas plus loin que Kotlin, tandis que les grands groupes continueront à utiliser Java uniquement pour des raisons d'héritage.

Cela dit, Kotlin a un avenir extrêmement brillant car il fait tout ce que fait Java, peut fusionner avec le code Java sans que personne ne s'en aperçoive, et c'est beaucoup plus agréable!

5. TypeScript

Dieu sait que j'ai dû me retenir pour cet endroit ! Tout en moi criait « Elm ! Elm !", mais peu importe à quel point ses idées sont révolutionnaires ou à quel point la syntaxe est divine, Elm n'est pas encore considéré comme une alternative grand public pour le travail frontal. 🙁 Quoi qu'il en soit, passons à quoi is grand public: TypeScript.

JavaScript est comme les baies sauvages: laid et désagréable, mais vous devez le supporter si vous souhaitez survivre dans la jungle du développement frontal. De nombreuses tentatives ont été faites pour le remplacer (et très probablement, le nouveau standard WebAssembly réussira), mais ce qui a vraiment attiré l'attention de tous, c'est le sur-ensemble développé par Microsoft.

dactylographié-logo-e1540113995242

Il y a d'excellentes chances dont vous avez entendu parler Manuscrit: Angular a été le premier framework à l'adopter à partir de la version 2, et les gens n'ont pas tardé à en prendre note. C'est parce que TypeScript ajoute des super pouvoirs indispensables et fantastiques au langage de programmation le plus célèbre au monde.

Oui, il est enfin possible d'écrire du code JavaScript natif sans souffrir et maudire sa naissance!

Voici les améliorations apportées par TypeScript à la table:

✓ 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 plus ou moins garanti d'être exempt des verrues du runtime JavaScript.

✓ Classes et modules: Oui, les classes sont standard dans ES6, mais elles sont également incluses dans TypeScript, en plus d'un système de modules soigné.

✓ Inférence de type: Pour les types complexes, le type peut être facilement identifié par le compilateur, vous évitant ainsi des maux de tête.

✓ Asynchroniser / attendre: Les mots-clés et modèles async / await sont fondamentaux, donc plus de déconner avec les promesses et les rappels!

Espaces de noms, génériques, tuples. . . Je pourrais continuer encore et encore, mais il devrait suffire de dire que TypeScript convertit l'une des pires expériences de développement en l'une des meilleures.

extrait de texte dactylographié
Extrait de code TypeScript

L'impact de TypeScript est indéniable. Il a poussé des tentatives similaires comme le Dart de Google hors du terrain (bien qu'il tente un retour via Flutter, un cadre de développement mobile), et a ouvert les yeux des développeurs JS sur les avantages de types plus puissants.

En conséquence, des bibliothèques importantes comme React, D3, Vue (même jQuery !) ont maintenant une version TypeScript, et dans les meilleures boutiques de logiciels du monde, toutes Le code JavaScript est écrit en tant que TypeScript code. Les en-têtes TypeScript sont désormais également disponibles pour Node.js (honnêtement, si un nœud peut améliorer son histoire de concurrence et corriger sa mauvaise gestion de la mémoire, il durera éternellement).

Vous pourriez être surpris de savoir que le créateur de Node.js, après avoir publié regrettant sa création, travaille sur un nouveau runtime (il n'y a pas de site Web officiel pour le moment; juste le dépôt GitHub) qui a TypeScript comme langue principale.

La meilleure nouvelle? TypeScript est un petit langue à apprendre avec des avantages considérables à l'avenir. Si vous êtes un développeur JavaScript intermédiaire, vous récupérerez suffisamment de TypeScript en deux jours pour porter tout votre code existant !

Conclusion and disclaimer

Des langues spécifiques gagnent autant en popularité que celles de cet article, mais n'ont pas été incluses dans la liste pour diverses raisons. Voici un aperçu :

  • Golang : Déjà établi comme une langue courante, sinon très populaire. Je crois qu'à ce stade, Golang a plusieurs concurrents qui maintiendront sa part de marché faible.
  • R: R est déjà populaire parmi les data scientists, et il est peu probable qu'il attire beaucoup les développeurs d'applications. En outre, nous ne devons pas oublier que les bibliothèques d'apprentissage automatique font lentement leur chemin dans tous les principaux langages (pour l'amour de Dieu, même PHP les a maintenant!), Donc tout ce que vous avez à faire est d'attendre un certain temps. 🙂
  • Swift : Apple a une emprise de fer sur son écosystème, et Swift est le seul langage disponible là-bas. Auparavant, l'objectif C était à la mode, tout comme Swift l'est maintenant. Je considère que c'est de la triche et je refuse donc de l'inclure ici. 😀

L'avenir est toujours incertain, et une façon de faire votre carrière est de vous en tenir à ce qui fonctionne déjà et de refuser d'être «distrait». Si vous faites cela, Java, PHP, Python, Ruby, etc., sont tous d'excellents langages à suivre. Cependant, pour certains d'entre nous, la norme ne suffit pas. Ils veulent sortir et explorer et parier gros sur l'avenir. Si vous tombez dans ce dernier camp, l'une de ces cinq langues devrait figurer en tête de votre liste de choses à faire.

Enfin, lorsque vous essayez d'évaluer une langue, ne vous laissez pas submerger par l'effort, car ce n'est pas tant que ça. Si vous connaissez déjà quelques langages de programmation, vous pouvez apprendre n'importe lequel d'entre eux en deux mois maximum, en passant 5 à 6 heures par semaine. Alors que le bonheur et les rendements monétaires qui peuvent être générés à l'avenir seront plusieurs fois supérieurs.

Ai-je manqué un langage critique ici? Ou peut-être ai-je un problème avec les langues répertoriées ici? Si oui, merci de laisser un commentaire et de m'aider à m'améliorer. 🙂