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

32 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Философия языка
Язык FZLang преследует две цели при разработке: "быть удобным, как инструмент, но всегда оставаться предсказуемым".
Вот, какими путями язык пытается достичь этой философии:
## В отношении к памяти и ресурсам
В средах с GC программист точно не знает, в какой момент сборщик мусора решит произвести очистку:
объект может висеть секундами после завершения метода.
А в момент очистки рантайм может устроить микропаузу, что критично для аудио, игр, сети или встроенных систем.
В модели scope-based RAII, которая используется в том числе в FZLang, память детерминирована.
Любой объект имеет область, которая им владеет, а как только область уничтожается - объект уничтожается вместе с ней.
Время отклика таком подходе равное и предсказуемое.
Ещё один плюс, который предоставляет модель scope-based RAII - это работа с ресурсами (сокеты, файлы).
Проблема освобождения ресурсов решается чистой семантикой области видимости: умирает скоуп - очищается всё, что к нему привязано.
И последним аргументом в сторону scope-based RAII стало отстутствие оверхеда на рантайм.
Полноценному GC для работы нужны карты памяти, фоновые потоки, барьеры чтения и записи.
В FZLang виртуальная машина весит очень мало, а вся память освобождается по ходу чтения инструкций.
## В отношении синтаксиса
Язык FZLang намеренно не упрощается некоторые детали синтаксиса.
Например, при обращении к экземпляру класса в его методах, использование `this` является обязательным, как и указание типов при декларациях, - это строгая часть.
Однако, объявление функции без возвращаемого типа позволяет опускать тип, так как писать на месте типа постоянно `void` было бы избыточно.
Таким образом, FZLang старается балансировать между синтаксисом, позволяющим оставаться языку детерминированным и упрощениями, которые действительно уместны.