Genie - это современный универсальный язык программирования высокого уровня, разрабатываемый с 2008 года. [1] Он был разработан как альтернативный, более простой и понятный диалект для компилятора Vala , сохраняя при этом ту же функциональность, что и язык Vala. Genie использует тот же компилятор и библиотеки, что и Vala; эти два действительно могут использоваться вместе друг с другом. [2] Различия только синтаксические.
Парадигма | мультипарадигма : императивная , структурированная , объектно-ориентированная |
---|---|
Разработано | Джейми МакКракен |
Впервые появился | 2008 |
Стабильный выпуск | 0.52.3 / 1 мая 2021 г . |
Печатная дисциплина | статичный , сильный |
Операционные системы | Кроссплатформенность (каждая платформа поддерживается GLib ) |
Лицензия | LGPLv2.1 + |
Расширения имени файла | .gs |
Веб-сайт | wiki |
Под влиянием | |
Python , Boo , D , Object Pascal |
Синтаксис Genie заимствован из множества современных языков, таких как Python , Boo , D и Delphi . В духе Паскаля и Python Genie использует отступы, а не фигурные скобки для разделения блоков .
Как и Vala, Genie использует систему типов GObject для создания классов и интерфейсов, объявленных в исходном коде Genie, без дополнительных требований времени выполнения (то есть, в отличие от Python, Java или C #, он не требует виртуальной машины ).
Genie обеспечивает доступ к библиотекам C , особенно к тем, которые основаны на GObject (например, GTK ), без использования другого двоичного интерфейса приложения (ABI). Во время компиляции код сначала транслируется в исходный код C и файлы заголовков, которые затем компилируются в машинный код для конкретной платформы с использованием любого доступного компилятора C, такого как GCC , что позволяет разрабатывать кроссплатформенное программное обеспечение.
Программы, разработанные на Vala и Genie, не зависят от среды рабочего стола GNOME , обычно для этого требуется только GLib .
Примеры кода
"Привет мир"
В этом примере для отступа явно используются четыре пробела.
[indent = 4]в этом печать "Привет, мир!"
Объекты
Без явного объявления отступа по умолчанию используются вкладки.
класс Sampledef run ()stdout.printf ("Привет, мир! \ n")в этомvar sample = new Sample ()sample.run ()
Критика
По состоянию на 2013 год[Обновить], Genie для циклов включены, что затрудняет обработку пустых списков: [3]
вар л = новый список из строки , если л . size > 0 для var i = 0 to ( l . size - 1 ) print l . @ получить ( я )
Однако списки можно перебирать легко и просто с помощью конструкции for-in: [4]
вар л = новый список из строки для с в л : печать с
Рекомендации
- ^ Джейми Мак - Кракен (2008). «Представляем Genie - умный язык программирования» . Архивировано из оригинала на 2011-08-18.
- ^ Использование Genie и Валу вместе
- ^ Таль Лирон (11 января 2013 г.). Джинн . Событие происходит в 32:29.
- ^ https://wiki.gnome.org/Projects/Genie#Lists_.28Gee.27s_ArrayList.29
Внешние ссылки
- Официальный веб-сайт
- Страница Барри Каулера о Genie at the Wayback Machine (архивировано 17 февраля 2010 г.)
- Использование языка программирования Genie в Puppy Linux
- Puppy Linux: программирование на Vala и Genie
- Документация по API
- поиск проектов на github, написанных на genie