Госу (язык программирования) - Gosu (programming language)

Госу
РазработчикУчастники Guidewire и открытого исходного кода
Стабильный выпуск
1.14.6 / 5 апреля 2017 г.; 3 года назад (2017-04-05)
Печатная дисциплинастатический
ПлатформаВыполнить на Виртуальная машина Java, статически и динамически компилируется в байт-код
Операционные системылюбая поддерживающая JVM
ЛицензияЛицензия Apache 2.0
Расширения имени файла.gs, .gsp, .gst, .gsx
Интернет сайтгосу-ланг.org
Под влиянием
Ява, C #
Под влиянием
Котлин

Госу это статически типизированный язык программирования общего назначения что работает на Виртуальная машина Java. Его влияния включают Ява, C #, и ECMAScript. Разработка Gosu началась в 2002 году. Программное обеспечение Guidewire, и язык был впервые выпущен сообществом в 2010 году под Apache 2 лицензия.[1]

Gosu может служить языком сценариев, имея типы программ произвольной формы (файлы .gsp) для сценариев, а также статически проверенные файлы шаблонов (файлы .gst). Gosu может дополнительно выполнять эти и все другие типы непосредственно из исходного кода без предварительной компиляции, что также отличает его от других статических языков.

История

Gosu начал свою деятельность в 2002 году как скриптовый язык под названием GScript в компании Guidewire Software. Он использовался для настройки бизнес-логика в приложениях Guidewire и представлял собой более простой язык определения правил. В своем первоначальном воплощении он последовал ECMAScript руководящие указания. Guidewire улучшила язык сценариев в течение следующих 8 лет и выпустила бета-версию Gosu 0.7 для сообщества в ноябре 2010 года. Бета-версия 0.8.6 была выпущена в декабре 2010 года, а бета-версия 0.8.6 была выпущена в середине 2011 года с дополнительными загрузчиками типов, что сделало Gosu способным загрузки Определение схемы XML файлы и XML-документы как собственные типы Gosu. Последняя версия - 1.10, выпущенная в январе 2016 года, вместе с новым плагином редактора IntelliJ IDEA.

Философия

Создатель и руководитель разработки языка Gosu Скотт МакКинни подчеркивает прагматизм, заключающийся в удобочитаемости и удобочитаемости, как главенствующий принцип, определяющий дизайн языка.[2] Например, богатая система статических типов Госу - необходимый ингредиент для создания лучших в своем классе инструментов с помощью статический анализ программирования, богатая обратная связь парсера, завершение кода, детерминированный рефакторинг, анализ использования, навигация и тому подобное.

Синтаксис и семантика

Госу следует синтаксису, напоминающему комбинацию других языков. Например, объявления следуют больше по строкам Паскаль с грамматикой по первому имени. Классы Gosu могут иметь в качестве членов функции, поля, свойства и внутренние классы. Номинальное наследование и композиция через делегирование встроены в систему типов, а также в структурную типизацию, аналогичную Идти язык программирования.

Gosu поддерживает несколько типов файлов:

  • Класс (файлы .gs)
  • Программа (файлы .gsp)
  • Улучшение (файлы * .gsx)
  • Шаблон (файлы * .gst)

В дополнение к стандартным типам классов Gosu поддерживает перечисления, интерфейсы, структуры и аннотации.

Программные файлы упрощают использование Gosu в качестве языка сценариев. Например, Hello, World! это простая однострочная программа:

Распечатать("Привет, мир!")

Классы Gosu также исполняются а-ля Java:

учебный класс Главный {  статический функция главный(аргументы: Нить[]) {    Распечатать("Привет, мир!")  }}

Типы данных

Уникальной особенностью Gosu является его система открытых типов, которая позволяет легко расширять язык для обеспечения проверки во время компиляции и осведомленности IDE об информации, которая обычно проверяется только во время выполнения на большинстве других языков. Усовершенствования позволяют добавлять дополнительные функции и свойства к другим типам, включая встроенные типы Java, такие как String, List и т. Д. В этом примере демонстрируется добавление функции print () к java.lang.String.

улучшение MyStringEnhancement : Нить {  функция Распечатать() {    Распечатать(это)  }}

Теперь вы можете указать String печатать себя:

"Эхо".Распечатать()

Сочетание закрытие а улучшения обеспечивают мощный способ кодирования с помощью коллекций. В Gosu накладные расходы на потоки Java не нужны:

вар список = {1, 2, 3}вар результат = список.куда(\ элем -> элем >= 2)Распечатать(результат)

Использует

Этот язык программирования общего назначения используется в основном в Программное обеспечение Guidewire коммерческие продукты.

Рекомендации

  1. ^ "Открытый доступ к языку программирования Gosu". Slashdot. 2010-11-09.
  2. ^ «Язык месяца: Госу». Журнал доктора Добба. 2012-12-07.

дальнейшее чтение

внешняя ссылка