Articles

Désespéré en informatique ? Trouvez quel langage apprendre.

Il existe plus de 700 langages de programmation ! Lesquels apprendre ?

Par Denys Lamontagne , le 05 mai 2014 | Dernière mise à jour de l'article le 06 mai 2014

Interplay - agsandrew - ShutterStock

Il existe plus de 700 langages de programmation !

Vous connaissez les noms de certains classiques comme l’ASP, le Basic, le C, C++, Cobol, Fortran, Pascal, ou des plus récents comme le Delphi, Java, PHP, Perl, Python, Ruby, XHTML, .NET et leurs différentes variantes; mais à la vue de centaines d’autres langages on se demande pourquoi on besoin de toute cette variété et surtout pourquoi on doit utiliser plusieurs langages sur une même machine…

En fait, dans la poursuite d’une optimisation toujours plus poussée, chaque langage évolue au contact des tâches à effectuer et des impératifs technologiques comme la gestion de la mémoire, les vitesses de flux, les périphériques de saisie et de sortie, le couplage et la collaboration de différentes machines, etc.

Ainsi, quand une limite apparaît, comme celle de l’allocation de la mémoire disponible, on cherche à mieux la gérer et la solution la plus facile ne s’avère pas aussi efficace qu’une autre logiquement plus élaborée.  Ainsi on cherche à contourner le problème ou à profiter des nouvelles possibilités offertes par le nombre, la communication, la vitesse… et on crée un nouveau langage, une évolution du langage ou, plus fondamentalement, de nouvelles façons de programmer.

Cinq grandes familles

Il existe cinq grandes catégories de langages informatiques : Impératifs, Fonctionnels, Déclaratifs, Concurrents et Orientés objets.  Il en existe plusieurs autres (logiques, orientés aspect, par contrat, par intention, parallèles, procéduraux…) qui sont plus floues et font référence à des architectures ou des méthodes de travail. Voici une courte synthèse des ressources trouvées sur le portail informatique de Wikipédia.

Langages Impératifs
 
Décrivent les opérations en termes de séquences d'instructions exécutées par l'ordinateur. C’est le type le plus populaire parmi les langages de programmation.  Une recette de cuisine est une bonne analogie du langage impératif.

Deux variantes :

  • Programmation structurée, vise à structurer les programmes pour en supprimer les instructions «goto» (les sauts) et ainsi les rendre faciles à suivre et à déboguer.
  • Programmation procédurale, où n'importe quelle procédure peut être appelée à n'importe quelle étape de l'exécution du programme, y compris à l'intérieur d'autres procédures. La possibilité de réutiliser le même code à différents emplacements dans le programme sans avoir à le réécrire réduit drastiquement la longueur des programmes.  Mais à ces avantages s’opposent l’augmentation rapide des possibilités d’erreurs et d’incohérences.

Quelques langages impératifs : ASP · Assembleur · BASIC · C · COBOL · Fortran · Limbo · Pascal · Perl · PHP…

Langages fonctionnels
    
Considèrent le calcul en tant qu'évaluation de fonctions mathématiques et rejettent le changement d'état des données. Ils interdisent toute opération d’affectation (assignment) : une variable ne peut plus être modifiée à la base. Ainsi une même donnée utilisée à différents endroits ne risque pas d’être modifiée ailleurs et de faire s’effondrer tout le programme.

Un code en langage fonctionnel est beaucoup plus robuste et plus facile à maintenir.  Le langage fonctionnel fait appel à une autre logique de programmation, est plus récent et de ce fait est moins connu, moins enseigné et moins étoffé.

Quelques langages fonctionnels : Haskell · Lisp / Common Lisp · ML / OCaml / F# · Opa · Scheme · XSLT

Langages déclaratifs     

Créent des applications sur la base de composants logiciels indépendants du contexte. L'appel d'un de ces composants avec les mêmes arguments produit exactement le même résultat, quel que soit le moment et le contexte de l’appel. Par exemple, le HTML dit quoi afficher, mais pas comment. Pour le «comment», on se sert du CSS et du PHP.

Quelques langages déclaratifs : Clips · Prolog - HTML, XML ou LaTeX

Langages concurrents

De loin la forme la plus complexe, ces langages travaillent avec des piles qui peuvent être appelées threads, processus ou tâches selon qu’elles disposent d’une zone de mémoire partagée ou isolée. On s’en sert pour écrire des programmes interagissant avec le monde réel (qui est concurrent) ou tirant parti de multiples unités centrales (couplées, comme dans un système multiprocesseurs, ou distribuées comme dans les grappes d’ordinateurs).

Leur qualité est que l’ordre d’exécution des ensembles de commandes est indéterminé et peut-être exploité avantageusement. Mais cette indétermination peut aussi amener des incohérences fatales, comme d’attendre indéfiniment une réponse qui ne viendra jamais.  Ces langages sont évidemment très sophistiqués et nécessitent de hauts niveaux d’abstraction pour en arriver à synchroniser tout le monde.

Quelques langages concurrents : Ada · Erlang. En fait, la plupart des langages peuvent être mis en concurrence, par exemple, Prolog devient Concurrent Prolog.

Langages orientés objet     

Consistent en la définition et l'interaction de briques logicielles appelées objets. Un objet possède une structure interne et un comportement, et il sait interagir avec ses pairs. Il s'agit donc de représenter ces objets et leurs relations ; l'interaction entre les objets via leurs relations permet de concevoir et réaliser les fonctionnalités attendues. Ces langages facilitent beaucoup la conception, la maintenance, et la productivité.

Il existe actuellement trois catégories de langages à objets :

  • Langages à classes
    Une classe déclare des propriétés communes à un ensemble d’objets
  • Langages à prototypes,
    Un prototype est un objet à partir duquel on crée de nouveaux objets.
  • Langages à composants
    Un composant regroupe un certain nombre de fonctionnalités qui peuvent être appelées depuis un programme externe. Un composant est censé fournir un service bien précis

Quelques langages orientés objet : ActionScript · AppleScript · C++ · C# · D · Delphi · Java · JavaScript · Logo · PHP · Python · Ruby · Visual Basic…

Bon, vous n’êtes peut-être pas beaucoup plus avancé, mais au moins vous saurez comment interpréter  le programmeur qui vous parlera de programmation concurrente ou qui vous dit qu’un langage fonctionnel est approprié en robotique industrielle.

Mais quel langage apprendre ?

Les langages informatiques sont des constructions utilisées par des gens, ils évoluent constamment au gré des technologies et des modes.  Le langage populaire il y a 20, comme l'ASP, est maintenant pratiquement disparu. D'autres tiennent le coup et demeurent des références évoluant avec les développements.

Voici le palmarès Tiobe des langages informatiques les plus stables. Si vous maîtrisez les principaux, vous ne manquerez pas d'ouvrage avant plusieurs années... Avec le C, le Java et le PHP, vous êtes dans le standard, mais serez en très forte concurrence.

Avec des langages fonctionnels, comme LISP, vous risquez d'être en demande, mais dans des niches, et avec l'arrivée des robots sur le marché public, la situation peut encore changer rapidement.

Langage201420092004199919941989
C 1 2 2 1 1 1
Java 2 1 1 14 - -
Objective-C 3 38 47 - - -
C++ 4 3 3 2 2 3
C# 5 7 8 26 - -
PHP 6 5 6 - - -
(Visual) Basic 7 4 5 3 3 7
Python 8 6 10 30 22 -
JavaScript 9 9 9 19 - -
Transact-SQL 10 29 - - - -
Lisp 14 20 15 16 6 2

Références

Avez-vous apprécié cette page?

Voir plus d'articles de cet auteur

Accédez à des services exclusifs gratuitement

Inscrivez-vous et recevez des infolettres sur :

De plus, indexez vos ressources préférées dans vos propres dossiers et retrouvez votre historique de consultation.

M’abonner
Je suis déja abonné