토파즈 소개

코드가 시가 되는 언어, 토파즈를 만나보세요. 한글과 영어가 자연스럽게 어우러지는 현대적이고 표현력 풍부한 프로그래밍 언어입니다.

안내: 이 문서는 토파즈 v4(현재 기본 버전)를 기준으로 작성되었습니다.

"코드가 시가 되는 언어" - 토파즈에 오신 것을 환영합니다! 🌟 v4

토파즈는 한글이 1등 시민인 현대적 프로그래밍 언어입니다. 최소한의 코드로 최대한의 표현력을 추구하며, 개발자가 생각하는 방식 그대로 코드를 작성할 수 있도록 설계되었습니다.

안내
본 문서는 공개 열람이 가능하며, 설치와 일부 도구는 스튜디오 헤이즈 내부 채널을 통해 제공됩니다.

리나 코드 연동
토파즈는 리나 코드가 제공하는 30여개 입출력 언어 중 하나이며, 해당 변환을 구동하는 CSKernel™ 시맨틱 코어 개발에 활용됩니다.

🎯 토파즈만의 특별함

완벽한 한글 지원

function 인사하기(이름: string, 언어: string = "한국어") -> string {
    match 언어 {
        case "한국어" => "안녕하세요, {이름}님! 👋"
        case "English" => "Hello, {이름}! 👋"
        case "日本語" => "こんにちは、{이름}さん! 👋"
    }
}

let 사용자 = "김토파즈"
let 인사말 = 인사하기(사용자)
print(인사말)  // "안녕하세요, 김토파즈님! 👋"

시처럼 흐르는 파이프라인

let 분석결과 = 원본데이터
    |> 정규화(표준: "UTF-8")
    |> 필터링(조건: x => x.유효성검사())
    |> 그룹화(기준: x => x.카테고리)
    |> 집계(방식: 평균)
    |> 시각화(차트: "막대그래프")

똑똑한 타입 시스템

// 강력한 타입 추론 - 타입을 명시하지 않아도 안전!
let 나이 = 25              // int로 자동 추론
let 이름 = "김토파즈"       // string으로 자동 추론
let 복잡한구조 = {         // 구조까지 완벽하게 추론
    id: 1,
    tags: ["web", "api"]
}

// 리터럴 타입으로 더욱 안전하게
type 신호등 = "빨강" | "노랑" | "초록"
type HTTP상태 = 200 | 404 | 500

function 신호처리(색: 신호등) {
    match 색 {
        case "빨강" => 정지()
        case "노랑" => 주의()          
        case "초록" => 출발()
        // 컴파일러가 모든 경우를 확인해줘요!
    }
}

🚀 핵심 철학

"Write Less, Express More"

최소한의 코드로 최대한의 표현력을 추구합니다. 복잡한 로직도 읽기 쉽고 이해하기 쉽게 작성할 수 있습니다.

글로벌 문법, 로컬 표현

키워드는 영어로 통일하되, 변수명과 함수명은 한글, 영어, 심지어 이모지까지 자유롭게 사용할 수 있습니다.

모든 것은 표현식

if, match, for, try 등 모든 구문이 값을 반환합니다. 이로 인해 더욱 함수형 프로그래밍다운 코드를 작성할 수 있습니다.

🧩 네이티브 시스템 프로파일

  • 네이티브 실행과 예측 가능한 성능, 제로코스트 추상화
  • 소유권/차용과 결정적 자원 관리(defer)
  • 태스크/채널 등 동시성 프리미티브와 명확한 효과 모델
  • Rust/C와의 FFI 연동(내부 툴체인이 링크를 관리)

동시성 한눈에 보기

let 프로필요약 = concurrent(timeout: 5s) {
    프로필: API.프로필조회(사용자ID)?
    활동: API.최근활동(사용자ID)?
    추천: 추천엔진.생성(사용자ID)
} else {
    {
        프로필: 캐시.프로필(사용자ID),
        활동: [],
        추천: []
    }
}

match 프로필요약 {
    case Ok(데이터) => log.info("추천 {데이터.추천.length}건 준비 완료")
    case Err(이유) => log.warn("캐시 프로필 제공: {이유}")
}

개념 미리보기
네이티브 FFI와 저수준 소켓 API는 이후 단계에서 문서화되며 안정화 후 안내될 예정입니다.

🌈 실제 코드 맛보기

간단한 웹 API 서버

웹서버.생성(포트: 8080)
    .미들웨어(인증.JWT검증)
    .미들웨어(로깅.요청추적)
    .경로("/api/사용자", 메서드: GET) { 요청, 응답 =>
        let 사용자목록 = DB.사용자.전체조회()
        응답.JSON(사용자목록)
    }
    .경로("/api/사용자/{id}", 메서드: GET) { 요청, 응답 =>
        match DB.사용자.찾기(요청.매개변수.id) {
            case Some(사용자) => 응답.JSON(사용자)
            case None => 응답.오류(404, "사용자를 찾을 수 없습니다")
        }
    }
    .시작()

데이터 처리 파이프라인

let 매출분석 = 파일.읽기("2024_매출.csv")
    |> CSV.파싱(첫행은헤더: true)
    |> 필터(행 =>.매출 > 1000000)
    |> 그룹화(행 =>.지역)
    |> 각그룹(그룹 => {
        지역: 그룹.키,
        총매출: 그룹..합계(행 =>.매출),
        평균매출: 그룹..평균(행 =>.매출)
    })
    |> 정렬(내림차순:=>.총매출)

🎁 혁신적인 기능들

자동 비동기 처리

// 모든 I/O가 자동으로 비동기 처리되지만 동기처럼 작성!
function 사용자정보가져오기(id: int) -> User {
    let 사용자 = API.사용자조회(id)            // 자동 비동기
    let 프로필 = API.프로필조회(사용자.프로필ID)  // 자동 비동기
    let 활동내역 = API.활동내역조회(id)         // 자동 비동기
    
    return User {
        기본정보: 사용자,
        프로필: 프로필,
        활동: 활동내역
    }
}

우아한 에러 처리

// Result 타입과 ? 연산자로 간단하게
function 안전한파일처리(경로: string) -> Result<Data, Error> {
    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주면 실무에서 사용할 수 있을 정도로 학습하기 쉽습니다.

토파즈와 함께 코딩이 시가 되는 경험을 시작해보세요!