Genie es un lenguaje de programación moderno de propósito general de alto nivel en desarrollo desde 2008. [1] Fue diseñado como un dialecto alternativo, más simple y más limpio para el compilador Vala , al tiempo que conserva la misma funcionalidad del lenguaje Vala. Genie usa el mismo compilador y bibliotecas que Vala; de hecho, los dos pueden usarse uno al lado del otro. [2] Las diferencias son solo sintácticas.
Paradigma | multi-paradigma : imperativo , estructurado , orientado a objetos |
---|---|
Diseñada por | Jamie McCracken |
Apareció por primera vez | 2008 |
Lanzamiento estable | 0.52.3 / 1 de mayo de 2021 |
Disciplina de mecanografía | estático , fuerte |
SO | Multiplataforma (todas las plataformas compatibles con GLib ) |
Licencia | LGPLv2.1 + |
Extensiones de nombre de archivo | .gs |
Sitio web | wiki |
Influenciado por | |
Python , Boo , D , Objeto Pascal |
La sintaxis de Genie se deriva de numerosos lenguajes modernos como Python , Boo , D y Delphi . En la línea de Pascal y Python, Genie usa sangrías en lugar de llaves para delimitar bloques .
Al igual que Vala, Genie utiliza el sistema de tipos GObject para crear clases e interfaces declaradas en el código fuente de Genie, sin imponer requisitos de tiempo de ejecución adicionales (es decir, a diferencia de Python, Java o C #, no requiere una máquina virtual ).
Genie permite el acceso a bibliotecas C , especialmente aquellas basadas en GObject (como GTK ), sin usar una interfaz binaria de aplicación (ABI) diferente. Durante la compilación , el código se traduce primero a archivos fuente y de encabezado en C, que luego se compilan en un código de máquina específico de la plataforma utilizando cualquier compilador de C disponible como GCC , lo que permite el desarrollo de software multiplataforma .
Los programas desarrollados en Vala y Genie no dependen del entorno de escritorio GNOME , por lo general solo requieren GLib .
Muestras de código
"Hola Mundo"
Esta muestra utiliza explícitamente cuatro espacios para la sangría.
[sangría = 4]en eso imprimir "¡Hola, mundo!"
Objetos
Sin una declaración de sangría explícita, el valor predeterminado son las pestañas.
muestra de clasedef ejecutar ()stdout.printf ("¡Hola, mundo! \ n")en esovar muestra = nueva muestra ()sample.run ()
Crítica
Como de 2013[actualizar], Los bucles for de Genie son inclusivos, lo que hace que el manejo de listas vacías sea engorroso: [3]
var l = nueva lista de cadenas si l . tamaño > 0 para var i = 0 a ( l . tamaño - 1 ) imprimir l . @ obtener ( i )
Sin embargo, las listas se pueden iterar usando la construcción for-in de manera fácil y directa: [4]
var l = nueva lista de cadenas para s en l : print s
Referencias
- ^ Jamie McCracken (2008). "Presentamos Genie - el lenguaje de programación inteligente" . Archivado desde el original el 18 de agosto de 2011.
- ^ Usando Genie y Vala juntos
- ^ Tal Liron (11 de enero de 2013). Genio . El evento ocurre a las 32:29.
- ^ https://wiki.gnome.org/Projects/Genie#Lists_.28Gee.27s_ArrayList.29
enlaces externos
- Página web oficial
- Página de Barry Kauler sobre Genie en la Wayback Machine (archivada el 17 de febrero de 2010)
- Usando el lenguaje de programación Genie en Puppy Linux
- Puppy Linux: programación de Vala y Genie
- Documentación de API
- buscar proyectos de github escritos en genie