안내: 이 문서는 토파즈 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주면 실무에서 사용할 수 있을 정도로 학습하기 쉽습니다.
- 빠른 시작: 시작하기 가이드로 10분 안에 첫 프로그램 실행
- 개념 학습: 핵심 개념으로 토파즈의 철학 이해
- 실전 프로젝트: 프로젝트 가이드로 실제 애플리케이션 구축
- 완전한 레퍼런스: 함수 레퍼런스로 모든 기능 탐색
토파즈와 함께 코딩이 시가 되는 경험을 시작해보세요! ✨