Web Analytics

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Pugs - Wikipédia

Pugs

Un article de Wikipédia, l'encyclopédie libre.

Vous avez de nouveaux messages (diff ?).
image:Langage_progr.png
Cet article fait partie de la série
Langages de programmation
Langages à objets
C++ - C#
Delphi - Eiffel - Java
Python - Ruby
Simula - Smalltalk
Visual Basic - WinDev
Langages impératifs
APL - ASP - Assembleur
BASIC - C - Cobol
Forth - Fortran - Logo
Pascal - Limbo - Perl - PHP
Langages fonctionnels
Haskell - ML/OCaml
Lisp/Common Lisp
Scheme
XSLT
Langages déclaratifs
Clips - Prolog
Langages concurrents
Ada 95 - Erlang
Langage de balisage
HTML - SGML - XML
S-expressions
Voir aussi
Conception - Codage
Tests - Optimisations

Pugs est une implantation expérimentale de Perl 6 en langage Haskell, et utilisant les spécificités les plus avancée de GHC. Selon le dorsal de génération et d'exécution de code, Pugs peut être considéré soit comme un compilateur, soit comme un interprète.

Les développeurs de Pugs se désignent comme lambda camels (chameaux lambda) pour marquer leur double appartenance : le chameau est la mascotte du langage Perl, et le lambda (λ) est une référence au lambda calcul qui est à la base de la programmation fonctionnelle.

La distribution Pugs contient du matériel de diverses origines et donc sous différentes licences Open Source : La licence artistique 2.0b5, la license du Glasgow Haskell Compiler [1], la GPL 2, la LGPL 2.1 et la licence MIT.


Sommaire

[modifier] Vue d'ensemble

Le projet Pugs a pour but de bootstrapper Perl 6 en implantant la totalité de la spécification de Perl 6 , détaillée à Synopses. Il est écrit en Haskell et utilise les fonctionnalités les plus récentes du Glasgow Haskell Compiler. Ainsi l'implantation de la mémoire transactionnelle logicielle pour la programmation concurrente qui permet d'exploiter au mieux les architectures multicores ou multiprocesseurs. Ou les types algébriques de données généralisés.

Pugs inclut deux exécutables principaux :

  • pugs est l'interprète avec un shell interactif
  • pugscc peut compiler des programmes Perl 6 en code Haskell, en code Perl 5, en JavaScript, ou en assembleur imcc destiné à être interprété par la machine virtuelle Parrot.

[modifier] Numéros de version

Les numéros de version de Pugs convergent vers 2 × π (cela rappelle TeX et METAFONT, qui utilisent un système similaire); Chaque chiffre significatif de la version mineure représente une étape franchie avec succès. Les étapes anticipées sont :

  • 6.0 : Version initiale
  • 6.2 : Entrées-sorties et structures de contrôle; variables mutables, affectation.
  • 6.28 : classes et traits.
  • 6.283 : Règles et Grammaires.
  • 6.2831 : Système de types et édition de liens.
  • 6.28318 : Macros.
  • 6.283185 : Port de Pugs vers Perl 6, si nécessaire.

La version courante de Pugs délivrée le 17 octobre 2006 est 6.2.13.

[modifier] Compatibilité avec Perl 5

Depuis la version 6.2.6, Pugs peut inclure la machine virtuelle Perl 5 et donc utiliser les modules CPAN. Le JAPH ci-dessous montre l'utilisation de Perl DBI, un module populaire, pour gérer une base de données SQLite :

#!/usr/bin/pugs
use v6;
use perl5:DBI;

my $dbh = DBI.connect('dbi:SQLite:dbname=test.db');
$dbh.do("CREATE TABLE Test (Project, Pumpking)");

my $sth = $dbh.prepare("INSERT INTO Test VALUES (?, ?)");
$sth.execute(<PGE Patrick>);
$sth.execute(<Pugs Audrey>);
$sth.execute(<Parrot Leo>);

my $res = $dbh.selectall_hashref('SELECT * FROM Test', 'Pumpking');

# Just another Pugs hacker
say "Just another $res<Audrey><Project> hacker";

[modifier] Modèle de développement

Pugs est un projet open source très productif. Démarré en 2005, ses progrès ont été rapides pour les raisons suivantes :

  • Pugs' utilise le système de typage statique de Haskell. Cela signifie qu'une palette plus large de bogues est détectée au moment de la compilation. Dans la tradition des langages fonctionnels, quelques lignes de Haskell peuvent accomplir beaucoup de travail. Haskell est très adapté a l'analyse d'un langage grâce à la bibliothèque Parsec, un analyseur monadique combinatoire écrit entièrement en Haskell. Les choses deviennent difficiles quand le code fonctionnel doit interagir avec le monde réel (entrées/sorties et environnement dépendant du temps). Pour cela, Pugs utilise intensivement les monades, qui sont des containers qui encapsulent les effets de bord dans un monde par ailleurs purement fonctionnel. C'est-à dire sans effets de bord et indépendant de l'ordre d'exécution des paramètres d'une fonction.
  • Le développement est piloté par les tests, un principe de la programmation extrême dont le but est d'écrire les jeux de test si possible avant même que le code à tester soit écrit. L'état du projet est alors apparent simplement en regardant quelle proportion de tests réussit. Cela rend plus facile de détecter les régressions. On espérait originellement que l'important jeu de test de Pugs formerait la base du jeu de test de Perl 6 mais il semble que Pugs lui même sera la première implantation de Perl 6.
  • Audrey Tang distribue généreusement le bit de commit, spécialement aux personnes désireuses d'écrire des tests. Le développement de Pugs utilise un dépôt Subversion. Grâce à cela, Pugs a accumulé une bibliothèque de tests considérable.
  • L'enthousiasme d'Audrey est communicatif et ses communications relativement fréquentes. Son journal (lien ci-dessous) a attiré plusieurs personnes vers le projet, séduites par la vitesse de développement du projet. Cela constraste avec la réputation que s'était attiré Perl 6, projet commencé en l'an 2000, dont l'avancement avant Pugs était très lent. Il faut pourant noter les retombées pourtant nombreuses dans la prochaine versions mineure 5.10 de Perl 5, et les modules Perl6:: de CPAN implantant des fonctionnalités de Perl 6 dans Perl 5. La communication à court terme pour Pugs se fait sur le canal IRC #perl6 Freenode.

[modifier] Voir aussi

[modifier] Liens externes

Portail des logiciels libres – Accédez aux articles de Wikipédia concernant les logiciels libres.
Autres langues

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu