doc: add book,internal,reference,builtins sections
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Философия языка
|
||||
|
||||
Язык FZLang преследует две цели при разработке: "быть удобным, как инструмент, но всегда оставаться предсказуемым".
|
||||
|
||||
Вот, какими путями язык пытается достичь этой философии:
|
||||
|
||||
## В отношении к памяти и ресурсам
|
||||
|
||||
В средах с GC программист точно не знает, в какой момент сборщик мусора решит произвести очистку:
|
||||
объект может висеть секундами после завершения метода.
|
||||
А в момент очистки рантайм может устроить микропаузу, что критично для аудио, игр, сети или встроенных систем.
|
||||
|
||||
В модели scope-based RAII, которая используется в том числе в FZLang, память детерминирована.
|
||||
Любой объект имеет область, которая им владеет, а как только область уничтожается - объект уничтожается вместе с ней.
|
||||
Время отклика таком подходе равное и предсказуемое.
|
||||
|
||||
Ещё один плюс, который предоставляет модель scope-based RAII - это работа с ресурсами (сокеты, файлы).
|
||||
Проблема освобождения ресурсов решается чистой семантикой области видимости: умирает скоуп - очищается всё, что к нему привязано.
|
||||
|
||||
И последним аргументом в сторону scope-based RAII стало отстутствие оверхеда на рантайм.
|
||||
Полноценному GC для работы нужны карты памяти, фоновые потоки, барьеры чтения и записи.
|
||||
В FZLang виртуальная машина весит очень мало, а вся память освобождается по ходу чтения инструкций.
|
||||
|
||||
## В отношении синтаксиса
|
||||
|
||||
Язык FZLang намеренно не упрощается некоторые детали синтаксиса.
|
||||
Например, при обращении к экземпляру класса в его методах, использование `this` является обязательным, как и указание типов при декларациях, - это строгая часть.
|
||||
Однако, объявление функции без возвращаемого типа позволяет опускать тип, так как писать на месте типа постоянно `void` было бы избыточно.
|
||||
|
||||
Таким образом, FZLang старается балансировать между синтаксисом, позволяющим оставаться языку детерминированным и упрощениями, которые действительно уместны.
|
||||
|
||||
Reference in New Issue
Block a user