Gosu, anteriormente conocido como GScript , es un lenguaje de programación de propósito general con tipado estático que se ejecuta en la máquina virtual de Java . Entre sus influencias se encuentran Java , C# y ECMAScript . El desarrollo de Gosu comenzó en 2002 internamente para Guidewire Software , y el lenguaje tuvo su primera publicación comunitaria en 2010 bajo la Licencia Apache 2.0 . [ 2 ]
Gosu puede funcionar como lenguaje de scripting , con tipos de programa de formato libre (archivos .gsp) para la creación de scripts y archivos de plantilla verificados estáticamente (archivos .gst). Opcionalmente, Gosu puede ejecutar estos y todos los demás tipos directamente desde el código fuente sin precompilación, lo que también lo distingue de otros lenguajes estáticos.
Historia
Gosu se describe a menudo como una variante de Java que introduce mejoras prácticas manteniendo la compatibilidad e interoperabilidad con Java. El lenguaje se originó en 2002 en Guidewire Software, donde se denominó inicialmente GScript , un lenguaje de scripting diseñado para su uso en aplicaciones de Guidewire. [ 3 ] [ 4 ] A medida que GScript evolucionó de una simple herramienta de scripting a un lenguaje de programación de propósito general, su desarrollador principal, Scott McKinney, lo renombró Gosu .
Originalmente creado como un lenguaje de enlace para permitir a los clientes de Guidewire definir reglas de negocio, Gosu pronto encontró un uso más amplio dentro de los productos de la compañía, dando soporte a áreas como la vinculación de interfaces de usuario , la creación de plantillas y la gestión de documentos. Con el tiempo, Gosu se convirtió en el principal lenguaje de implementación en el conjunto de aplicaciones de Guidewire, superando a Java en uso general.
Guidewire lanzó la versión beta 0.7 de Gosu al público en noviembre de 2010, seguida de la versión beta 0.8 en diciembre de 2010 y la versión beta 0.8.6 a mediados de 2011. Estos lanzamientos introdujeron varias mejoras, incluidos nuevos cargadores de tipos que permitieron a Gosu representar dinámicamente formatos de datos externos como JavaScript Object Notation ( JSON ) y Extensible Markup Language ( XML ) como tipos nativos de Gosu.
Guidewire continúa utilizando y brindando soporte a Gosu de manera extensiva en sus aplicaciones InsuranceSuite . Si bien el desarrollo activo de nuevas funciones del lenguaje Gosu se ha pausado, la compañía continúa expandiendo InsuranceSuite a través de interfaces de programación de aplicaciones ( API ) REST ( Representational State Transfer ) y marcos de integración accesibles desde Gosu y Java.
Filosofía
Scott McKinney, creador y líder de desarrollo del lenguaje Gosu, enfatiza el pragmatismo, presente en la legibilidad y la facilidad de descubrimiento , como el principio rector que guía el diseño del lenguaje. [ 5 ] Por ejemplo, el rico sistema de tipos estáticos de Gosu es un ingrediente necesario para lograr las mejores herramientas a través del análisis estático de programas , la retroalimentación detallada del analizador sintáctico, la finalización de código , la refactorización determinista, el análisis de uso, la navegación y similares.
Sintaxis y semántica
Gosu sigue una sintaxis que se asemeja a una combinación de otros lenguajes. Por ejemplo, las declaraciones son similares a las de Pascal , con una gramática que prioriza el nombre. Las clases de Gosu pueden tener funciones, campos, propiedades y clases internas como miembros. La herencia nominal y la composición mediante delegación están integradas en el sistema de tipos, y la tipificación estructural es similar a la del lenguaje Go .
Gosu admite varios tipos de archivos:
- Clase (archivos .gs)
- Programa (archivos .gsp)
- Mejora (archivos *.gsx)
- Plantilla (archivos *.gst)
Además de los tipos de clase estándar, Gosu admite enumeraciones, interfaces, estructuras y anotaciones.
Los archivos de programa facilitan el uso de Gosu como lenguaje de scripting. Por ejemplo, el programa "¡Hola, mundo!" de Gosu es una simple cadena de una sola línea:
imprimir ( "¡Hola, mundo!" )Las clases de Gosu también son ejecutables al estilo Java:
clase Main { static function main ( args : String []) { print ( "Hola, Mundo!" ) } }Tipos de datos
Una característica única de Gosu es su sistema de tipos abiertos, que permite extender fácilmente el lenguaje para proporcionar comprobaciones en tiempo de compilación y reconocimiento por parte del IDE de información que normalmente solo se comprueba en tiempo de ejecución en la mayoría de los demás lenguajes. Las mejoras permiten añadir funciones y propiedades adicionales a otros tipos, incluidos los tipos integrados de Java como String, List, etc. Este ejemplo muestra cómo añadir una función print() a java.lang.String.
mejora MyStringEnhancement : String { function print () { print ( this ) } }Ahora puedes indicarle a una cadena de texto que se imprima a sí misma:
"Eco" .print ( )La combinación de cierres y mejoras proporciona una forma potente de programar con colecciones. La sobrecarga de los flujos de Java es innecesaria con Gosu:
var lista = { 1 , 2 , 3 } var resultado = lista . where (\ elem -> elem >= 2 ) print ( resultado )Usos
Este lenguaje de programación de propósito general se utiliza principalmente en los productos comerciales de Guidewire Software .
Referencias
- ↑ "Versión 1.18.7" . 4 de diciembre de 2025. Consultado el 5 de diciembre de 2025 .
- ↑ "Lanzamiento al público del lenguaje de programación Gosu" . Slashdot . 09/11/2010.
- ↑ "Guidewire" . Guidewire Software, Inc. 2026. Consultado el 13 de marzo de 2026 .
- ↑ «Gosu» . GitHub . 4 de febrero de 2026 . Consultado el 13 de marzo de 2026 .
- ↑ McKinney, Scott. "Idioma del mes: Gosu" . Dr. Dobb's Journal . Archivado del original el 18 de diciembre de 2014.
Lecturas adicionales
- McKinney, Scott (26 de julio de 2010). "Introducción a Gosu" (PDF) . Cumbre de lenguajes JVM 2010. Oracle.
Evento
- Gross, Carson (18 de julio de 2011). "Características del lenguaje como biblioteca: uso del sistema de tipos abiertos de Gosu con DSL externos" (PDF) . JVM Language Summit 2011. Oracle.Video
Enlaces externos
- Sitio web oficial
- Gosu: Un lenguaje sencillo para la JVM en GitHub
- "Sitio web corporativo" . Guidewire Software .
- Lenguajes de programación
- Lenguajes de programación orientados a objetos
- Familia de lenguajes de programación Java
- Lenguajes de programación de la JVM
- Software que utiliza la licencia Apache.
- Lenguajes de programación creados en 2002
- Lenguajes de programación de alto nivel
- Software libre multiplataforma
- Compiladores libres y de código abierto
- Lenguajes de programación de tipado estático