О Топазе

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

Принципы Топаза: единообразный синтаксис, явные эффекты, поддержка Unicode и переносимое поведение.

Топаз рассматривает программу как исполняемое выражение намерения, достаточно понятное для проверки человеком и достаточно точное для выполнения. Цель языка — не количество синтаксических вариантов, а прямой и единообразный код.

Одна понятная форма

Для типовой задачи предусмотрена одна предпочтительная форма. Имена предметной области можно писать в Unicode, эффекты и ошибки остаются видимыми, а незавершённые идеи не попадают в примеры. Поэтому написанный человеком код и сгенерированный код читаются одинаково.

Предсказуемое выполнение

Если выбранная целевая платформа поддерживает программу, один и тот же исходный код должен сохранять предсказуемое поведение при прямом выполнении, сборке в нативное приложение и генерации кода Python. Текущая SPEC определяет значения, порядок вычислений, ошибки и освобождение ресурсов, не навязывая внутреннее устройство реализации. Целевая платформа, которая не может обеспечить обязательное поведение, должна явно отклонить программу.

Несколько полезных форматов вывода

Форматы Rust, Python и Web решают разные задачи доставки, не создавая отдельных диалектов Топаза. После проверки программа передаётся только поддерживающей её целевой платформе. Неподдерживаемая форма отклоняется, а не получает особый смысл. Расхождения между целевыми платформами, принявшими один и тот же исходный код, считаются ошибками компилятора.

Малая поверхность, глубокая политика

Лаконичная грамматика и стандартная библиотека дают читателям, инструментам и реализациям единый ориентир. Новая возможность считается готовой, когда определено её поведение, действуют реализации и опубликована документация с примерами.

Развитие на основе реальных программ

Поддерживаемые приложения показывают, каких операций со строками, числами, коллекциями, файлами, пакетами и диагностикой не хватает. Интеграция Лиспекса и LIT, сокращения от Lispex-in-Topaz, также проверяет рекурсию, переносимые значения, состояние, вывод и ошибки. Практический опыт применения задаёт приоритеты, но не оправдывает разовый синтаксис.

Понятный статус

Документация разграничивает возможности текущего выпуска и планы на будущее. Ограничения описываются там, где они важны пользователю, без публикации внутренних деталей разработки.

Связанная документация