Pour nous, dans le monde de la programmation, nous avons maintenant atteint un tournant. Il y a dix ans, les programmeurs se tournaient en masse vers les langages dynamiques. Pour la plupart d'entre nous, les langages dynamiques ne rendaient pas seulement la programmation plus facile, ils représentaient aussi une tendance. Aujourd'hui, les langages dynamiques ne bénéficient plus d'une faveur particulière. Les programmeurs utilisent désormais un mélange de langages anciens et nouveaux pour développer des projets. Je ne peux pas m'empêcher de demander : pour rester compétitifs, quels langages de programmation les programmeurs ont-ils le plus besoin de maîtriser pour de bon ?
Avant de discuter des langages de programmation qui seront populaires à l'avenir, examinons d'abord les similitudes et les différences entre les langages de programmation.
Langages statiques vs. langages dynamiques
Lorsque nous parlons de langages dynamiques, le terme « dynamique » fait en réalité référence aux types de variables. Lorsque vous écrivez un programme dans un langage dynamique, vous pouvez déclarer une variable puis changer son type pendant l'exécution du programme. Le contraire des langages dynamiques, ce sont les langages statiques, aussi appelés langages fortement typés. Par exemple, C++ et Java sont des langages fortement typés, tandis que JavaScript, PHP et Perl sont des langages à typage dynamique.
En C++, vous devez spécifier le type d'une variable lorsque vous la déclarez. Pendant l'exécution du programme, si vous essayez de changer le type de la variable, le compilateur signalera une erreur. Il en va de même en Java.

Mais JavaScript est différent. Dans un programme JavaScript, le type d'une variable peut être modifié pendant l'exécution. En fait, lorsque vous déclarez une variable, vous n'avez pas besoin de spécifier son type. Lorsque vous utilisez une variable, vous pouvez d'abord lui affecter un entier, puis remplacer cet entier par une chaîne de caractères. Tout cela est autorisé dans les langages à typage dynamique.
Bien que les langages dynamiques ne soient devenus populaires que récemment, le concept a en fait été proposé il y a 50 ans.
Langages fonctionnels
Parallèlement au développement des langages dynamiques, l'intérêt des gens pour les langages fonctionnels a également grandi. Dans les langages fonctionnels, les fonctions elles-mêmes peuvent être stockées dans des variables, et les fonctions stockées dans des variables peuvent être passées comme arguments à d'autres fonctions. La plupart des langages actuels prennent en charge la programmation fonctionnelle dans une certaine mesure. Par exemple, C++ permet aux programmeurs de passer des pointeurs de fonction. Des langages comme JavaScript rendent le passage de fonctions encore plus facile. Par conséquent, C++ n'est généralement pas considéré comme un véritable langage fonctionnel, tandis que JavaScript est considéré comme un langage fonctionnel, et Haskell est généralement considéré comme un excellent exemple de langage fonctionnel.
Mécanisme de ramasse-miettes
En théorie, tant que vous écrivez le code correctement, vous n'aurez aucun bug. Cela semble bien. Mais en réalité, lorsque vous travaillez avec de nombreux autres programmeurs sur un grand projet, il y a un bug qui apparaît souvent : les fuites de mémoire. Vous définissez une variable, mais après l'avoir utilisée, vous ne récupérez pas cette mémoire à temps. C'est ce qu'on appelle une fuite de mémoire. Si une fuite de mémoire se produit et n'est pas détectée à temps, à mesure que le programme s'exécute plus longtemps, il grossit jusqu'à consommer toute la mémoire du système, puis le système plante. Cela semble terrible !

Vous pourriez dire que si vous libérez la mémoire rapidement après chaque utilisation d'une variable, les fuites de mémoire ne seront-elles pas évitées ? L'idée est bonne, mais la situation réelle peut être bien plus compliquée. Par exemple, vous créez une liste chaînée pour stocker des données, et cette liste chaînée est passée à une autre fonction écrite par quelqu'un d'autre. Dans cette fonction, la liste chaînée est copiée, mais vous ne le savez pas. Devez-vous supprimer la liste chaînée ou la conserver ? Face à ce genre de situation, les programmeurs ont imaginé une solution de contournement : confier la récupération de la mémoire au système. Lorsque vous n'utilisez plus une variable, le système analyse la mémoire pour trouver celle qui n'est plus utilisée, puis la récupère activement. C'est ce qu'on appelle un mécanisme de ramasse-miettes. Pour les langages récemment développés, c'est une fonctionnalité très importante. L'idée derrière le ramasse-miettes est de rendre la programmation plus facile, permettant aux programmeurs de se concentrer sur la création de logiciels de qualité.
Il convient de noter qu'il existe effectivement plusieurs mécanismes de ramasse-miettes différents : l'un consiste pour le système à analyser périodiquement la mémoire et à trouver la mémoire qui n'est plus utilisée ; l'autre consiste pour le système à tenir un comptage pour chaque variable et, dès qu'il constate que la variable n'est plus utilisée, à la supprimer immédiatement. Techniquement, ce dernier n'est pas un mécanisme de ramasse-miettes, mais plutôt un « comptage de références ». Cependant, l'effet obtenu est le même.
Machines virtuelles

Lorsque Java a fait son apparition au milieu des années 1990, les gens étaient contrariés par le fait qu'il ne compilait pas directement le code en langage assembleur. Contrairement au C++, Java compile d'abord le programme en un code intermédiaire appelé bytecode. À l'exécution, le système fait appel à une machine virtuelle pour exécuter le bytecode, et parfois même compile le bytecode en code assembleur. Lorsque cette approche de compilation est apparue, les programmeurs se plaignaient de sa vitesse, mais bien sûr ce n'est plus un problème aujourd'hui. De nombreux langages s'exécutent sur des machines virtuelles, comme Java et C# mentionnés précédemment. Les langages de ce type ont désormais fait de grands progrès en matière de vitesse.
Langages
Après tout cela, quels langages les programmeurs devraient-ils réellement apprendre ? Voici cinq langages qui seront très demandés dans les emplois futurs. En outre, j'ai ajouté un sixième langage en tant que « mention honorable ».

JavaScript, HTML5 et CSS3:
Techniquement parlant, HTML5 n'est pas un langage mais une technologie. Associée à CSS3 et JavaScript, cette technologie vous permet de créer des applications web. Vous pouvez créer des logiciels qui s'exécutent dans un navigateur. L'avantage est que les applications que vous créez auront une portabilité sans précédent — elles peuvent fonctionner sur presque tous les appareils, y compris les téléphones. Il y a quelques années, Facebook a commencé à utiliser HTML5 pour créer ses applications mobiles. Ils étaient en avance sur leur temps ; HTML5 n'était pas mature à l'époque. Au bout d'un moment, ils sont revenus au modèle traditionnel. Au cours des deux dernières années, les navigateurs ont commencé à implémenter les meilleures technologies HTML5, et la demande pour JavaScript a augmenté en conséquence. Si vous voulez rester compétitif, c'est une technologie que vous devez apprendre. (Côté serveur, de nombreuses grandes entreprises utilisent JavaScript sous la forme de Node.js.)
Exemple JavaScript :
L'exemple suivant montre comment JavaScript stocke une fonction dans une variable puis la passe à une autre fonction. Pour apprendre JavaScript, voir :Tutoriel JavaScript。
var myfunc = function() {
alert('hi');
};
setTimeout(myfunc, 2000);
C#:
Il y a quinze ans, Microsoft a créé C#, et depuis, C# n'a cessé de croître et de prospérer. La syntaxe de C# est similaire à celle de Java (et aussi à celle de C++). Visual Studio est le logiciel privilégié pour la programmation en C# ; il est disponible en versions gratuite et payante.
C# est un langage fortement typé avec une machine virtuelle. La version initiale offrait très peu de prise en charge de la programmation fonctionnelle. Vers 2006, Microsoft a ajouté certaines fonctionnalités de programmation fonctionnelle au langage. Comme Java, C# dispose également de son propre mécanisme de ramasse-miettes.
Exemple C# :
L'exemple définit une classe appelée Program, qui contient une fonction appelée Main. Le programme commence à s'exécuter à partir de la fonction Main. La fonction Main définit une variable entière fortement typée x et affiche la valeur de x à l'écran. Pour apprendre C#, voir :Tutoriel C#。
using System;
class Program
{
static void Main()
{
int x = 1000;
Console.WriteLine(x);
}
}
Java :
Java s'apprête à fêter son 20e anniversaire. Aujourd'hui encore, Java continue de se développer et de mûrir. En 2004, un collègue à moi a dit que c'était un « langage jouet ». Après avoir connu ses douleurs de croissance initiales, Java n'est plus un langage jouet : il prend en charge d'innombrables sites web et bases de données, et des suites bureautiques open source ont également été développées en Java. Avec le recul, l'avenir de Java est encore prometteur.
Java est un langage fortement typé qui s'exécute sur une machine virtuelle avec un mécanisme de ramasse-miettes intégré. Bien qu'il ne s'agisse pas d'un langage fonctionnel, il possède certaines fonctionnalités de programmation fonctionnelle.
Exemple Java :
Java et C# se ressemblent à bien des égards. Dans un programme Java, l'exécution commence à partir de la fonction main. Comme dans l'exemple C# ci-dessus, la fonction main définit une variable entière fortement typée x et affiche la valeur de x à l'écran. Pour apprendre Java, voir :Tutoriel Java。
public class HelloWorld
{
public static void main(String[] args) {
int x = 1000;|
System.out.println(x);
}
}
PHP :
PHP est un langage de programmation polyvalent facile à utiliser. Sa syntaxe est similaire à celle de Java et C++. À un niveau très simple, PHP sert à intégrer du contenu textuel modifiable dans des pages web. Par exemple, vous pouvez avoir du code PHP dans votre page web qui affiche la date du jour. Lorsque le code de la page web est envoyé au navigateur, le code PHP correspondant affiche la date du jour à l'écran. PHP peut faire bien plus qu'afficher des dates sur des pages web. Les bibliothèques de classes de PHP peuvent manipuler des bases de données (presque n'importe quelle base de données imaginable), effectuer des calculs scientifiques et traiter du texte. L'avenir de PHP reste prometteur.
Exemple PHP :
Le code PHP est intégré dans un document HTML. Ce code PHP définit le fuseau horaire sur Los Angeles, puis affiche l'heure actuelle. Lorsque le navigateur analyse le document HTML, la partie du code PHP est remplacée par la sortie de ce code. Ainsi, ce qui est finalement affiché à l'écran est « Bonjour ! L'heure actuelle est », suivi de l'heure actuelle. Pour apprendre PHP, voir :Tutoriel PHP。
<html>
<body>
Hello! The current time is
<?php
date_default_timezone_set('America/Los_Angeles');
echo (strftime('%c'));
?>
</body>
</html>
Swift :
C'est un tout nouveau langage créé par Apple. D'une manière générale, je ne recommanderais pas aux gens d'apprendre un tout nouveau langage. Mais gardez à l'esprit qu'il s'agit d'Apple, et que vous pouvez déjà utiliser ce tout nouveau langage pour créer des applications iOS. En fait, il y a déjà des signes indiquant que Swift deviendra l'avenir de la programmation iOS. La syntaxe de Swift est très similaire à JavaScript, mais sans points-virgules ni parenthèses.

Swift est un langage fortement typé qui s'exécute sur une machine virtuelle avec un mécanisme de ramasse-miettes.
Exemple Swift :
L'exemple définit une variable appelée str qui stocke une chaîne de caractères. Bien que le type de str ne soit pas explicitement indiqué, Swift est fortement typé, et le compilateur détermine que str est de type chaîne en se fondant sur la chaîne située à droite de l'instruction d'affectation. Pour apprendre Swift, voir :Tutoriel Swift pour débutants。
var str = "Hello, World!" println (str)
Erlang :
Erlang est un langage de programmation inventé par des ingénieurs d'Ericsson en 1986. À l'origine, un langage conçu spécifiquement pour le domaine des télécommunications, il est aujourd'hui devenu un langage de programmation généraliste et prospère dans le cloud et le calcul parallèle haute performance. On utilise désormais Erlang pour construire des logiciels puissants tels que CouchDB et Riak. C'est un langage singulier, avec une façon très inhabituelle de gérer les chaînes de caractères, mais il est aussi facile à apprendre.
Faut-il apprendre Erlang ? Bien qu'il n'y ait pas beaucoup d'emplois exigeant Erlang, si vous maîtrisez vraiment le langage, vous décrocherez probablement un excellent emploi. C'est un compromis. Avant de vraiment maîtriser le langage, vous devez investir beaucoup d'efforts, mais une fois que vous réussissez, les récompenses sont également élevées.
Exemples Erlang :
Voici une version complexe de l'exemple « hello world ». Rappelez-vous, Erlang est un langage mature. Si vous avez vraiment l'intention de l'apprendre, veuillez visiter :http://learnyousomeerlang.com。
-module(hello).
-export([start/0]).
start() ->
spawn(fun() -> loop() end).
loop() ->
receive
hello ->
io:format("Hello, World!~n"),
loop();
goodbye ->
ok
Réflexions finales
Les programmeurs peuvent certainement trouver un emploi n'importe où, mais pas nécessairement à un poste que vous aimez particulièrement. L'essentiel est d'apprendre des technologies vraiment utiles et de trouver ce bon emploi qui vous appartient. Apprendre JavaScript, C#, Java, PHP ou C++ ne sera pas une erreur. Si vous commencez à apprendre Swift, les perspectives d'emploi futures sont excellentes. Si vous voulez vous essayer à la programmation haute performance, jetez un œil à Erlang, même si les emplois exigeant Erlang peuvent ne pas apparaître tout de suite. Quel que soit le langage auquel vous vous consacrez actuellement, vous devez l'apprendre concrètement et le maîtriser ; c'est là la clé.
(Source anglaise :News.Dice, traducteur : moqiguzhu)