Files
fz-lang/docs/ru/philosopy.md
T

3.2 KiB
Raw Blame History

Философия языка

Язык FZLang преследует две цели при разработке: "быть удобным, как инструмент, но всегда оставаться предсказуемым".

Вот, какими путями язык пытается достичь этой философии:

В отношении к памяти и ресурсам

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

В модели scope-based RAII, которая используется в том числе в FZLang, память детерминирована. Любой объект имеет область, которая им владеет, а как только область уничтожается - объект уничтожается вместе с ней. Время отклика таком подходе равное и предсказуемое.

Ещё один плюс, который предоставляет модель scope-based RAII - это работа с ресурсами (сокеты, файлы). Проблема освобождения ресурсов решается чистой семантикой области видимости: умирает скоуп - очищается всё, что к нему привязано.

И последним аргументом в сторону scope-based RAII стало отстутствие оверхеда на рантайм. Полноценному GC для работы нужны карты памяти, фоновые потоки, барьеры чтения и записи. В FZLang виртуальная машина весит очень мало, а вся память освобождается по ходу чтения инструкций.

В отношении синтаксиса

Язык FZLang намеренно не упрощается некоторые детали синтаксиса. Например, при обращении к экземпляру класса в его методах, использование this является обязательным, как и указание типов при декларациях, - это строгая часть. Однако, объявление функции без возвращаемого типа позволяет опускать тип, так как писать на месте типа постоянно void было бы избыточно.

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