Примечание: эта документация соответствует Топазу v4 (текущая версия по умолчанию).
"Язык, где код становится поэзией" - Добро пожаловать в Топаз! 🌟 v4
Топаз - это современный язык программирования, где русский язык является гражданином первого класса. Он стремится к максимальной выразительности при минимальном количестве кода, разработанный так, чтобы разработчики могли писать код именно так, как они думают.
Доступ
Документация открыта для чтения. Часть установочных потоков и инструментов доступна инженерам Studio Haze через внутренние каналы.
Интеграция с ЛИНА код
Топаз входит в перечень из более 30 входных/выходных языков платформы ЛИНА код и используется при разработке семантического ядра CSKernel™, обеспечивающего эти преобразования.
🎯 Что делает Топаз особенным
Идеальная поддержка русского языка
function приветствие(имя: string, язык: string = "русский") -> string {
match язык {
case "русский" => "Привет, {имя}! 👋"
case "английский" => "Hello, {имя}! 👋"
case "한국어" => "안녕하세요, {имя}님! 👋"
case "español" => "¡Hola, {имя}! 👋"
case "français" => "Salut, {имя}! 👋"
}
}
let пользователь = "Алексей"
let привет = приветствие(пользователь)
print(привет) // "Привет, Алексей! 👋"
Поэтические конвейеры
let результатАнализа = исходныеДанные
|> нормализовать(стандарт: "UTF-8")
|> фильтровать(условие: x => x.действителен())
|> группировать(критерий: x => x.категория)
|> агрегировать(метод: среднее)
|> визуализировать(график: "столбчатый")
Умная система типов
// Мощный вывод типов - безопасность без явного указания типов!
let возраст = 25 // выводится как int
let имя = "Топаз" // выводится как string
let сложнаяСтруктура = { // структура полностью выведена
id: 1,
теги: ["веб", "api"]
}
// Литеральные типы для дополнительной безопасности
type СветофорЦвет = "красный" | "жёлтый" | "зелёный"
type HTTPСтатус = 200 | 404 | 500
function обработатьСигнал(цвет: СветофорЦвет) {
match цвет {
case "красный" => стоп()
case "жёлтый" => осторожно()
case "зелёный" => ехать()
// Компилятор проверяет, что все случаи покрыты!
}
}
🚀 Основная философия
"Писать меньше, выражать больше"
Стремиться к максимальной выразительности при минимальном количестве кода. Даже сложную логику можно написать читаемо и понятно.
Глобальный синтаксис, локальное выражение
Ключевые слова унифицированы на английском языке, но имена переменных и функций можно свободно использовать на любом языке, включая русский, английский и даже эмодзи.
Всё является выражением
Все конструкции типа if, match, for, try возвращают значения, что позволяет писать код в более функциональном стиле.
🧩 Профиль нативных систем
- Нативное исполнение с предсказуемой производительностью и нулевой стоимостью абстракций
- Владение/заимствование и детерминированное управление ресурсами (
defer) - Примитивы конкурентности (задачи, каналы) и чёткая модель эффектов
- FFI с Rust/C; внутренний тулчейн управляет линковкой
Конкуррентность одним взглядом
let профиль = concurrent(timeout: 5s) {
данные: API.получитьПрофиль(userId)?
активность: API.получитьАктивность(userId)?
рекомендации: Рекомендации.построить(userId)
} else {
{
данные: кеш.профиль(userId),
активность: [],
рекомендации: []
}
}
match профиль {
case Ok(info) => log.info("Подготовлено рекомендаций: {info.рекомендации.length}")
case Err(причина) => log.warn("Выдан кешированный профиль: {причина}")
}
Концептуальный анонс
Низкоуровневый FFI и сокеты появятся на следующих этапах и будут задокументированы после стабилизации.
🌈 Примеры реального кода
Простой веб-API-сервер
вебСервер.создать(порт: 8080)
.мидлвар(авторизация.JWTПроверка)
.мидлвар(логирование.отслеживаниеЗапросов)
.маршрут("/api/пользователи", метод: GET) { запрос, ответ =>
let списокПользователей = БД.пользователи.найтиВсех()
ответ.JSON(списокПользователей)
}
.маршрут("/api/пользователи/{id}", метод: GET) { запрос, ответ =>
match БД.пользователи.найтиПоИД(запрос.параметры.id) {
case Some(пользователь) => ответ.JSON(пользователь)
case None => ответ.ошибка(404, "Пользователь не найден")
}
}
.запустить()
Конвейер обработки данных
let анализПродаж = файл.прочитать("продажи_2024.csv")
|> CSV.парсить(естьЗаголовок: true)
|> фильтр(строка => строка.выручка > 1000000)
|> группировать(строка => строка.регион)
|> обработатьГруппы(группа => {
регион: группа.ключ,
общаяВыручка: группа.значения.сумма(строка => строка.выручка),
средняяВыручка: группа.значения.среднее(строка => строка.выручка)
})
|> сортировать(поУбыванию: строка => строка.общаяВыручка)
🎁 Революционные возможности
Автоматическая асинхронная обработка
// Весь ввод-вывод автоматически асинхронный, но пишется как синхронный!
function получитьИнфоПользователя(id: int) -> Пользователь {
let пользователь = API.получитьПользователя(id) // авто async
let профиль = API.получитьПрофиль(пользователь.профильИД) // авто async
let активность = API.получитьАктивность(id) // авто async
return Пользователь {
основнаяИнфо: пользователь,
профиль: профиль,
активность: активность
}
}
Элегантная обработка ошибок
// Просто с типом Result и оператором ?
function безопаснаяОбработкаФайла(путь: string) -> Result<Данные, Ошибка> {
let файл = открытьФайл(путь)? // немедленный возврат при ошибке
defer { файл.закрыть() } // гарантированное выполнение
let содержимое = файл.прочитать()?
let данные = JSON.парсить(содержимое)?
let проверенные = данные.проверить()?
Ok(проверенные)
}
Искусство сопоставления с образцом
let процентСкидки = match клиент {
case { уровень: "VIP", суммаПокупки } if суммаПокупки > 1000000 => 0.3
case { уровень: "VIP" } => 0.2
case { датаРегистрации } if сегодня - датаРегистрации > 365.дней => 0.1
case { перваяПокупка: true } => 0.15
case _ => 0.0
}
🎯 Кто использует Топаз?
- Веб-разработчики: Чистые API-серверы и богатые веб-библиотеки
- Аналитики данных: Мощные конвейеры и инструменты визуализации
- Системные разработчики: Производительность и безопасность уровня Rust
- Начинающие: Более простая кривая обучения, чем у Python
- Русскоязычные команды: Идеальная поддержка русского языка
🚀 Начать работу!
Топаз разработан так, чтобы изучить за 1 день, использовать в продакшене за 1 неделю.
- Быстрый старт: Запустите первую программу за 10 минут с нашим руководством Начало работы
- Изучить концепции: Поймите философию Топаза с Основными концепциями
- Создать проекты: Создавайте реальные приложения с Руководствами по проектам
- Полный справочник: Изучите все возможности со Справочником функций
Начните своё путешествие, где программирование становится поэзией с Топазом! ✨