s4g краткое описание

Вот и настает момент выпуска первой публичной версии нашего скриптового языка программирования s4g 0.9.2. Осталось синхронизировать последние изменения, доделать сайт, поправить документацию и можно выпускать в свет, а пока мы все это делаем я хотел бы рассказать немного о этом языке.

Ссылка на сайт языка

s4g (script for engine) — высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++ (11).

s4g создавался как мощный, гибкий, быстрый и простой скриптовый язык (конечно же в балансе всего этого), предоставляющий достаточные выразительные средства для решения различных задач.

Старались изо всех сил, но пока смогли сделать только версию 0.9.2 (30.09.2017), так как еще до релизной версии не дотягивает, хотя уже на данный момент имеет уже более значительную стабильность по сравнению с предыдущими версиями.

Итак, что же это такое?

Это open source проект, лицензия MIT с некоторыми дополнениями (незначительными), можете брать и использовать. А можете взять да и поучаствовать в его доработке, и Ваше имя будет увековечено)) Либо можете подсматривать и делать что-то свое.

Для чего же мы его делали? Все дело в том что мы любим изобретать велосипеды))

Основное его использование планировали в своем движке SkyXEngine чтобы вынести логику игрового движка. Внедрять будем очень постепенно, так как еще много дел с самим движком.

Раз уж хотим использовать в движке где real-time рендер то скорость исполнения скриптов должна быть быть достаточно высокой, а так как игра это достаточно длительное, по времени работы программа, то контроль памяти должен быть очень стабильным. Над всем этим мы работали.

Сборщик мусора собирает мусор (ненужные объекты в памяти, выделенные скриптоввой системой) на основании достижимости объектов из текущих контекстов исполнения. То есть если до переменной можно дойти из текущего окружения значит она еще нужна, иначе удаляем.

Скорость исполнения мы отточили еще в 0.9.1 (не идеал конечно, но вполне сносно для первого раза), однако в этой версии, сделали больший упор на удобство разработки скриптовой системы, и как ни странно получили еще прирост в скорости исполнения.Так же сделали оптимизатор АСТ, что тоже сказалось на скорости работы в лучшую сторону.

Язык предоставляет все необходимые средства (языковые) для работ:

  • препроцессор как в C++
  • переменные (с контролем доступа и объявления)
  • функции (а также замыкания)
  • таблицы, массивы
  • управляющие конструкции (if/else, for, while, do while)
  • классы с возможностью наследования
  • а также экспорт переменных, функций, классов из C++ в скриптовую систему

Хорошо поработали над API, так как сами при работе с некоторыми языками испытывали некоторые неудобства из-за непонимания сути происходящего. В дальнейшем конечно же надо будет делать что-то типа высокоуровневой обертки.

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

Написали документацию, и сгенерировали еще одну из комментариев, так что думаю что изучение языка будет намного легче, ибо есть комментарии))

Провели некоторые тесты, конечно же их должно быть больше чем мы сделали, но постепенно сделаем.

Наметили планы на следующую версию, работы еще вполне хватает, но уже сейчас этот язык можно использовать.

Кстати это первый наш проект в котором мы опробовали наш стандарт оформления кода, в итоге код получился намного красивее, а его работа стала понятнее.

А вообще надо еще эту версию нормально опубликовать))

Поделиться:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*