Pugs


Pugs

Pugs

Pugs es un compilador y un intérprete del lenguaje de programación Perl 6, cuyo desarrollo comenzó el 1 de febrero de 2005 por Audrey Tang.

Contenido

Sumario

El proyecto Pugs tiene como objetivo permitir el bootstrap de Perl 6 mediante la implementación de la especificación completa de Perl 6, como se detalla en sus Synopsis. Está escrito en Haskell, en particular usando el Compilador de Haskell de Glasglow.

Pugs incluye dos ejecutables principales:

  • pugs es el interprete con un intérprete de comandos interactivo.
  • pugscc puede compilar programas de Perl 6 a código Haskell, Perl 5, JavaScript, o al ensamblador PIR de la máquina virtual Parrot.

Pugs es software libre, distribuible bajo los términos de la licencia pública GNU o la Licencia Artística.[1] Estos son los mismos términos de la licencia de Perl.

Versiones

Los números mayores y menores de las versiones de Pugs convergen a 2π (un esquema que recuerda a TeXy METAFONT, que usan esquemas similares); cada dígito significativo de la versión menor representa un hito completado con éxito. El tercer dígito es incrementado para cada liberación. Los hitos hasta ahora son:

  • 6.0: versión inicial.
  • 6.2: entrada/salida básica y elementos de control de flujo; variables mutables; asignación.
  • 6.28: clases y tratos.
  • 6.283: reglas y gramáticas.
  • 6.2831: sistema de tipos y enlazado.
  • 6.28318: macros.
  • 6.283185: portado de Pugs a Perl 6, si fuera necesario.

Compatibilidad con Perl 5

En la versión 6.2.6, Pugs tiene la habilidad de aceptar Perl 5 y usar los módulos de CPAN instalados en el sistema. El siguiente ejemplo muestra el uso del popular módulo Perl DBI para gestionar una base de datos:

#!/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";

Modelo de Desarrollo

Varios factores han sido sugeridos como razones del progreso de Pugs:

  • El uso de Haskell. El tipado estático hace fácil detectar los errores en el programa en tiempo de compilación. El código en Haskell es a menudo considerado conciso. La biblioteca Parsec[1], es un analizador sintáctico monádico combinatorial escrito completamente en Haskell, que simplifica el análisis. Debido a que Haskell es un lenguaje funcional puro, requiere algún esfuerzo para interaccionar con el mundo real (entradas/salidas y entorno guiado por el tiempo). Para conseguirlo, Pugs hace un uso extensivo de monádas.
  • El uso en Pugs de una metodología guiada por pruebas (una máxima de la Programación Extrema). Esta metodología dicta que cualquier módulo debe tener código para pruebas, incluso antes que el módulo sea implementado. Los seguidores de esta metodología arguyen que mejora la calidad del software. Sin embargo, el proyecto a menudo ha silenciado los fallos en las pruebas de regresión antes de las liberaciones, cancelando gran parte del beneficio del desarrollo guiado por pruebas.
  • Posición liberal de Tang a la hora de conceder el commit bit. El desarrollo de Pugs actualmente se basa en el uso de un repositorio en Subversion, y se concede libremente acceso - especialmente a aquella gente que desee escribir pruebas. A causa de esto, se ha acumulado una vasta biblioteca de pruebas. Otras implementaciones de Perl 6 usan los muchos tests desarrollados por Pugs como una especificación ejecutable de Perl 6.
  • El estilo de comunicación de Tang; su diario (enlazado abajo) atrae a mucha gente al proyecto. Los desarrolladores de Pugs también se reunen en el nodo libre del canal #perl6 de IRC.

A pesar de estos factores, el progreso en el propio Pugs se ralentizó durante 2006 debido a temas personales que impidieron que Audrey consagrara tanto tiempo al proyecto como en 2005. Aunque el desarrollo continua, pocos contribuyentes trabajan activamente en el intérprete basado en Haskell, lo cual hace su progreso mucho más lento de lo que mucha gente esperaba al principio del proyecto.

Referencias

  1. Pugs Apocryphon 1

Enlaces externos

Obtenido de "Pugs"

Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Pugs — est une mise en œuvre 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… …   Wikipédia en Français

  • Pugs — is a compiler and interpreter for the Perl 6 programming language, started on February 1 2005 by Audrey Tang.OverviewThe Pugs project aims to bootstrap Perl 6 by implementing the full Perl 6 specification, as detailed in the… …   Wikipedia

  • Pugs — Audrey Tang ist Initiatorin und Leiterin des Pugs Projektes Pugs ist ein alternativer Interpreter und Compiler für Perl 6, der in Haskell (GHC) geschrieben wird. Das Softwareprojekt wurde am 1. Februar 2005 von Audrey Tang begonnen, um die… …   Deutsch Wikipedia

  • PUGS — Propellant Utilization & Gaging System NASA …   Acronyms

  • PUGS — Propellant Utilization & Gaging System ( > NASA Acronym List ) …   Acronyms von A bis Z

  • pugs — pÊŒg n. small turned up nose; clay prepared for brickmaking; footprints of an animal; breed of small short haired dog v. fill with caulk; follow footprints, track footprints …   English contemporary dictionary

  • pugs — plural of pug present third singular of pug …   Useful english dictionary

  • Pals and Pugs — Infobox Film name = Pals and Pugs image size = caption = director = Jess Robbins producer = Albert E. Smith writer = Jess Robbins narrator = starring = Oliver Hardy music = cinematography = editing = distributor = released = 10 May, 1920 runtime …   Wikipedia

  • Pug — For other uses, see Pug (disambiguation). Pug A fawn pug, the most common coloring Other names Chinese pug Dutch bulldog Dutch mastiff Mini mastiff Country of origin China[1] …   Wikipedia

  • Perl 6 — Infobox programming language name = Perl paradigm = Multi paradigm year = 2000 designer = Larry Wall latest release version = pre release latest release date = typing = dynamic, static influenced by = Perl 5, Haskell, Smalltalk influenced =… …   Wikipedia