Язык программирования Аргентум
(Argentum programming language: aglang.org)
Пару месяцев назад я начал новый проект - это язык программирования Argentum.
А как же Фламберг, спросите вы и будете совершенно правы. Фламберг был хорошим оценочным проектом, на котором обкатались идеи, многие из которых стали основой Аргентума - это объектная модель, интерполяция строк, легковесные лямбды. Вместе с тем было выброшено и переделано все, что мешает в больших структурированных проектах - синтаксис основанный на отступах, модульность через текстовые инклуды, тяжелый interop с Си.
Итак новый язык:
- Работает без сборщика мусора, поэтому не запинается в лучайные моменты времени, не жрет двух- трехкратный объем памяти, и не тратит лишнего процессорного времени.
- Гарантированно удаляет объекты в предсказуемые моменты времени.
- Гарантирует отсутствие утечек памяти (в отличие от Java, Rust, Swift и т.д.)
- Язык безопасен:
- Проверки типов -только динамические (но очень быстрые).
- Синтаксически невозможно обратиться по null-указателю или optional none.
- Нет висящих ссылок, и двойного удаления объектов.
- Нет race между потоками.
- Изменяемые объекты не могут шарится между иерархиями объектов, а разделяемые объекты не могут изменяться.
- Неизменяемость объектов - гарантирована. Нет const_cast, нет взлома финальности через рефлексию.
- Язык очень быстр:
- Прямая компиляция в машинный код.
- Динамическая проверка типов - пара машинных инструкций.
- Вызов методов интерфейса и приведение к интерфейсу имеет такой же порядок сложности, что и вызов обычного метода класса.
- Работа с делегатами и лямбдами не требует аллокаций.
- Счетчики в шареных объектах не используют атомарные инструкции (вообще примитивы синхронизации используются только при передаче объектов между пртоками).
- Язык компактен (hello_world.exe может быть собран в 12Kb без дополнительных DLL).
- Программа на Аргентуме может напрямую вызывать код на Си.