Java un langage complexe ?

Plus de 10 années se sont écoulées depuis ce janvier 1998 où par un concours de circonstance je me retrouvais à devoir apprendre un langage à la mode pour mon mémoire de Maîtrise. Java s’avéra par la suite être le langage de programmation unique de ma carrière professionnelle. A l’étude de ce langage je fus très surpris par son efficace simplicité. La structure du langage permet à un néophyte d’écrire un code robuste tout en autorisant les plus chevronné à écrire du code plus sophistiqués mais uniquement sur les bases simples du langage qui sont les suivantes:

  • une syntaxe simple sans les signes cabalistiques du macro-assembleur C
  • une éviction de la notion d’adressage
  • polymorphisme automatique
  • héritage simple
  • notion d’interface

Qu’en est-il aujourd’hui ? Le langage a subtilement évolué: les assertions sont apparues, les types génériques ont franchis la barrières des langages en passant de la forme de template C++ au Java, des simplification de syntaxes de boucle sont désormais accessibles…mais nous assistons bel et bien a une complexification du langage.

En effet le néophyte se retrouve maintenant confronté à des notions complexes qui vont au delà d’une syntaxe plus complexe. Les génériques qui a première vue viennent d’une intention louable d’avoir des listes typées, ont un revers de médailles plus inquiétant: utilisés dans les types de retours et de paramètres en combinaison avec les notions d’héritages de type générique, nous arrivons à une réelle complexité de la syntaxe qui me rappelle la complexité de celle relative à l’adressage en C++. Les notions sont elles aussi devenues plus complexes. En effet les dernières version ajoute la notion de covariant dans la signature des méthodes ainsi que les listes d’arguments de taille variable. La maîtrise de ces notions demande une réelle compréhension de leur interprétation par la JVM, un peu à la manière du programmeur C qui doit comprendre la syntaxe par la manière dont le compilateur va le traduire en assembleur.

Mon sentiment est que le langage se complexifie or mon expérience m’a montré que beaucoup de programmeurs ne maitrisent pas les notoins de base du langage. L’avenir est donc prometteur pour les profils experts en Java, comme il l’a été il y a quelques années pour les profils experts en C++.

Cet article, publié dans Langage, est tagué . Ajoutez ce permalien à vos favoris.