À la découverte de PIKE

Claire Laverne
ELP-2018
Published in
4 min readJun 1, 2018

Bonjour Pike, qui es-tu ?

Je suis un langage de programmation peu connu et pourtant je mériterais de l’être. Vous me trouvez surement prétentieux mais je vais vous expliquer. Tout d’abord, ma syntaxe proche de celle du C ne vous demande pas beaucoup d’adaptation, un bon point, non ? Ensuite, je suis un langage de haut de niveau interprété, c’est-à-dire que je suis multiplateforme grâce à un interpréteur, comme Python. Ce n’est donc pas à vous de vous fatiguer pour que les programmes que vous écrivez tournent sur différents OS. De plus, mes concepteurs, je vous parlerai d’eux plus tard, ont souhaité que je sois dynamique. On utilise ce terme pour décrire un langage haut niveau qui exécute certaines actions au moment de l’exécution tandis que d’autres langages ne peuvent les exécuter que durant la compilation. Mon typage aussi peut être dynamique, mais ce n’est pas obligé puisque j’ai un typage mixte. Si vous ne comprenez pas tout, pas de problèmes, on reviendra dessus ensemble car j’aime beaucoup cette particularité que je vous offre.

J’ai pleins d’autres particularités. Je peux vous dire par exemple que je possède un ramasse miettes qui vous libère des chaînes de la gestion manuelle de la mémoire. J’ai aussi la possibilité de mettre à votre disposition de nombreux types de données. Certains sont basiques comme les entiers ou les chaînes de caractères. D’autres sont très utiles pour manipuler des ensembles, notamment les tableaux. Et d’autres encore sont très évolués comme des programmes ou des classes. Des types de données encore plus complexes comme les séquences, les files, les tas, les piles, etc. sont disponibles dans mon module ADT.

Je finirai en vous parlant du fait que je suis multi-paradigme. Vous voulez faire de la programmation orientée objet ? Vous pouvez ! Vous souhaitez programmer de manière fonctionnelle ? Vous pouvez également ! Vous aimeriez élaborer un programme impératif ? Ça aussi vous le pouvez !

Pike, raconte nous ton histoire

Je ne suis pas né Pike, je le suis devenu. Je découle du langage de programmation LPC qui est un langage flexible développé par Lars Pensjö pour faciliter le développement de jeux vidéos multi donjons (MUD). Ce sont Fredrik Hübinette et Per Hedbor, des programmeurs du Lysator, le club informatique de l’université suédoise de Linköping, qui ont franchi la première étape de ma réalisation. En effet, ce sont eux qui ont séparé le langage et la machine virtuelle du reste du pilote MUD. Le résultat obtenu fut appelé LPC4 et servait comme langage de prototypage rapide. À cause de la licence de LPC, LPC4 n’était pas utilisable à des fins commerciales. J’ai donc été complètement réécrit puis publié en 1994 sous licence publique GNU sous le nom de micro-LPC. Ce n’est qu’en 1996 que j’ai finalement été reconnu sous le nom de Pike.

Depuis, je joue un rôle important dans la partie serveur/passerelle du logiciel Opera Mini qui est un navigateur web à destination des appareils mobiles comme les téléphones mobiles. Mais ne cherchez pas à m’utiliser pour programmer à bas niveau à cause de mon traitement octet par octet qui n’est pas optimisé pour cet usage.

Tu as l’air attaché à ton typage, peux-tu en dire plus ?

Oui, mon typage est assez original puisqu’il est mixte.

Vous pouvez déclarer des variables comme pouvant contenir une valeur de différents types. En effet, comme je vous oblige à déclarer explicitement vos variables afin de vous éviter certaines erreurs par la suite et que vous trouvez ça restrictif, je pense que cette solution convient à tout le monde.

Je possède même un mot clé qui permet de déclarer une variable pouvant contenir une valeur de n’importe quel type. Ce mot clé est mixed.

Ceci permet de convertir une valeur d’un type à un autre.

Puisqu’une variable peut être déclarée comme pouvant être de plusieurs types, je vous fournie des fonctions qui vous permettent de déterminer le type d’une variable. Ces fonctions suivent la convention de nommage suivante: <nom du type>p comme intp, floatp.

Voudrais-tu rajouter quelque chose ?

Oui, je tiens à vous dire que vous pouvez facilement écrire des modules en C ou C++ et de les intégrer au code que vous aurez écrit avec moi. Cette compatibilité permet une gestion des exceptions lancées dans une fonction annexe et traitées comme dans la plupart des langages de programmation. Je suis également support pour les opérations de réseau et d’entrée/sortie. Cependant, mon traitement octet par octet fait de moi une mauvaise solution pour programmer un lecteur de périphériques !

Et pour conclure ?

Je suis un langage très optimisé pour les chaînes de caractères et le traitement de texte (comme Perl), portable (comme Java mais plus flexible), convenable pour la programmation fonctionnelle et les lambdas expressions (comme Haskell), approprié pour les applications concurrentes, multi-tâche et flexible (comme Python), mais avec une vérification stricte des types (comme Ada).

Ressources:

--

--