A human-friendly programming language

CuffScript

“As easy as a game, as light as a feather, and as fast as a flash.”

CuffScript는 특정 문법 하나를 잘 만드는 것보다, 프로그래밍이라는 경험 자체를 덜 무섭게 만드는 것을 목표로 만들어진 언어입니다. 설치도, 설정도 없이 이 페이지에서 바로 첫 줄을 실행해 볼 수 있습니다.

왜 CuffScript인가

처음 프로그래밍을 배우기 시작한 사람이 가장 먼저 마주하는 벽은 대개 논리가 아니라 낯선 기호와 엄격한 규칙입니다. 세미콜론을 하나 빠뜨렸다는 이유로, 괄호의 짝이 하나 어긋났다는 이유로 알 수 없는 에러 메시지와 마주하고 나면, 문제는 "내가 논리적으로 생각하지 못해서"가 아니라 "이 언어의 규칙을 아직 외우지 못해서"인데도 전자로 오해하기 쉽습니다.

CuffScript는 그 첫 벽을 낮추자는 생각에서 출발했습니다. set, change, do:, end 처럼 코드가 조금 길어지더라도 사람이 실제로 쓰는 말에 가까운 키워드를 쓰고, 잘못된 부분이 있으면 프로그램 전체가 알 수 없이 꺼지는 대신 어디가 왜 잘못됐는지 이야기해 주는 것 — 이런 선택 하나하나가 모여 "내가 지금 뭘 하고 있는지 이해할 수 있는" 경험을 만듭니다. 그렇다고 표현력을 희생하지는 않습니다. 함수, 비동기 실행, 정규식 기반 패턴 매칭까지 — 작은 자동화 스크립트나 게임 로직을 만들기에 부족함이 없는 실제 작동하는 언어입니다.

이름의 "Cuff"는 소맷단이라는 뜻입니다. 손목에 가볍게 채워 언제든 편하게 쓸 수 있는 도구처럼, 부담 없이 걸치고 바로 무언가를 만들어 볼 수 있는 언어이길 바라는 마음을 담았습니다.

CuffScript를 이루는 세 가지 원칙

게임처럼 쉽게

실수해도 게임의 재시작 버튼처럼 다시 시도할 방법이 있습니다. or_else로 실패를 회복하고, 에러는 어디서 무엇이 잘못됐는지를 구체적으로 알려줍니다. 배우는 과정에서 좌절할 이유를 하나씩 줄이는 것이 CuffScript의 첫 번째 원칙입니다.

깃털처럼 가볍게

설치할 컴파일러도, 관리할 패키지도, 외워야 할 표준 라이브러리 목록도 없습니다. 브라우저 탭 하나, 그리고 몇 개의 단순한 개념만으로 충분히 쓸모 있는 것을 만들 수 있도록 언어의 크기 자체를 작게 유지합니다.

번개처럼 빠르게

머릿속에 떠오른 생각을 코드로 옮기고, 바로 그 자리에서 결과를 확인하는 흐름의 속도를 중요하게 여깁니다. 빌드도, 배포도 없이 — 쓰고, 실행하고, 바로 다음 생각으로 넘어갈 수 있습니다.

피보나치 수열 예제 — 실제 문법은 가이드에서 차근차근 다룹니다.

set returnable function fib(n) do:
    if n <= 1 do: return n end
    return fib(n - 1) + fib(n - 2)
end

print(f"fib(10) = {fib(10)}")

이런 분들에게 어울리는 언어입니다

  • 프로그래밍을 처음 시작하는 사람 — 낯선 기호보다 논리 자체에 먼저 익숙해지고 싶은 분.
  • 정규식이 늘 무서웠던 사람\d, \w 대신 [num], [word]처럼 읽을 수 있는 이름으로 패턴을 다뤄보고 싶은 분.
  • 아이디어를 빠르게 실험해 보고 싶은 사람 — 프로젝트를 세팅하는 시간 없이, 떠오른 생각을 바로 실행해 확인하고 싶은 분.
  • 작은 도구나 게임 로직을 가볍게 짜고 싶은 사람 — 거창한 프레임워크 없이도 시작할 수 있는 언어를 찾는 분.

지금 바로 첫 줄을 실행해 보세요

예제 10개가 준비되어 있어, 기초 문법부터 모듈까지 순서대로 따라가 볼 수 있습니다.