stringtranslate.com

Raku (lenguaje de programación)

Raku es un miembro de la familia de lenguajes de programación Perl . [6] Anteriormente llamado Perl 6 , fue renombrado en octubre de 2019. [7] [8] Raku introduce elementos de muchos lenguajes modernos e históricos. La compatibilidad con Perl no era un objetivo, aunque un modo de compatibilidad es parte de la especificación. El proceso de diseño de Raku comenzó en 2000.

Historia

En Perl 6, decidimos que sería mejor arreglar el lenguaje que arreglar al usuario.

—Larry  Wall [9]

El proceso de diseño de Raku fue anunciado por primera vez el 19 de julio de 2000, en el cuarto día de la Conferencia Perl de ese año , [10] por Larry Wall en su charla State of the Onion 2000. [11] En ese momento, los objetivos principales eran eliminar las "verrugas históricas" del lenguaje; "las cosas fáciles deberían seguir siendo fáciles, las difíciles deberían volverse más fáciles y las imposibles deberían volverse difíciles"; y una limpieza general del diseño interno y las interfaces de programación de aplicaciones (API). El proceso comenzó con una serie de Solicitudes de comentarios (RFC). Este proceso estaba abierto a todos los contribuyentes y no dejó ningún aspecto del lenguaje cerrado al cambio. [12]

Una vez completado el proceso de RFC, Wall revisó y clasificó cada una de las 361 solicitudes recibidas. Luego comenzó el proceso de escribir varios "Apocalipsis", utilizando el significado original del término, "revelador". [13] Si bien el objetivo original era escribir un Apocalipsis para cada capítulo de Programming Perl , se hizo evidente que, a medida que se escribía cada Apocalipsis, los Apocalipsis anteriores se invalidaban por cambios posteriores. Por esta razón, se publicó un conjunto de Sinopsis, cada una de las cuales relata el contenido de un Apocalipsis, pero con cualquier cambio posterior reflejado en actualizaciones. Hoy, la especificación Raku se administra a través de la suite de pruebas "roast", [14] mientras que las Sinopsis se mantienen como una referencia histórica. [15]

También existe una serie de exégesis escritas por Damian Conway que explican el contenido de cada Apocalipsis en términos de uso práctico. Cada exégesis consta de ejemplos de código junto con una discusión del uso y las implicaciones de los ejemplos. [16]

En la actualidad, se utilizan tres métodos principales de comunicación en el desarrollo de Raku. El primero es el canal de chat por Internet (IRC) de Raku en Libera Chat . El segundo es un conjunto de listas de correo . [17] El tercero es el repositorio de código fuente de Git alojado en GitHub . [18]

Objetivos iniciales e implicaciones

El objetivo principal que Wall sugirió en su discurso inicial fue la eliminación de los defectos históricos, entre los que se incluían la confusión en torno al uso de sigilos para los contenedores, la ambigüedad entre las selectfunciones y el impacto sintáctico de los identificadores de archivos de palabras simples . Había muchos otros problemas que los programadores de Perl habían discutido sobre cómo solucionar durante años, y Wall los abordó explícitamente en su discurso. [ cita requerida ]

Una consecuencia de estos objetivos era que Perl 6 no sería compatible con el código base de Perl existente. Esto significaba que parte del código que un compilador de Perl 5 interpretara correctamente no sería aceptado por un compilador de Perl 6. Dado que la compatibilidad con versiones anteriores es un objetivo común cuando se mejora el software, los cambios importantes en Perl 6 tuvieron que indicarse explícitamente. La distinción entre Perl 5 y Perl 6 se hizo tan grande que, finalmente, Perl 6 pasó a llamarse Raku.

Mascota

Larry Wall y Camelia

La mascota del lenguaje es "Camelia, el insecto Raku". [1] Su nombre es un guiño a la mascota del camello asociada con Perl , y su forma, en la tradición amante de los juegos de palabras de la comunidad Perl, es un juego de palabras con " software bug ". Los diseños en espiral incrustados en sus alas similares a las de una mariposa se asemejan a los caracteres "P6", el apodo favorito para Perl 6, y la ubicación descentrada de los ojos es un juego de palabras intencional con "Wall-eyed". [19]

Uno de los objetivos detrás del diseño vivo y colorido del logotipo era desalentar la misoginia en la comunidad y que fuera una oportunidad para que aquellos de "persuasión masculina" mostraran su lado sensible. [20]

Implementaciones

A partir de 2017 , solo la implementación de Rakudo se encuentra en desarrollo activo. Ninguna implementación será designada como la implementación oficial de Raku; más bien, "Raku es cualquier cosa que pase el conjunto de pruebas oficial". [21]

Rakudo Perl 6 [22] [23] apunta a una serie de máquinas virtuales, como MoarVM , la máquina virtual Java y JavaScript . MoarVM es una máquina virtual creada especialmente para Rakudo [24] y la cadena de herramientas del compilador NQP. [25] Hay una capa entre Raku y las máquinas virtuales llamada Not Quite Perl 6 (NQP), que implementa las reglas de Raku para analizar Raku, y un árbol de sintaxis abstracta y una generación de código específico del backend . Grandes porciones de Rakudo están escritas en Raku, o en su subconjunto NQP. Rakudo no es una implementación completamente autohospedada , ni hay planes concretos en este momento para hacer de Rakudo un compilador de arranque .

Implementaciones históricas

Pugs fue una implementación inicial de Perl 6 escrita en Haskell , liderada por Audrey Tang . Pugs solía ser la implementación más avanzada de Perl 6, pero desde mediados de 2007, se encuentra mayormente inactiva (con actualizaciones realizadas solo para seguir la versión actual del Glasgow Haskell Compiler (GHC)). A partir de noviembre de 2014, Pugs no recibió mantenimiento. [26]

En 2007, v6-MiniPerl6 ("mp6") y su reimplementación, v6-KindaPerl6 ("kp6") fueron escritos como un medio para arrancar el STD de Perl-6.0.0, usando Perl 5. El STD es una gramática completa para Perl 6 y está escrito en Perl 6. En teoría, cualquier cosa capaz de analizar el STD y generar código ejecutable es un sistema de arranque adecuado para Perl 6. kp6 está compilado actualmente por mp6 y puede funcionar con múltiples backends. [27] [28] mp6 y kp6 no son implementaciones completas de Perl 6 y están diseñados solo para implementar el conjunto de características mínimas requeridas para arrancar un compilador completo de Perl 6.

Yapsi era un compilador y entorno de ejecución de Perl 6 escrito en Perl 6. Como resultado, requería un intérprete de Perl 6 existente, como una de las versiones de Rakudo Star, para ejecutarse. [29]

Niecza, otro gran esfuerzo de implementación de Perl 6, se centró en la optimización y la investigación de la implementación eficiente. Su objetivo es la Infraestructura de lenguaje común . [30]

Sistema de módulos

La especificación Raku solicita que los módulos se identifiquen por nombre, versión y autoridad. [31] Es posible cargar solo una versión específica de un módulo, o incluso dos módulos del mismo nombre que difieren en versión o autoridad. Para mayor comodidad, se proporciona un alias con un nombre corto.

CPAN , el sistema de distribución de módulos de Perl, aún no maneja módulos Raku. En su lugar, se utiliza un prototipo de sistema de módulos. [32]

Libros

Libros publicados antes de Perl 6 versión 1.0 (conocida como versión 6.c)

Además, en 2009 se publicó un libro dedicado a una de las primeras máquinas virtuales de Perl 6, Parrot.

Libros publicados después de la versión 1.0 de Perl 6 (conocida como versión 6.c)

Libros publicados con el nuevo nombre Raku

Referencias

  1. ^ ab Jackson, Joab (23 de julio de 2010). "El creador de Perl insinúa el inminente lanzamiento del esperado Perl 6". Servicio de noticias IDG . Consultado el 8 de febrero de 2015 .
  2. ^ "Anuncio: Lanzamiento de la especificación del lenguaje Raku Perl 6 'Diwali' 6.d". blogs.perl.org . Zoffix Znet. 5 de noviembre de 2018 . Consultado el 19 de agosto de 2022 .
  3. ^ "Módulos". docs.raku.org . Consultado el 19 de agosto de 2022 .
  4. ^ "Glosario de términos y jerga". Perl Foundation Perl 6 Wiki . The Perl Foundation . 28 de febrero de 2011. Archivado desde el original el 21 de enero de 2012 . Consultado el 8 de febrero de 2015 .
  5. ^ ab 唐鳳, también conocida como Audrey Tang (21 de abril de 2010). "Cómo implementar Perl 6 en 2010".
  6. ^ "Acerca de Perl". perl.org . Consultado el 11 de junio de 2020 ."Perl" es una familia de lenguajes, "Raku" (antes conocido como "Perl 6") es parte de la familia, pero es un lenguaje independiente que tiene su propio equipo de desarrollo. Su existencia no tiene un impacto significativo en el desarrollo continuo de "Perl".
  7. ^ "Perl 6 renombrado como Raku". LWN.net . 15 de octubre de 2019 . Consultado el 16 de octubre de 2019 .
  8. ^ "Respuesta de TPF al cambio de nombre de Raku". 29 de octubre de 2019.
  9. ^ Biancuzzi, Federico; Warden, Shane (2009). Mentes maestras de la programación: conversaciones con los creadores de los principales lenguajes de programación. "O'Reilly Media, Inc." ISBN 978-0596515171.
  10. ^ Kline, Joe (21 de agosto de 2000). "Informe de la Conferencia Perl".
  11. ^ Wall, Larry (2000). "El estado de la cebolla en 2000". O'Reilly Network.
  12. ^ La Fundación Perl (2000). "Acerca de las RFC de Perl 6".
  13. ^ Wall, Larry (2 de abril de 2001). "Apocalipsis 1: lo feo, lo malo y lo bueno".
  14. ^ "Conjunto de pruebas de Raku". GitHub . 2019.
  15. ^ Wall, Larry ; Los diseñadores de Perl 6 (2015). "Documentos de diseño de Perl 6".{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  16. ^ La Fundación Perl (2001). "Exégesis".
  17. ^ El lenguaje de programación Raku (2022). "Comunidad Raku".
  18. ^ "Raku". GitHub . Consultado el 19 de agosto de 2022 .
  19. ^ "Larry Wall en el registro de chat de IRC". 15 de enero de 2016. Consultado el 10 de noviembre de 2017 .
  20. ^ "Correo electrónico archivado "Consideraciones sobre el logotipo" de Larry Wall". GitHub . 24 de marzo de 2009 . Consultado el 10 de noviembre de 2017 .
  21. ^ Wall, Larry (10 de agosto de 2004). "Sinopsis 1: Resumen".
  22. ^ "rakudo/rakudo - GitHub". Github.com . Consultado el 21 de septiembre de 2013 .
  23. ^ Michaud, Patrick (16 de enero de 2008). «El compilador antes conocido como 'perl6'». Archivado desde el original el 18 de febrero de 2012.
  24. ^ Worthington, Jonathan (31 de mayo de 2013). "MoarVM: una máquina virtual para NQP y Rakudo". 6guts . Consultado el 24 de julio de 2013 .
  25. ^ "NQP - Not Quite Perl en github". GitHub . 29 de mayo de 2022 . Consultado el 29 de mayo de 2022 .
  26. ^ "Comparación de características de los compiladores de Perl 6". Archivado desde el original el 7 de febrero de 2019.
  27. ^ Wall, Larry ; et al. (2007). "Perl 6 STD". GitHub .
  28. ^ "Preguntas frecuentes sobre mp6/kp6". Equipo de desarrollo de Perl 6. 2006.
  29. ^ "README de Yapsi". GitHub . 2011.
  30. ^ O'Rear, Stefan (29 de noviembre de 2011). «Niecza README.pod». GitHub . Consultado el 12 de enero de 2012 .
  31. ^ Wall, Larry (2004). "Sinopsis 11: Módulos".
  32. ^ "Directorio de módulos de Perl 6". Modules.raku.org . Consultado el 17 de mayo de 2020 .

Enlaces externos