Cobra : un assortiment technique assumé

Iane
ELP-2018
Published in
4 min readMay 22, 2018

Chez les serpents, le python est bien plus imposant que le cobra de par sa taille. Il en existe même certains pouvant atteindre jusqu’à 10 mètres de long.

Détrompez-vous, cet article ne parle pas des différentes espèces de serpents mais bien de langages de programmation. Il est juste intéressant de constater que comme le serpent, la communauté derrière le langage Python est immense, surtout en comparaison avec celle de Cobra. Vous n’avez d’ailleurs peut être jamais entendu parler de ce langage. Alors continuez à me lire, vous ne serez pas déçus.

J’ai l’immense plaisir de vous présenter une petite pépite conçue par Charles Esterbrook circa 2008. Pourquoi ce langage a-t-il vu le jour ? Disons que M. Esterbrook n’aime pas les compromis. Quand on choisit un langage pour une caractéristique particulière, on renonce forcément à certains avantages que présentent d’autres langages, ce qui peut être frustrant. Or Charles n’a pas envie de choisir entre l’expressivité et la rapidité de codage de Python, la programmation par contrats d’Eiffel, le typage à la fois statique et dynamique d’Objective-C et la performance d’exécution de C#. Aucune de ces propriétés n’étant en soit incompatibles, il crée Cobra : ce langage impératif de haut niveau et orienté objet est inspiré de plusieurs langages, combinant ainsi leurs avantages. Ce qui est innovant avec Cobra, ce n’est pas telle ou telle fonctionnalité qu’il propose, mais leur combinaison dans un seul langage.

Des propriétés intéressantes

La syntaxe de Cobra est directement inspirée de celle de Python. Elle en est de fait très semblable : pour illustrer, voici l’éternel exemple Hello-world.

On remarque que comme dans Python, c’est l’indentation qui gère les délimitations des classes et fonctions. Cependant Cobra possède des propriétés que Python n’a pas.

En effet, contrairement à Python, Cobra permet la programmation par contrats. Un contrat permet, à l’aide d’assertions, de vérifier l’état du programme à différentes étapes de son exécution. Ces assertions sont des conditions que l’on pose sur l’entrée et la sortie d’une fonction. Cela permet de repérer d’éventuelles erreurs à la compilation. La notion de contrats a été instaurée dans le langage Eiffel. Cependant certains langages n’ont pas vraiment besoin de contrats, du fait de leur typage assez restrictif qui inclue les contraintes dans le type. De ce fait, qu’en est-il de Cobra ?

Pour le typage, Charles s’est cette fois inspiré d’Objective-C. Encore un avantage de Cobra : pas besoin de choisir entre typage statique ou dynamique, puisque le langage propose les deux possibilités. Alors que le typage statique force à attribuer un type à une variable dès son initialisation, le typage dynamique permet de typer au besoin pendant l’exécution du programme. Les typages dynamiques comme statiques ont leurs avantages et inconvénients : le premier est peu flexible mais permet d’éviter toute incohérence de type en les signalant à la compilation, le second permet plus de souplesse et de rapidité de programmation mais ne fait rien pour prévenir les éventuelles erreurs à l’exécution.

Maintenant que vous connaissez un peu Cobra, je suis sûre qu’il reste une question que vous vous posez : avec toutes ces propriétés combinées, comment se fait-il que Cobra soit aussi peu connu et utilisé ?

Un souci de plate-forme ?

Un des problèmes principaux de Cobra réside dans son environnement d’exécution ou runtime, c’est-à-dire le logiciel qui va permettre d’exécuter vos programmes Cobra. En effet, il utilise .NET, un écosystème Microsoft qui comprend une immense bibliothèque et un environnement d’exécution. Si avoir la librairie .NET est un avantage, le fait d’être restreint au runtime .NET va freiner les utilisateurs qui n’ont pas l’habitude de l’utiliser : il s’agit d’une dépendance assez importante et certaines personnes préfèrent ne pas s’en encombrer. Sur le site de Cobra, Charles explique :

Je pense que le problème essentiel est que les utilisateurs de .NET ne vont pas utiliser un langage qui n’est pas Microsoft, et que ceux qui ne sont pas déjà sur .NET ne vont pas naturellement l’utiliser. On m’a dit tellement de fois que “Cobra a l’air génial ; dommage qu’il soit sur .NET”

Malgré tout, le concept de Cobra est trop intéressant pour passer à la trappe. C’est un langage qu’il est enrichissant d’étudier et d’essayer, et que je vous invite à découvrir. La communauté est peu développée et assez inactive, mais le créateur est toujours présent pour répondre aux questions posées sur le forum du langage.

Pas besoin d’être fourchelang pour parler le Cobra !

Sources :

--

--