Компактный язык для прикладных программ с единообразным и понятным синтаксисом.
Познакомьтесь с Topaz
Изучите язык, выберите цель сборки и узнайте, как развивался Topaz и что запланировано дальше.
Грамматика, типы, управление, модули, стандартная библиотека, среда выполнения и примеры.
Читать руководство →02Командный инструмент, выполнение, Rust, Python, web, WASM, пакеты и текущая поддержка.
Изучить инструментарий →03История выпусков v5, текущие планы и подробные материалы Topaz Classic.
Открыть историю →Запустите программу сейчас и получите показанный результат.
function clean(words: Array<string>) -> Array<string> {
return filter(words, (w: string) => w != "")
}
function shout(words: Array<string>) -> Array<string> {
return map(words, (w: string) => w + "!")
}
let line = ["one", "", "way", "", "to", "say", "it"]
|> clean
|> shout
print("{line}")[one!, way!, to!, say!, it!]
Одна предпочтительная форма делает код проще для чтения.
Слова предметной области остаются кодом: 한글, кириллица, эмодзи.
Люди и генераторы кода используют один синтаксис и проходят одну проверку.
Шаблоны SQL, shell и путей отдельно сохраняют текст и места подстановки.
Достаточно понятная для чтения и достаточно точная для выполнения.
Topaz — компактный язык для прикладных программ с поддержкой Unicode. Люди и генераторы используют один синтаксис; программу можно выполнить напрямую или преобразовать в Rust, Python и web-форматы.
Читать философию →function discount(customer: { tier: string, years: int }) -> float {
return match customer {
case { tier: "vip", years } if years > 5 => 0.3
case { tier: "vip" } => 0.2
case { years } if years > 1 => 0.1
case _ => 0.0
}
}
print("{discount({ tier: "vip", years: 7 })}")
print("{discount({ tier: "new", years: 0 })}")0.3 0.0
let result = concurrent {
answer: 6 * 7
status: "ready"
}
defer print("cleaned up")
print("{result.answer} {result.status}")42 ready cleaned up
function fibonacci(n: int) -> int {
return match n {
case 0 => 0
case 1 => 1
case _ => fibonacci(n - 1) + fibonacci(n - 2)
}
}
let series = map(0..<10, fibonacci)
print("{series}")[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
function clean(words: Array<string>) -> Array<string> {
return filter(words, (w: string) => w != "")
}
function shout(words: Array<string>) -> Array<string> {
return map(words, (w: string) => w + "!")
}
let line = ["one", "", "way", "", "to", "say", "it"]
|> clean
|> shout
print("{line}")[one!, way!, to!, say!, it!]
function 인사하기(이름: string) -> string {
return "안녕하세요, {이름}님!"
}
print(인사하기("토파즈"))안녕하세요, 토파즈님!
function greet(name: string) -> string {
return "Hello, {name}!"
}
print(greet("Topaz"))Hello, Topaz!
function привет(имя: string) -> string {
return "Привет, {имя}!"
}
print(привет("Топаз"))Привет, Топаз!
Замысел пишете вы. Компилятор выдаёт Rust и Python.
Доступно — 69 образцов сайта проверено парсером
Доступно — многофайловые юниты
Доступно — все программы на этой странице выполняются
Доступно — создаёт Rust и нативные программы
Доступно — создаёт Python и файл поддержки среды выполнения
Доступно — исчерпывающая проверка match