Gosu (Gosu)
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Gosu | |
---|---|
Класс языка | язык программирования и объектно-ориентированный |
Появился в | 2002 |
Автор | Guidewire Software |
Разработчик | Guidewire and open source contributors |
Выпуск | 1.14.28 (13 октября 2022 ) |
Система типов | Статическая |
Испытал влияние | C# и Java |
Повлиял на | Kotlin |
Лицензия | Apache License |
Сайт | gosu-lang.github.io |
Платформа | Выполняется на Java Virtual Machine, статически и динамически компилируется в Java байткод. |
ОС | поддержка JVM |
Gosu — cтатически-типизированный язык программирования, который запускается на виртуальной машине Java. Этот язык используется в нескольких проектах с открытым исходным кодом SparkGS и Ragnar DB, и широко используется в страховой отрасли в коммерческих продуктах Guidewire Software. Язык вобрал в себя возможности языков Java, C# и ECMAScript. Уникальной особенностью языка, является открытая система типов, которая позволяет легко обеспечить проверку во время компиляции или в IDE. Также язык позволяет создавать как программы общего назначения (файлы .gst), так и скрипты (.gsp-файлы) и выполнять их непосредственно из источника без предварительной компиляции.
Синтаксис
[править | править код]Gosu имеет C-style синтаксис.
Простейшая программа Hello World на Gosu.
class Main {
static function main(args: String[]) {
print("Hello, World!")
// или проще
"Hello, World!".print()
}
}
// второй вариант работает, только если добавлен
enhancement MyStringEnhancement : String {
function print() { print(this) }
}
Пользуясь методами и лямбдами очень легко работать с контейнерными объектами.
var list = {1, 2, 3}
var result = list.where(\elem -> elem >= 2)
print(result)
Классы Gosu могут иметь функции, поля, свойства и внутренние классы в качестве членов. Номинальное наследование и композиция с помощью делегирования встроены в систему типов, а также структурную типизацию. В дополнение к стандартным типам классов Gosu поддерживает перечисления, интерфейсы, структуры и аннотации.