Articulo de referencia

Gosu (lenguaje de programación)

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 infl...

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

  1. "Versión 1.18.7" . 4 de diciembre de 2025. Consultado el 5 de diciembre de 2025 .
  2. "Lanzamiento al público del lenguaje de programación Gosu" . Slashdot . 09/11/2010.
  3. "Guidewire" . Guidewire Software, Inc. 2026. Consultado el 13 de marzo de 2026 .
  4. «Gosu» . GitHub . 4 de febrero de 2026 . Consultado el 13 de marzo de 2026 .
  5. 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
  • Sitio web oficial
  • Gosu: Un lenguaje sencillo para la JVM en GitHub
  • "Sitio web corporativo" . Guidewire Software .