Utilisateur:Cyrc/Brouillon
- → N'hésitez pas à publier sur le brouillon un texte inachevé et à le modifier autant que vous le souhaitez.
- → Pour enregistrer vos modifications au brouillon, il est nécessaire de cliquer sur le bouton bleu : « Publier les modifications ». Il n'y a pas d'enregistrement automatique.
Si votre but est de publier un nouvel article, votre brouillon doit respecter les points suivants :
- Respectez le droit d'auteur en créant un texte spécialement pour Wikipédia en français (pas de copier-coller venu d'ailleurs).
- Indiquez les éléments démontrant la notoriété du sujet (aide).
- Liez chaque fait présenté à une source de qualité (quelles sources – comment les insérer).
- Utilisez un ton neutre, qui ne soit ni orienté ni publicitaire (aide).
- Veillez également à structurer votre article, de manière à ce qu'il soit conforme aux autres pages de l'encyclopédie (structurer – mettre en page).
- → Si ces points sont respectés, pour transformer votre brouillon en article, utilisez le bouton « publier le brouillon » en haut à droite. Votre brouillon sera alors transféré dans l'espace encyclopédique.
Pliant | |
Paradigmes | procédural, impératif |
---|---|
Auteur | Hubert Tonneau |
Développeurs | Copliant |
Typage | Fort, statique |
Influencé par | LISP, C |
Système d'exploitation | Multiplateforme |
Licence | GNU GPL |
Site web | Fullpliant.org |
modifier ![]() |
Dans l'histoire des langages informatiques, Pliant est la première tentative de connecter les branches C et LISP. Le langage de programmation Pliant a été initié en 1984 par Hubert Tonneau, et publié pour la première fois en 1999. Il est distribué sous la licence GNU GPL v2.
Objectif et philosophie
modifierL'objectif de Pliant est de concilier l'efficacité d'exécution et l'expressivité.
Positionnement de Pliant dans les langages de programmation
modifierPliant est un sur-ensemble du langage C : tout programme écrit en C peut être traduit ligne à ligne en Pliant, bien que la syntaxe soit différente. En revanche, Pliant n'est pas un sur-ensemble du C++, car son modèle d'objet est différent, basé sur les instances et non sur des classes. Pliant présente l'efficacité brute du C, mais permet une bien meilleure expressivité et flexibilité grâce à trois de ses caractéristiques clés :
La syntaxe
modifierContrairement à beaucoup de langages de programmation, la syntaxe par défaut de Pliant ne suit pas le modèle du C : elle aurait été choisie la plus simple et la moins "chargée" possible pour rendre les programmes plus faciles à lire et faciliter les petites extensions pour des applications particulières. Elle utilise l'indentation et supprime la plupart des parenthèses, crochets et autres accolades. A titre d'exemple, voici la comparaison de la fonction factorielle en C, en Pliant, et en Python (exemple d'un autre langage qui a adopté une syntaxe différente du C) :
Fonction factorielle en C | Fonction factorielle en Pliant | Fonction factorielle en Python |
---|---|---|
/* Fonction factorielle en C */ int factorielle(int x) { if (x < 2) { return 1; } else { return x * factorielle(x-1); } } |
# Fonction factorielle en Pliant function fact x -> y arg Int x y if x<2 y := 1 else y := x*(fact x-1) |
# Fonction factorielle en Python def factorielle(x): if x < 2: return 1 else: return x * factorielle(x-1) |
NB : des accolades pourraient être retirées de la version en C mais, des erreurs pouvant être aisément commises en cas d'imbrication de plusieurs blocs, cela ne correspondrait pas aux normes de codages habituellement recommandées.
Il convient de noter que Pliant permet en particulier de changer sa propre syntaxe.
L'apport de Pliant à la métaprogrammation
modifierUn langage informatique défini les outils dont l'humain, en l’occurrence le programmeur, disposera pour spécifier à la machine ce qu'elle doit effectuer. Il existe de très nombreux langages informatiques. De chaque nouveau langage, on tend à argumenter qu'il est meilleur que tel autre car il dispose de telle ou telle fonctionnalité plus pratique, c'est à dire de tel ou tel moyen d'expression fourni au programmeur. De fait, les discussions concernant les langages informatiques ont souvent une forte connotation idéologique.
Dans cette logique, le concepteur du langage et le programmeur ne sont pas sur un pied d'égalité. Le concepteur fixe les règles, le programmeur doit les appliquer. Si les règles fixées ne sont pas adaptées à la situation, c'est à dire au programme à écrire, le programmeur n'a pas de véritable marche de manœuvre, autre que de changer de langage, ce qui revient à déplacer le problème plutôt que le résoudre. En effet, les applications complexes nécessitent de faire face à toute une série de difficultés, ce qui nécessiterait de mettre en œuvre simultanément toute une série de langages pour bénéficier de toutes les fonctionnalités optimales, mais pose alors un problème insurmontable qui est l'interface entre ces différents langages qui ne va jamais de soi.
Il existe deux exceptions à la règle du langage rigide où le concepteur fixe une fois pour toutes les règles :
- LISP, créé en 1959.
- Pliant, créé en 1999.
Avec ces deux langages, quand on désire disposer d'une nouvelle fonctionnalité, on peut l'ajouter au langage plutôt que de devoir changer de langage. Il existe cependant deux différences fondamentales entre LISP et Pliant.
Tout d'abord, dans LISP aucun garde-fou n'entrave cette liberté. Or, comme au niveau social, ce qui garanti la liberté maximale effective, ce n'est pas l'anarchie, c'est à dire l'absence totale de règles, mais quelques règles très générales qui facilitent la cohabitation des différentes activités.
Ensuite, les concepteurs de LISP ne se préoccupaient pas tellement de la problématique d'efficacité, car à l'époque on pensait que l'augmentation exponentielle de la puissance des machines la rendrait rapidement sans objet, ce qui n'a pas eu lieu.
Un langage de programmation fait l'interface entre le langage humain, représenté sous forme de graphe, et le langage machine qui est une liste d'instructions. Outre le fait qu'il n'a pas un mode d'exécution procédural, Lisp se distingue des autres langages par sa capacité de réécriture (métaprogrammation) ; en effet, la capacité réécriture de Lisp est turing-équivalente sur la partie arbre (langage humain), ce qui n'est le cas d'aucun autre langage (hors Pliant). Dans Lisp la puissance d'expression est maximale, mais l'exécution est figée, laissée au compilateur.
La capacité de réécriture de Pliant est également turing-équivalente sur la partie instructions, ce qui fait de Pliant le seul langage à faire le lien entre les deux représentations[1]. A chaque nœud de l'arbre est rattaché une liste d'instructions élémentaires et l'argument résultat.
Notes
modifier- (en)[1]
Liens externes
modifier- (en)http://zhar.net/projects/pliant/whatispliant/
- (en)https://www.sourceware.org/ml/guile/1999-03/msg00309.html Première publication en 1999
- (en)http://www.fullpliant.org/ Site officiel
- (en)http://beta.slashdot.org/story/15613 Débat sur slashdot lors de la première release
- (en)http://www.webopedia.com/TERM/P/Pliant.html
- (en)http://cams.ehess.fr/pom/langen/soft.html#pliant
- (en)https://sites.google.com/site/pliantcookbook/home
Autres références
modifier- (en)Marcus V. dos Santos,Isaac Woungang, Moses Nyongwa. Pliant: A Software Framework for Web-Based Courseware Development. Handbook of E-Learning Methodologies for Language Acquisition, Rita de Cassia Veiga Marriott & Patricia Lupion Torres (Eds.), Idea Group Publishing. Chapter 11, pages 165-184, 2008.
- (en)Marcus V. dos Santos, Isaac Woungang, and Moses Nyongwa. Academia: a simple Web-based courseware tool fully implemented in Pliant. World Conference on Educational Multimedia, Hypermedia and Telecomunications (EDMEDIA'05), Montreal, Canada, June 27-July 02, 2005.
- (en)Marcus V. dos Santos, Isaac Woungang, and Patrice O. de Mendez. Pliant: Moren than a Programming Language, a Flexible E-learning Tool. World Conference on Educational Multimedia, Hypermedia and Telecomunications (EDMEDIA'04), Lugano, Switzerland, June 21-26, 2004.