말하는 방법은하나.

애플리케이션의 의도를 간결하고 일관된 문법으로 표현하는 프로그래밍 언어.

Topaz 살펴보기

언어 매뉴얼, 도구 모음, 프로젝트 이야기.

언어를 배우고, 필요한 실행 대상을 고르고, Topaz가 발전해 온 과정과 앞으로의 계획을 살펴보세요.

지금 실행하면 아래와 같은 결과를 얻습니다.

TOPAZ
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, 셸, 경로 템플릿이 원문과 값이 들어갈 자리를 구분해 보존합니다.

실행 가능한 명세

사람이 읽기 쉽고, 컴퓨터가 그대로 실행할 수 있습니다.

Topaz는 애플리케이션 의도를 간결하게 표현하는 유니코드 우선 언어입니다. 사람과 코드 생성 도구가 같은 문법을 사용하며, 작성한 프로그램을 바로 실행하거나 Rust·Python·웹 산출물로 만들 수 있습니다.

철학 읽기 →

코드가 주인공이다.

TOPAZ
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
TOPAZ
let result = concurrent {
    answer: 6 * 7
    status: "ready"
}

defer print("cleaned up")
print("{result.answer} {result.status}")
출력
42 ready
cleaned up
TOPAZ
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]
TOPAZ
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!]

어느 언어든, 같은 코드.

한국어

TOPAZ
function 인사하기(이름: string) -> string {
    return "안녕하세요, {이름}님!"
}

print(인사하기("토파즈"))
출력
안녕하세요, 토파즈님!

English

TOPAZ
function greet(name: string) -> string {
    return "Hello, {name}!"
}

print(greet("Topaz"))
출력
Hello, Topaz!

Русский

TOPAZ
function привет(имя: string) -> string {
    return "Привет, {имя}!"
}

print(привет("Топаз"))
출력
Привет, Топаз!

오늘 동작하는 것

의도는 당신이 쓰고, 컴파일러는 Rust와 Python을 만든다.

파서

사용 가능 — 예제 69개 검사

모듈 해석기

사용 가능 — 여러 파일로 구성된 프로그램

인터프리터

사용 가능 — 이 페이지의 모든 프로그램 실행

Rust 백엔드

사용 가능 — Rust 소스와 네이티브 프로그램 생성

Python 백엔드

사용 가능 — Python 소스와 실행 지원 파일 생성

사용자 정의 열거형

사용 가능 — 빠짐없이 검사하는 match