D’environ une dizaine au début des années quatre-vingt, les langages informatiques se sont multipliés et leur nombre dépasse aujourd’hui largement la centaine.
Ils font l’objet d’une littérature abondante qui a conquis sa place dans les rayonnages des grandes librairies aux côtés des mathématiques, de la physique, de l’économie, de l’histoire, de la philosophie et des sciences humaines.
Assez régulièrement, ils sont au cœur de débats parfois virulents sur la suprématie de tel ou tel langage, censé reléguer les autres dans la préhistoire.
Soyons clairs, la plupart du temps, ces débats n’intéressent que les informaticiens, et même une toute petite partie d’entre eux.
Mais il arrive aussi que ce débat arrive sur le devant de la scène, parce que les concepts d’un langage semblent susceptibles de changer profondément la manière de programmer et son efficacité, ou parce que l’on prend brusquement conscience qu’un langage est désormais utilisé sur des millions, voire des milliards d’appareils.
L’informatique industrielle est un domaine particulier, avec ses propres contraintes et ses propres exigences. A l’instar de ce qui s’est produit pour les automatismes avec les langages contact (ladder) ou grafcet, on aurait pu penser qu’avec l’explosion des langages informatiques serait apparu un langage métier dédié à ce type d’applications, mais cela n’a pas été le cas. De ce fait, le développement d’applications industrielles s’appuie sur des langages informatiques dits généraux, et l’industriel et l’intégrateur peuvent à juste titre se demander quelle est l’importance du langage utilisé pour le développement et sur quels critères l’apprécier.
Le développement d’une application industrielle en spécifique
En tant qu’éditeurs de logiciels, nous ne saurions que vous déconseiller de développer ou de faire développer votre application de manière spécifique. Nous considérons en effet que notre offre (ou celle de nos confrères) peut vous apporter un grand nombre de fonctions génériques prêtes à l’emploi, testées et validées, qui vous feront gagner un temps précieux dans le développement de votre application. Dans le cas de notre gamme COOX, cette offre s’appuie en outre sur une plateforme logicielle et un modèle de données ouverts, conformes au standard ISA-95, qui permettent d’étendre aisément les fonctionnalités au delà du prêt à l’emploi qui vous est délivré pour s’adapter à vos besoins spécifiques. Mais bien sûr, cet article étant général, nous nous devons de considérer le cas où vous estimez que l’application à réaliser présente trop d’écarts avec une approche MES ou supervision standard (ou que la décision d’un développement spécifique a été prise avant de connaître notre offre !).
Puisque la totalité de l’application industrielle est développée spécifiquement, il s’agit d’un développement informatique à part entière et le premier critère de choix est certainement de disposer d’un environnement de développement solide capable de le supporter et de le maintenir. Le fait de disposer d’un large choix de bibliothèques associés à l’environnement (conception d’IHM, accès aux bases de données, traitements métier, rapports, …) est également un élément important. L’environnement de développement choisi amènera souvent avec lui son langage de prédilection. Les principaux environnements de développements rencontrés sont Visual Studio de Microsoft (C#, C++, Basic), Eclipse (Java, C++, Ruby, Python, …), NetBeans (Java). Aux côtés de ces grands leaders coexistent un grand nombre d’environnements mono ou multi-langages, dont certains sont orientés RAD (Rapid Application Development). Souvent efficaces et séduisants, ces derniers ont généralement des difficultés à présenter une offre pérenne dans le temps.
L’environnement RAD faisant disparaître une grande partie du code du langage sous-jacent, il est alors difficile, voire impossible, de migrer vers un autre environnement de développement. C’est un problème général pour toutes les applications informatiques, mais c’est particulièrement vrai pour les applications industrielles, dont on attend une pérennité importante. L’un des plus solides représentants des environnements RAD a sans doute été l’environnement Delphi. Longtemps porté par Borland, il a été délaissé par son initiateur lors du lancement par Microsoft de l’environnement .NET. Il appartient aujourd’hui à la société Embarcadero, qui en propose de nouvelles versions. Le choix d’un environnement de développement robuste et largement diffusé conditionne non seulement la facilité du développement, mais aussi les facteurs de risques qui lui sont associés : facilité/difficulté de recrutement de développeurs formés, maintien dans le temps des applications, etc.
Utilisation d’un progiciel éditeur
Dans le cas de l’utilisation d’un progiciel éditeur, on pourrait être tenté d’éluder tout simplement la question en disant : « c’est le problème de l’éditeur ». Cela n’est pas tout à fait vrai, et même en fait pas du tout vrai, et ce pour deux raisons.
La première est que pour pouvoir pérenniser et faire évoluer son offre logicielle, l’éditeur doit non seulement continuer d’exister, mais être en mesure au plan technologique de faire évoluer son offre. Le premier point est le plus souvent questionné par l’acquéreur du progiciel, alors que si on y réfléchit bien, il n’est pas aussi impératif que cela (une offre logicielle de valeur trouve généralement un acquéreur pour la pérenniser en cas de difficulté de l’éditeur initial). A l’inverse, on ne compte plus les sociétés de renom, en parfaite santé financière, qui abandonnent purement et simplement une offre logicielle, et en lancent une autre fonctionnellement équivalente, mais sans solution de continuité avec la première. On avance alors généralement des motifs mercantiles, visant à forcer un renouvellement du parc et donc de nouvelles ventes plus lucratives que des mises à jour, ou des critères de rentabilité. C’est peut-être en partie vrai, mais l’incapacité (ou la grande difficulté) à prendre en compte de nouvelles technologies (64 bits, internet, déploiement sur mobiles, …) avec le langage de développement choisi est souvent la cause première de ces remises en cause.
La seconde raison est qu’en plus du langage informatique utilisé pour développer son logiciel, l’éditeur propose généralement un langage, souvent différent du premier et appelé langage de « scripting » destiné à personnaliser ou à étendre le progiciel fourni pour adapter l’application aux besoins des utilisateurs. Destiné à être utilisé par l’intégrateur, et parfois l’utilisateur lui-même, ce langage a vocation à être simple d’usage et introduisant peu de contraintes. Ces critères privilégient des langages interprétés (ne nécessitant pas d’étapes de compilation et d’édition de liens, et éventuellement modifiables en exploitation) et faiblement typés (ne nécessitant pas de déclarations préalables des variables qui alourdissent l’écriture). En revanche, au delà de ces critères très factuels, on surestime généralement la difficulté qui serait propre à un langage, ou la difficulté de passage d’un langage à un autre, en particulier au niveau de la syntaxe. Même si la manipulation de concepts plus puissants nécessitera une connaissance des langages plus approfondie, les structures de programmation les plus courantes (if then else, boucle for, …) sont en effet très semblables pour l’ensemble des langages actuels (du Basic à C# en passant pas Pascal, C++, Java et JavaScript) et le temps d’assimilation de la syntaxe d’un autre langage est inférieur à quelques jours. Mieux encore, pour les structures courantes de programmation, les langages C, C++, C#, Java et JavaScript ont adopté exactement la même syntaxe !
Dans les projets de MES, et même parfois les projets de supervision, les parties développées dans ce second langage sont souvent significatives, et là encore, la facilité de recrutement (aujourd’hui et à terme) de ressources pour la programmation et la pérennité du langage proposé sont essentiels. Evidemment, le cas le plus défavorable est celui d’un langage propriétaire de l’éditeur, qui nécessite une formation spécifique et ne peut être pérennisé et enrichi que par un seul acteur, ce qui limite grandement ses capacités d’évolution (le maintien et l’évolution d’un langage de programmation est une tâche considérable, nécessitant à elle seule une équipe conséquente de développeurs).
Quels bons langages pour un progiciel industriel?
Pour le langage de réalisation du progiciel lui-même, un langage robuste, d’une grande pérennité s’impose naturellement. Même si des langages historiques comme le C peuvent être utilisés, il semble difficile aujourd’hui d’ignorer l’apport en productivité et en évolutivité des langages objets comme C++, Java ou C#. La pérennité et la diffusion du langage choisi sont des éléments importants pour l’éditeur qui devra maintenir et faire évoluer son offre dans le temps.
Pour le langage d’extension des applications par programmation, le choix d’un langage utilisé historiquement dans les installations peut apparaître comme une solution raisonnable, à condition d’éviter des langages propriétaires qui nécessiteront une formation spécifique des intégrateurs. Toutefois le choix d’un langage ancien risque de poser le même problème de ressources chez les intégrateurs dès lors que sa diffusion va diminuer. De plus, les langages plus récents comme Java n’ont pas été lancés sans raison, ils répondent aux exigences de sécurité, de déploiement des installations, d’accès aisé au travers des dispositifs web auxquelles il est très difficile de répondre avec les langages des générations précédentes. Associés à des environnements de développement modernes, ils permettent également une plus grande productivité de développement.
Quels sont les langages des plus diffusés?
Comme nous l’avons vu précédemment, les langages utilisés pour le développement du progiciel MES ou SCADA et pour son extension sont essentiels pour la pérennisation et l’évolutivité des applications. La remise en cause du choix du langage dans les applications informatiques étant très lourde, les langages les plus largement diffusés, en particulier pour les applications d’infrastructure, sont ceux pour lesquels les efforts de la communauté informatique pour les pérenniser et les faire évoluer seront certainement les plus constants. Connaître l’utilisation réelle de chacun des langages dans les applications n’est toutefois pas chosée aisée. Il n’existe pas d’enregistrement centralisé qui permettrait de déclarer qu’une application est développée avec un langage donné. L’usage des langages les plus courants n’étant généralement pas soumis à redevance, on ne peut pas partir non plus de chiffres de ventes pour l'estimer.
La société TIOBE Software a eu une idée originale pour mesurer, non pas directement la diffusion d’un langage dans les applications, mais sa diffusion sur le web, mesuré sur la base des citations de ce langage sur l’ensemble des pages. Une grande partie des pages sont des pages d’offre ou de recherche d’emploi, une autre grande partie est constituée des articles de presse et échanges techniques sur un langage donné. Au total, on peut considérer que la répartition obtenue est significative de l’activité autour de chacun des langages, et donc in fine de son utilisation dans les applications. Très reconnu, l’indice TIOBE est entretenu depuis 2002. Le tableau ci-dessus donne les dix premiers langages du classement TIOBE en juillet 2015, avec une comparaison des positions des langages un an auparavant.
Les choix d’ORDINAL Software pour sa gamme COOX
Pour son développement et ses extensions, COOX s’appuie sur deux langages très complémentaires, le Java et le JavaScript. Très rigoureux et référence des langages objets, Java dote la plateforme COOX d’une architecture logicielle solide, pensée pour l’Intranet et le déploiement sans installation des clients. La plateforme COOX permet de bénéficier de toutes les capacités de la plateforme Java, et même d’utiliser d’autres langages comme JRuby (implémentation en Java du langage Ruby) et JPython (implémentation en Java du langage Python, utilisée par notre client SOLEIL SYNCHROTRON). Le JavaScript, quant à lui, compagnon fidèle de toutes les pages HTML du web, est un langage très souple, facile à apprendre, et moins exigeant vis à vis du développeur. Il permet en outre de faire des modifications « à la volée », sans recompilation et donc sans nécessiter d’arrêter les applications. Ayant pressenti le potentiel de ces deux langages, ORDINAL Software les a choisis en 2000 lors du lancement des développements de sa plateforme COOX. Ces choix ont été confirmés par l’évolution de la diffusion des des langages informatiques ces dernières années. C’est une sécurité et une pérennité supplémentaire pour les industriels.