Vous êtes ici : Accueil Articles Langages de programmation : Les grandes tendances

Langages de programmation : Les grandes tendances

Nous abordons bientôt l'année 2013, l'occasion de faire le point sur les principaux langages de programmation, leurs évolutions et les grandes tendances qui se dessinent, et de s'intéresser plus particulièrement à Python

Présentation des langages de références

Le langage C est une véritable référence. Il s'agit d'un langage statique, impératif de bas niveau qui est idéal pour de nombreuses problématiques en particulier lorsqu'il s'agit d'accéder à des ressources système ou de gérer des problématiques de performances. Par contre, le développement d'applications en C nécessite une solide expérience et est relativement complexe.

Le langage C++ est également une référence. Il apporte le paradigme objet au langage C et sa dernière mouture y apporte des éléments fonctionnels ce qui en fait un langage statique impératif, fonctionnel et objet de bas niveau. Par rapport au C, il facilite la création de certains types d'application, mais sans rendre le développement forcément plus simple, puisqu'il faut que le développeur maîtrise de nouveaux concepts. Là encore, une solide expérience est nécessaire pour envisager la création d'une application complexe.

Le langage Java est depuis sa naissance, en 1995, soutenu par des piliers du secteurs informatique, dont le regretté Sun, IBM suivis en cela par la plupart des SSII. Java est un langage statique exclusivement objet (avec sa propre vision du paradigme), de haut niveau et qui est idéal pour créer des applications complexes. Un développeur débutant peut aisément contribuer à la création d'application Java, mais il est absolument nécessaire d'avoir recours à des compétences d'architecte lorsque ces applications deviennent importantes.

Tendances

En 2004, Python connaît un regain d'intérêt très net, ce qui lui permet de toucher un public plus large, au moment où les langages C, Java et C++ perdent leur caractère hégémonique, en restant toutefois très largement utilisés.

A ce moment là, il s'agit de Python 2.3. Parmi les langages tenant le haut du pavé en 2004, il s'agit avec PHP du seul langage dynamique. Notons que c'est à cette période que sort PHP 5 qui marque un tournant dans l'histoire de ce langage.

Ce sont les progressions de ces deux langages qui vont équilibrer la balance entre langages statiques et langages dynamiques qui vont rester jusqu'à aujourd'hui respectivement autour des 70% contre 30%.

En cette année, PHP est le langage de l'année pour TIOBE et Python l'est pour les années 2007 (version 2.5) et 2010 (2.7). En effet, ces deux évolutions du langage ont eu des répercussions importantes sur l'adoption de Python.

L'autre axe concerne l'utilisation des paradigmes. Bien que les développeurs avertis ne cessent de dire tout le bien qu'ils pensent du paradigme fonctionnel, celui-ci ne décolle pas vraiment. La référence du domaine, Lisp reste cependant dans le Top 20 (alors qu'il a été dans le top 5). Python est le premier des langages possédant un paradigme fonctionnel complet.

Pour le reste, le paradigme objet est largement sur-représenté par rapport au paradigme procédural (60% contre 40%). Cette tendance est, là encore, une véritable constante depuis quelques années. En effet, si C est le langage numéro 1, les langages objets répandus sont largement plus nombreux, à tel point que la connaissance de ce paradigme est indispensable pour un développeur, ce qui n'est clairement pas le cas du paradigme fonctionnel.

Événements dans l'histoire récente des langages de programmation

Outre l'année 2004 qui marque un regain d'intérêt pour les langages dynamiques et une rupture, on peut relever les tendances suivantes, auprès des développeurs :

le langage C a été (à tort) "ringardisé". Il connaît maintenant un regain d'intérêt qui trouve, entre autres, ses causes dans l'adoption de nouveaux standards et par le fait que la demande pour l'embarqué a énormément progressé et que C reste dans ce domaine une véritable référence, car il résout bien les problématiques liées à l'embarqué.

Le langage Java est en perte de vitesse régulière, ce qui est difficile à expliquer car il est toujours au cœurs de la stratégie des SSII et de nombre d'éditeurs et que l'offre logicielle en Java (en particulier l'offre open-source) explose. Une des cause est que la complexité du langage ne cesse d'augmenter, que ses contraintes sont très fortes et qu'il y a beaucoup de changements qui font qu'il reste difficile de rester bien formé alors qu'en SSII le développeur a tout le temps le nez dans le guidon et ne peut se former que sur son temps personnel. Aujourd'hui, un des axes qui permet à Java de rebondir est le développement sur Android avec le superbe succès (qui semble vouloir s'établir sur le long terme) de cette plate-forme.

Le langage Objective-C a explosé avec la demande de développement pour applications mobiles. Il bénéficie également d'un attrait particulier pour son coté nouveau et tendance, mais sa progression est régulière. Son succès reste conditionné par la part de marché des matériels spécifiques mobiles l'utilisant.

Le langage C++ reste une référence mais a souffert de l'intérêt pour les langages dynamiques. Sa grande complexité et le fait qu'il existe des alternatives sur ses domaines d'application en font un frein à son adoption par les développeurs.

Le langage C# doit son adoption à sa proximité avec le C et le fait qu'il se trouve au centre de la stratégie de Microsoft qui tisse un très large réseau de partenariat. Il se trouve donc en seconde position, derrière java, dans les SSII et chez les éditeurs.

Le langage PHP a connu un regain d'intérêt très fort avec la sortie de PHP 5, mais les tergiversations et les difficultés rencontrées au sein de la communauté, les difficultés à faire évoluer le langage, les différents coups d'arrêts dans les développements des frameworks et le fait que de très nombreuses alternatives de frameworks aient pris le pas dans d'autres langages dont qu'il est depuis 2010 délaissé au profit d'autres technologies. Il reste cependant une valeur sure.

Le langage Visual Basic tire sa force du fait qu'il soit implanté dans beaucoup d'applications. Il est un outil de scripting efficace pour nombre d'applications autres que celles de Microsoft, s'intègre à leur stratégie globale en ce qui concerne le développement des langages de programmation et a l'avantage de pouvoir être utilisé par des non informaticiens.

Jusqu'en 2005, Perl a parfaitement réussi son pari de concurrencer C pour la programmation système. Cependant il est depuis en perte de vitesse ayant lui-même des alternatives nombreuses et efficaces, car il demande beaucoup d'investissement pour être maîtrisé et son domaine d'application usuel reste restreint.

Certains langages, comme le C ont pu être abandonné au profit de technologies qui semblaient plus nouvelles, agréables, originales, séduisantes, plus "hypes" en somme. Ce sont des raisons qui font que Python est découvert et testé. Cependant, au contraire de Python, le soufflet est vite retombé pour ces langages, car ils n'ont pas su passer la barrière consistant à permettre d'être utilisés de manière professionnelle dans divers domaines et en apportant réellement quelque chose. Bien que l'on trouve toujours de nombreuses success stories réalisées avec ces langages, leur adoption reste confidentielle et a souvent demandé de lourds investissements, lesquels ne sont, la plupart du temps non reconduits.

Le point sur Python.

Python fait clairement partie de ces langages que l'on peut souhaiter découvrir pour leur coté "hype". Mais Python n'est pas fait pour être juste beau, il est fait pour être efficace. Pour le développeur qui apprécie le fait de choisir le paradigme qu'il veut utiliser, le fait d'avoir énormément de bibliothèques à disposition, facilement installables et facilement utilisables en font un langage professionnel, précis, facile à utiliser mais très puissant et très souple.

Ce n'est pas le développeur qui se plie au contraintes d'un langage, mais le langage qui permet à chaque développeur de s'exprimer.

Python permet d'utiliser l'objet de manière très simple, sans nécessiter des connaissances étendues, mais il permet également d'aller très loin dans l'application du paradigme et de réaliser des architecture très complexes sans se casser les dents.

Python permet d'utiliser le paradigme impératif et c'est cela que veulent nombre de chercheurs qui souhaitent, par exemple, une alternative libre à MatLab pour pouvoir créer leurs propres bibliothèques sans avoir de restrictions.

Le paradigme objet ne doit pas être rendu obligatoire juste parce que le gourou d'un langage a décidé que c'était la bonne façon de penser.

Python permet d'utiliser le paradigme fonctionnel sans demander au développeur d'être un spécialiste du domaine, mais en rendant la chose évidente, triviale à utiliser et en en faisant une arme d'appoint.

Python permet de toucher énormément de domaines d'application, en partant du Web où nombre de framework séduisent et créent de nouveaux pythonistes, jusqu'au système, à la programmation distribuée à l'aide des nouveaux outils et à la conception d'interface graphique. Aujourd'hui, Python est devenu un pilier des interfaces graphiques pour Linux, une référence pour le web et pour le système.

Python se positionne comme un concurrent de Java, C#, Perl, PHP (puisqu'il permet de faire la même chose qu'eux dans leurs domaines d'application) et même Visual Basic, car il permet déjà de scripter des applications aussi diverses que Gimp, Inkscape, Blender, Scribus, OpenOffice, KOffice, …

Python se positionne comme un langage complémentaire du langage C.

Conclusion

A mon sens, Python a les armes en main pour faire en sorte que la sortie de sa version 3 permette une adoption encore plus étendue. Pour que cela réussisse, il faut réunir plusieurs conditions :

la migration rapide des bibliothèques externes en particulier pour l'accès à des ressources externes comme la connectivité à MySQL ou à LDAP (Python 3.3 devrait faciliter le travail)

Le passage des applications scriptables (comme Gimp, Inkscape, ...) et des frameworks Web vers Python 3, les bibliothèques graphiques ayant déjà quasiment toutes bien avancé le travail

la généralisation des pratiques de Python 3 permettant la performance (générateurs au lieu de compréhensions de listes, ...)

le développement d'un JIT serait un plus essentiel pour mettre Python au niveau de Java à ce niveau là, sachant que dans le domaine de l'algorithmique pure, Python est très élaboré et que le manque d'un JIT ne permet pas de mettre cela en évidence.

une plus grande percée dans les domaines de l'embarquée et du développement mobile permettrait à Python de s'établir définitivement comme le langage multi-domaines d'application

Aujourd'hui, Python est adapté à la demande des développeurs de tout horizons, car il permet de toucher à tous les domaines d'application, dispose d'un ticket d'entrée relativement faible permettant au développeurs débutant d'entrer aisément dans le langage, dispose d'un arsenal de fonctionnalités non contraignantes permettant aux développeurs de tout niveaux de s'exprimer presque sans limites. Il s'agit du langage moderne par excellence, alliant efficacité et efficience, performance et rentabilité. En effet, sa nature dynamique, multi-paradigme et sa très grande bibliothèque lui permettent de faire des applications de qualité dans des temps plus courts que la concurrence.

La longévité du langage alors qu'il n'est pas au centre de la stratégie de grands groupes, de grands éditeurs ou de SSII témoigne du fait qu'il a les reins solides. Le fait qu'il soit de plus en plus adopté et soutenu par des entreprises ayant des problématiques complexes à résoudre (voir la liste des sponsors de PyCON) et que de nombreuses applications de qualité l'utilisent montrent qu'il est clairement un choix d'avenir.

Mots-clés associés : ,

Spinner