Gosu (Programmiersprache)

Gosu ist eine statisch typisierte, allgemeine Programmiersprache, die auf der Java Virtual Machine (JVM) läuft. Ihre Einflüsse stammen aus Java, C# und ECMAScript. Die Entwicklung von Gosu begann 2002 intern bei Guidewire Software, und die Sprache wurde erstmals 2010 unter der Apache-2-Lizenz in der Community veröffentlicht.

GOSU
Erscheinungsjahr: 2002
Designer: Guidewire Software
Entwickler: Guidewire und open source contributors
Aktuelle Version 1.17.9[1] (17. April 2024)
Typisierung: statisch
Beeinflusst von: C#, Java
Beeinflusste: Kotlin
Betriebssystem: Alle, die JVM (Java Virtual Machine) unterstützen
Lizenz: Apache-Lizenz, Version 2.0[2]
gosu-lang.org

Merkmale

Gosu kann als Skriptsprache dienen und verfügt über Freiform-Programmtypen (.gsp-Dateien) für die Skripterstellung sowie statisch verifizierte Vorlagendateien (.gst-Dateien). Gosu kann diese und alle anderen Typen optional direkt aus dem Quellcode ohne Vorkompilierung ausführen, was es auch von anderen statischen Sprachen unterscheidet.[3]

Geschichte

Gosu ist eine statisch typisierte, Programmiersprache, die ursprünglich im Jahr 2002 als Skriptsprache namens GScript bei Guidewire Software entwickelt wurde.[4] Die Sprache hat sich im Laufe der Zeit weiterentwickelt und wurde als eine Art Java-Variante beschrieben, die versucht, nützliche Verbesserungen einzuführen, während sie die grundlegende Nützlichkeit und Kompatibilität mit Java beibehält. In ihren Anfängen folgte sie den Richtlinien von ECMAScript.

Im Jahr 2010 wurde Gosu der Community in der Version 0.7 Beta vorgestellt, gefolgt von Version 0.8 Beta im Dezember 2010 und Version 0.8.6 Beta Mitte 2011. Letztere führte zusätzliche Funktionen ein, wie die Fähigkeit, XML-Schemadefinitionsdateien und XML-Dokumente als native Gosu-Typen zu laden. Die neueste verfügbare Version ist Gosu 1.10, die im Januar 2016 veröffentlicht wurde und gleichzeitig mit einem neuen IntelliJ-IDEA-Editor-Plugin herauskam.

Guidewire setzt Gosu weiterhin intensiv in seinen InsuranceSuite-Anwendungen ein. Obwohl Guidewire beschlossen hat, die Entwicklung neuer Konstrukte für die Gosu-Programmiersprache vorerst einzufrieren, bleibt Gosu ein integraler Bestandteil der Softwareentwicklung in dieser Branche.

Die Syntax von Gosu zeigt Einflüsse aus verschiedenen anderen Programmiersprachen. Zum Beispiel sind Deklarationen eher pascal ähnlich, wobei der Name zuerst steht. Gosu-Klassen können Funktionen, Felder, Eigenschaften und innere Klassen als Mitglieder enthalten. Das Typsystem unterstützt nominelle Vererbung, Komposition per Delegation sowie strukturelle Typisierung, ähnlich wie in der Go-Programmiersprache.[5]

Philosophy

Die Sprache wurde von Scott McKinney entwickelt, der auch die Rolle des Entwicklungsleiters innehat. McKinney betont bei der Gestaltung von Gosu den Pragmatismus, der sich in Aspekten wie Lesbarkeit und Auffindbarkeit widerspiegelt. Das statische Typsystem von Gosu ist ein integraler Bestandteil der Sprache.[6]

Verwendung

Die Programmiersprache wird hauptsächlich in den kommerziellen Produkten von Guidewire Software verwendet.

Syntax

Dateitypen

Gosu unterstützt mehrere Dateitypen:

  • Klassen (.gs-Dateien)
  • Programme (.gsp-Dateien)
  • Erweiterungen (*.gsx-Dateien)
  • Vorlagen (*.gst-Dateien)

Zusätzlich zu den Standardklassentypen unterstützt Gosu Enums, Interfaces, Strukturen und Annotationen.

Variablen und Typdeklarationen

Gosu ist statisch typisiert, verwendet jedoch Typinferenz, um den Großteil des normalerweise mit statischer Typisierung verbundenen Syntaxoverheads zu eliminieren.

var zeichenkette = "Wikipedia" // ein String(Zeichenkette)
var zahl = 1 // eine Zahl
var foo : String = null // Typ muss deklariert werden, da er nicht inferiert werden kann

Operatoren

Gosu unterstützt die standardmäßigen Java-Operatoren mit einigen geringfügigen Einschränkungen:[3][7]

//Genau wie die Java-Operatoren, außer dass sie nicht innerhalb einer anderen Anweisung verwendet werden können.
++ / --
//Testet auf Objektgleichheit, genau wie .equals()
==
//Testet auf Instanzgleichheit
===
// Ungleichheit
<>
!=
//Standardvergleichssemantik, die auch auf Objekte von java.lang.Comparable funktioniert
<, >, =

Schleifen

Die for-Schleife in der Gosu-Programmiersprache ermöglicht es Entwicklern, eine bestimmte Anweisungssequenz wiederholt auszuführen, wobei sie die Kontrolle über den Iterationsprozess haben. Ein Gosu Beispiel: [3]

var list = { "one", "two", "three" } /erstellt eine java.lang.List<String>
 for ( num in list ) {
   print( num )
 }

Switch

Die switch-Anweisung in Gosu kann jedes Objekt testen, wobei am Ende ein spezieller Standardfall (default case) vorgesehen ist.[3]

var x = "b"

switch (x) {
  case "a":
    print("a")
    break
  case "b":
    print("b")
    break
  default:
    print("c")
}

Weblinks

Einzelnachweise

  1. Release 1.17.9. 17. April 2024 (abgerufen am 23. April 2024).
  2. github.com. (abgerufen am 27. Dezember 2020): „Gosu is released under version 2.0 of the Apache License.
  3. a b c d Gosu Programming Language. 24. September 2020, abgerufen am 11. September 2023 (amerikanisches Englisch).
  4. P&C Insurance Software & Technology. Abgerufen am 11. September 2023 (amerikanisches Englisch).
  5. Gosu (Programmiersprache). Abgerufen am 11. September 2023 (englisch).
  6. Gosu – Die skriptbare Universalsprache mit offenem Typsystem [Pirates of the JVM]. 4. Mai 2017, abgerufen am 11. September 2023 (deutsch).
  7. The Gosu Programming Language. Abgerufen am 11. September 2023.