Pike (langage)

Pike (langage)
Page d'aide sur l'homonymie Pour les articles homonymes, voir Pike.
Pike
Apparu en 1994
Auteur Fredrik Hübinette
Développeur Développement communautaire appuyé par la division Systèmes et Logiciel du département d’informatique et de science de l’information de l’université de Linköping
Dernière version 7.8.352 (23 septembre 2009) [+/−]
Paradigme multi-paradigmes : orienté objet, fonctionnel, procédural
Influencé par LPC, C, C++
Système d'exploitation Systèmes type Unix, Microsoft Windows
Licence GPL/LGPL/MPL
Site web http://pike.ida.liu.se/

Pike est un langage de programmation dynamique de haut niveau interprété générique et multiplate-forme doté d’une syntaxe proche du C. À la différence d’autres langages dynamiques, Pike est typé à la fois statiquement et dynamiquement, et requiert des définitions de type explicite. Il offre un système souple de typage et une rapidité de développement que permettent les langages dynamiquement typés, tout en offrant certains des avantages des langages statiquement typés.

Pike dispose d’un ramasse-miettes, de types de données évolués et de fonctions anonymes, ce qui autorise de programmer suivant plusieurs paradigmes, au choix du développeur : programmation orientée objet, fonctionnelle ou encore programmation impérative. Pike est un logiciel libre, délivré sous une triple licence : licence publique générale GNU (GPL), licence publique générale limitée GNU (LGPL) et licence publique Mozilla (MPL).

Sommaire

Historique

Pike plonge ses racines dans le langage LPC, un langage conçu à l’origine pour développer des MUD. Des programmeurs réunis au sein du Lysator, le club informatique de l’université suédoise de Linköping, en particulier Fredrik Hübinette et Per Hedbor, séparèrent le langage et la machine virtuelle du reste du pilote MUD, baptisant le résultat obtenu LPC4, et l’utilisèrent comme un langage de prototypage rapide pour diverses applications.

La licence de LPC interdisait d’utiliser le langage à des fins commerciales, ce qui poussa les développeurs à réécrire complètement l’interpréteur et à le publier en 1994 sous licence publique générale GNU, sous le nom de µLPC (micro LPC).

En 1996, µLPC fut renommé Pike, un nom jugé plus vendeur commercialement. Bien que son nom ait souvent changé avec le temps, l’entreprise aujourd’hui connue sous le nom de Roxen Internet Software[1] a employé nombre de développeurs Pike et fourni des ressources pour soutenir le développement de Pike. Roxen est aussi le nom d’un serveur web developpé par l’entreprise en Pike. En 2002, l’université de Linköping reprit la maintenance et l’évolution de Pike à Roxen. Plusieurs développeurs Pike se sont alors fait embaucher chez Opera Software, qui dispose de bureaux à Linköping ; Pike joue un rôle central dans la partie serveur/passerelle du logiciel Opera Mini[2].

Syntaxe du langage

Hello World

Pour un éclairage sur la place et le rôle du « Hello World » en programmation, voir l’article y afférent : Hello world.
int main() {
    write("Hello world!\n");
    return 0;
}

La syntaxe ci-dessus s’explique de la façon suivante :

  • La première ligne annonce la fonction main. C’est la première fonction exécutée au lancement d’un programme ; main signifie « principal(e) » en anglais. La mention int qui la précède signale qu’un nombre entier sera retourné à la fin de la fonction.
  • La fonction write envoie une chaîne de caractères sur la sortie standard, qui est bien souvent une interface en ligne de commande.
  • La troisième ligne retourne un nombre à l’appelant de la fonction, dans ce cas l’interface en ligne de commande, pour laquelle zéro signifie par convention que le programme s’est exécuté sans erreur.
  • Les accolades enserrent la fonction et le point-virgule sépare les instructions (ce qui implique que la fonction aurait pu tenir sur une seule ligne int main(){write("Hello world!\n");return 0;})
  • Le \n après le « Hello world! » est le caractère symbolisant une fin de ligne.

Types de données

La liste qui suit montre tous les types acceptés en standard par Pike. Des types de données plus complexes comme les séquences, les files, les tas, les piles, etc. sont disponibles dans le module ADT inclus avec Pike.

Types de données basiques :

  • entier (int)
  • flottant (float)
  • chaîne (string)

Types d’ensembles :

Autres types :

  • programme (program, la représentation compilée d’une classe)
  • objet (object, l’instance d’une classe)
  • fonction (function)

Pike oblige à déclarer explicitement toutes les variables. Il utilise cette information pour avertir sur d’éventuelles erreurs de type au moment de l’interprétation du code. Le code ci-dessous causera une erreur parce que la valeur de la variable « number » doit être un entier mais que le code tente d’y assigner un nombre flottant puis une chaîne de caractères.

int number;     // variable integer, n'accepte que des entiers
number = 5.5;   // 5.5 est un nombre flottant, ce qui conduit à une erreur
number = "5";   // "5" est une chaîne, et non le nombre entier 5, d'où erreur

Ce type de comportement est habituellement considéré comme restrictif et limitant par les tenants des langages dynamiquement typés. Toutefois, à la différence du C, du C++ ou de Java, pour ne citer qu’eux, Pike a recours à un système de typage spécifique qui permet au programmeur de déclarer des variables comme pouvant contenir une valeur de différents types, une chose la plupart du temps impossible ou dangereux dans la plupart des langages apparentés au C.

Le code suivant montre comment une variable peut être déclarée de deux types différents, c’est-à-dire comme pouvant contenir l’un ou l’autre de ces types au cours de l’exécution du programme.

int|float number; // variable de type entier OU flottant
number = 5;       // ceci est valable
number = 5.5;     // ... et ceci également.

Du fait qu’une variable peut être déclarée comme pouvant être de plus d’un type, des fonctions sont fournies pour déterminer quel type de données une telle variable stocke à un instant t. Ces fonctions suivent une convention de nommage : le nom du type accolé à la lettre p ; ainsi trouve-t-on intp, floatp, stringp, etc.

int|float number;
number = 5;
intp(number);      // renvoie vrai parce que number stocke un entier
floatp(number);    // renvoie faux
number = 5.5;
floatp(number);    // renvoie vrai parce que number stocke maintenant un nombre flottant

En outre, il existe un type de données mixed spécial. Sa définition permet à une variable de contenir n’importe quel type de données.

mixed anything;
anything = 5;    // anything est maintenant l’entier 5
anything = 5.5;  // anything est maintenant le flottant 5,5
anything = "5";  // anything est maintenant la chaîne "5"

Pour convertir une valeur d’un type à un autre, Pike utilise une conversion de type explicite :

mixed anything;
anything = (int)5.5;         // anything est maintenant un entier de valeur 5
anything = (string)anything; // anything est maintenant une chaîne qui vaut "5"

Notes et références

(en) Cet article est partiellement ou en totalité issu de l’article en anglais intitulé « Pike (programming language) » (voir la liste des auteurs)

  1. Site officiel de Roxen Internet Software
  2. (en) Vincent Lextrait, « The Programming Languages Beacon, v10.0 », janvier 2010. Consulté le 14 mars 2010

Annexes

Articles connexes

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Pike (langage) de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Pike — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Pike », sur le Wiktionnaire (dictionnaire universel) Personnalités Albert Pike : avocat, un… …   Wikipédia en Français

  • Langage de programmation dynamique — Cet article traite d une classe des langages de programmation. Pour la méthode consistant en la réduction du temps d exécution d un algorithme, voir programmation dynamique On utilise le terme langage de programmation dynamique en informatique… …   Wikipédia en Français

  • Rob Pike — Pour les articles homonymes, voir Pike. Rob Pike Rob Pike, né en 1956, est un ingénieur en informatique. C est un ancien chercheur des Laboratoir …   Wikipédia en Français

  • Limbo (langage) — Pour les articles homonymes, voir Limbo. Le langage de programmation Limbo a été créé vers 1995 par Rob Pike, Sean Dorward, Phil Winterbottom avec l aide de Dennis Ritchie pour le système d exploitation Inferno. C est un langage hybride… …   Wikipédia en Français

  • Robert Pike — Rob Pike Pour les articles homonymes, voir Pike. Rob Pike Rob Pike, né en 1956, est un ingénieur en informatique. C …   Wikipédia en Français

  • Go (langage) — Pour les articles homonymes, voir GO. Go Apparu en 11  …   Wikipédia en Français

  • Alef (langage de programmation) —  Pour l’article homophone, voir Aleph. Le langage de programmation Alef a été conçu par Phil Winterbottom des Bell Labs dans le cadre du système d exploitation Plan 9. Lors une présentation en février 2000, Rob Pike déclara : … Alef… …   Wikipédia en Français

  • Brian Kernighan — ˈkɛrnɪhæn (le G est muet). (né en janvier 1942 à Toronto, Canada) est un informaticien connu pour avoir co écrit le premier livre sur le langage de programmation C (avec Dennis Ritchie). Il est aussi le co créateur des langages Awk …   Wikipédia en Français

  • Emacs — Pour les articles homonymes, voir Emacs (homonymie). Emacs …   Wikipédia en Français

  • Chronologie des langages de programmation — Voici une chronologie non exhaustive des langages de programmation. Sommaire 1 Avant 1950 2 Années 1950 3 Années 1960 4 Années 1970 …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”