언어 설계
Wave의 저수준 제어, 정적 타입, 네이티브 상호 운용성과 명시적인 코드 구조를 설명합니다.
Wave Foundation
설계 방향
Wave는 시스템 소프트웨어에 필요한 제어를 소스 코드에서 숨기지 않는 방향을 지향합니다. 그 방향은 다음 기능으로 드러납니다.
- 함수 인자, 반환값과 복합 타입뿐 아니라 지역 변수의 타입도 명시합니다.
ptr<T>,&,deref로 주소와 메모리 접근을 코드에 드러냅니다.- C ABI 경계를
extern(c)와export(c)로 선언합니다. - 네이티브 대상, CPU 기능, 링크 옵션과 프리스탠딩 빌드를
wavec에서 제어할 수 있습니다. - 일반 프로그램 구성에는 함수, 구조체, 열거형, 제네릭과
proto를 사용합니다.
언어와 표준 라이브러리의 경계
Wave 언어 문법과 std 모듈에서 제공하는 API는 구분됩니다. 예를 들어 print, println, input은 언어의 콘솔 입출력 문장이고, 문자열 검색, 파일 시스템, 네트워크와 메모리 도우미는 표준 라이브러리 API입니다.
이 구분을 알면 기능이 언어 문법인지 라이브러리 API인지, 또는 툴체인 기능인지 찾기 쉬워집니다.
지역 변수
var fixed: i32 = 10;
var state: i32 = 0;
var counter: i32 = 0;
var는 지역 변수를 선언하는 문법이며 변수 이름 뒤에 타입을 명시적으로 작성합니다.
명시성을 위한 설계
Wave 코드는 타입, 메모리 접근, ABI 경계와 빌드 대상을 소스와 명령에서 분명하게 표현합니다. 이 원칙은 코드가 사용하는 데이터 표현과 시스템 자원을 검토하기 쉽게 하고, 서로 다른 환경에서도 의도를 일관되게 전달합니다.