토파즈 배우기

첫 프로그램

토파즈를 설치하고 학습 계획 파일 하나를 검사·실행한 뒤, 정적 진단을 읽어 타입 불일치를 고칩니다.

학습 결과: .tpz 파일 하나를 만들고, 실행 전에 검사하며, 검사기가 알려 준 소스 위치를 따라 실수 하나를 고칩니다.

선행 학습: 학습 경로에서 시작점을 고르세요. 아래 명령을 그대로 실행하려면 로컬 터미널이 필요합니다.

명령 설치하기

macOS 또는 Linux:

BASH
curl -fsSL https://topaz.ooo/install.sh | sh

Windows PowerShell:

POWERSHELL
irm https://topaz.ooo/install.ps1 | iex

Node가 이미 설치되어 있다면:

BASH
npm install -g topaz-lang

설치된 제품을 확인하세요.

BASH
topaz version
출력
Topaz 5.11.0

첫 프로그램에는 저장소 복제, 패키지 매니페스트, Rust, Python이 필요하지 않습니다.

VS Code나 Open VSX 호환 편집기를 사용한다면 Visual Studio Marketplace 또는 Open VSX Registry에서 공식 토파즈 확장을 설치할 수 있습니다. 이 확장은 .tpz 파일을 인식하고 토파즈 파일 아이콘과 구문 강조를 제공합니다. 진단은 계속 topaz check에서 확인합니다.

가장 작은 학습 계획 작성하기

first-program.tpz 파일을 만들고 아래 내용을 정확히 넣으세요.

TOPAZ
let topic = "Topaz basics"
let minutes: int = 25
print("{topic}: {minutes} minutes")

먼저 소스를 검사하고, 그다음 실행합니다.

BASH
topaz check first-program.tpz
topaz run first-program.tpz

check는 파일을 실행하지 않고 검사한 결과를 보여 줍니다.

출력
first-program.tpz: types-ok (1 module)
first-program.tpz: resolve-ok (1 module)

run은 같은 정적 검사를 통과한 뒤 다음 결과를 출력합니다.

출력
Topaz basics: 25 minutes

화면에 드러나는 순서대로 코드를 읽어 봅시다. 첫 let은 문자열에 이름을 붙이며, 검사기가 타입을 추론합니다. 두 번째 바인딩은 int를 직접 적었으므로 검사기는 25가 정수인지 확인해야 합니다. print{...} 안의 식을 계산해 한 줄로 출력합니다.

진단을 읽고 고치기

별도의 first-program-error.tpz 파일을 만드세요. 아래 소스는 일부러 잘못 작성했으므로 실행 가능한 토파즈 예제가 아닌 일반 텍스트로 표시합니다.

let topic = "Topaz basics"
let minutes: int = "25"
print("{topic}: {minutes} minutes")

다음을 실행합니다.

BASH
topaz check first-program-error.tpz

검사기는 프로그램을 실행하지 않습니다. 선언된 타입과 실제로 찾은 타입, 그리고 문제가 있는 정확한 소스 위치를 보여 줍니다.

출력
error[TPZ5001]: expected `int`, found `string`
 --> first-program-error.tpz:2:20
  |
2 | let minutes: int = "25"
  |                    ^^^^

first-program-error.tpz: 1 type diagnostic

표시된 "25"25로 바꾸세요. 이제 topaz check first-program-error.tpz는 성공하고, topaz run first-program-error.tpz는 앞의 정상 프로그램과 같은 한 줄을 출력합니다.

선택: check인가, run인가?

편집 중에는 프로그램을 시작하지 않고 “이 소스가 올바른가?”를 빠르게 확인하는 topaz check를 사용하세요. topaz run은 같은 정적 검사를 수행한 뒤 실제 동작까지 보여 줍니다. 별도의 checkrun에 없는 검사를 추가하는 명령이 아니라, 실행을 생략한 빠른 확인 단계입니다.

직접 해보기

topic"Functions"로, minutes30으로 바꾸세요. 어떤 결과가 나올까요?

정답 보기

Functions: 30 minutes가 출력됩니다. 바뀐 값도 각각 추론된 string과 선언된 int 타입을 지키므로, 실행 전 topaz check first-program.tpz도 계속 성공합니다.

다음 단계로 넘어갈 준비

.tpz 파일을 만들고 topaz checktopaz run을 실행할 수 있으며, expected/found 타입과 표시된 소스 위치를 보고 잘못된 값을 고칠 수 있다면 준비되었습니다.

값과 함수로 계속하세요. 짧은 문법 표기가 필요할 때는 문법 한눈에 보기를 사용하세요.