rokdocs
v0.1

0. 소개

목차

rok 이란

rok 은 과학과 데이터 분석을 주된 대상으로 하는 범용 프로그래밍 언어입니다. 먼저 과학 영역에서는 수치 계산과 시뮬레이션, 모델링을 다룹니다. 그다음 데이터 분석 영역에서는 표 데이터 처리와 통계, 시각화를 다룹니다. 또한 범용 언어로서 위 영역에 한정되지 않으며, 시스템 도구와 웹 백엔드, CLI 도 합리적으로 작성할 수 있습니다.

실제 작업 흐름은 이 셋을 가로지릅니다. 노트북에서 시작한 코드가 정적 산출물의 일부가 되고, 다시 라이브러리로 묶여 다른 노트북에서 호출됩니다. 따라서 rok 은 그 흐름이 한 언어 안에서 자연스럽게 이어지도록 설계되었습니다.

설계 슬로건

중요

"언어는 작게, 라이브러리는 풍부하게."

언어 사양이 직접 정의하는 범위를 좁게 잡습니다. 숫자 연산과 형 변환, 컬렉션, 입출력, 동시성 등은 모두 표준 라이브러리에 위임합니다. 따라서 언어 코어는 작게 유지되고, 영역의 의미는 라이브러리가 결정합니다.

이 분리에는 두 가지 동기가 있습니다. 먼저 수정 가능성 측면에서, 과학과 데이터 같은 영역에 특화된 결정을 라이브러리 수준에서 진화시킬 수 있습니다. 또한 검증 가능성 측면에서, 언어 사양이 작을수록 구현과 검증, 교육의 비용이 낮아집니다.

언어와 라이브러리의 정확한 경계는 0.4. 언어와 표준 라이브러리의 경계 에서 선언합니다.

통제 속의 자유

중요

"규칙이 명확할수록 그 안에서 자유로워집니다."

rok 은 제약을 회피하지 않습니다. 정적 타입과 닫힌 합 타입, 트레잇-as-타입 금지, 묵시적 승급 금지, AOT-only 컴파일이 그러한 결정에 해당합니다. 이러한 결정들은 사용자의 선택지를 좁힙니다. 그러나 좁아진 선택지 안에서 사용자는 예측 가능하고 깊게 통제할 수 있는 코드를 작성합니다.

이 철학은 두 방향에서 나옵니다. 한편으로 언어가 통제하는 영역이 있는데, 타입과 디스패치, 메모리 모델, 평가 순서가 여기에 해당합니다. 사용자가 매번 결정하지 않고 언어가 한 번에 정합니다. 다른 한편으로 사용자가 자유로운 영역이 있는데, 라이브러리 설계와 도메인 모델링, 알고리듬 선택, 코드 구조가 여기에 해당합니다. 언어는 강요하지 않으며, 라이브러리와 메타 시스템이 깊은 표현을 허용합니다.

점진(gradual) any 슬롯과 정적 타입의 공존, JIT 와 AOT 의 동의미 보장, 그리고 메타 시스템을 통한 언어 자체의 확장은 모두 이 원칙의 구체적 형태에 해당합니다. 따라서 잘 통제된 코어 위에서만 자유로운 영역이 가능합니다.

비목표

다음은 rok 의 우선 지원 영역이 아닙니다. 영원히 배제한다는 뜻은 아니며, 초기 사양과 구현이 이들을 위해 타협하지 않는다는 뜻입니다. 먼저 모바일 앱 개발(iOS, Android) 이 여기에 해당합니다. 그다음 bare-metal 임베디드와 운영체제 없는 환경이 포함됩니다. 또한 16-bit 와 8-bit 마이크로컨트롤러도 우선 지원 영역에서 제외됩니다.

이 영역들은 별도의 언어 생태계가 이미 충분히 성숙해 있고, 과학과 데이터 작업 흐름의 핵심 경로에서 벗어나 있습니다.

GitHub에서 이 페이지 고치기