# Философия языка Язык FZLang преследует две цели при разработке: "быть удобным, как инструмент, но всегда оставаться предсказуемым". Вот, какими путями язык пытается достичь этой философии: ## В отношении к памяти и ресурсам В средах с GC программист точно не знает, в какой момент сборщик мусора решит произвести очистку: объект может висеть секундами после завершения метода. А в момент очистки рантайм может устроить микропаузу, что критично для аудио, игр, сети или встроенных систем. В модели scope-based RAII, которая используется в том числе в FZLang, память детерминирована. Любой объект имеет область, которая им владеет, а как только область уничтожается - объект уничтожается вместе с ней. Время отклика таком подходе равное и предсказуемое. Ещё один плюс, который предоставляет модель scope-based RAII - это работа с ресурсами (сокеты, файлы). Проблема освобождения ресурсов решается чистой семантикой области видимости: умирает скоуп - очищается всё, что к нему привязано. И последним аргументом в сторону scope-based RAII стало отстутствие оверхеда на рантайм. Полноценному GC для работы нужны карты памяти, фоновые потоки, барьеры чтения и записи. В FZLang виртуальная машина весит очень мало, а вся память освобождается по ходу чтения инструкций. ## В отношении синтаксиса Язык FZLang намеренно не упрощается некоторые детали синтаксиса. Например, при обращении к экземпляру класса в его методах, использование `this` является обязательным, как и указание типов при декларациях, - это строгая часть. Однако, объявление функции без возвращаемого типа позволяет опускать тип, так как писать на месте типа постоянно `void` было бы избыточно. Таким образом, FZLang старается балансировать между синтаксисом, позволяющим оставаться языку детерминированным и упрощениями, которые действительно уместны.