이름 "Mere", 그리고 그것이 무엇인가
언어는, 그것이 무엇인지를 알기까지 가칭으로 돌았다 —— 명명은 일부러 미뤄졌다, 이 프로젝트의 모든 것이, 커밋할 가치가 생길 때까지 미뤄진 것과 같이. 얻은 이름은 두 일을 한 번에 한다: 겸손하고 찾기 쉬운 낱말(고대 영어로 호수) 위에, 테제 전체를 압축한 backronym —— Make Explicit Region-bound Effects. 조용한 표면, 정확한 심; 이름이 언어를 연기한다.
다섯 Part가, 도는 언어를, 무엇이라 부를지를 끝내 정하지 못한 채 기술했다. 그것은 의도적이었다. 프로젝트는 오랫동안 가칭으로 돌았고, 코어 —— 메모리 모델, 이펙트, 타입 —— 이 실제로 도는 무렵에 가칭을 재고한다고 명기되어 있었다. 이 Part는, 사적인 실험에서 공적인 것으로의 건넘에 대한 것이고, 그리고 그 건넘이 시작되는 곳 —— 이름 —— 에서 연다.
값어치가 생길 때까지 미뤄진 명명
언어는 세워지는 데 이름을 요하지 않는다; 쓰이는 데 요한다. 그래서 이름은 보류되었다, 프로젝트의 다른 모든 것을 다스린 것과 같은 원칙으로: 알았을 때 커밋하라, 그 전이 아니라. 가칭은 정직한 표명이다 —— “이것이 아직 무엇인지 모른다” —— 한편, 너무 이른 이름은, 그 뒤 함께 살아야 할 추측, 이윽고 나타나는 것에 맞지 않을 수 있는 라벨이다. 언어는, 그 성격이 정해진 뒤에 이름 붙인다. 이름은, 되기를 바랐던 것이 아니라, 된 결과를 기술해야 하기 때문이다.
코어의 설계상의 물음이 대체로 해결되고, 구현이 그 모든 backend에 걸쳐 도는 무렵에는, 성격은 정해져 있었고, 명명이 자연스러운 다음 행위가 되었다. 언어가 무엇인가는 물음이기를 그쳤고, 바로 그때, 답을 라벨에 실을 수 있다.
Mere: 겸손한 낱말 위에 정확한 심
골라진 이름은 Mere —— 고대 영어로 호수, 고요한 웅덩이. 한 음절, 네 글자, 확장자는 .mere,
mere라는 명령. 그 표면에서는, 조용하고, 자조적이라고까지 할 낱말이다: mere, “그저 ~“의 mere,
자신을 알리기를 사양하는 이름.
그 겸손함 아래에는, 장식이 아니라 테제 전체를 압축한 표명인 backronym이 있다:
Mere — Make Explicit Region-bound Effects.
각 낱말이, 연재가 다섯 Part를 들인 하중을 짊어지는 결정의 하나를 나른다. Make —— 언어는 능동적
제작을 위한 도구, 동사다. Explicit —— 제1원칙, 간결함보다 명시성, 숨은 동작의 거부.
Region-bound —— 메모리 모델, Trivial 제약 아래 region과 view에 의해 수명이 관리되는 값.
Effects —— 능력 전달, 주변적 힘이 아니라 보이는 값으로서 이동하는 부작용. 네 글자, 언어를
정의하는 결정의 넷. 이름은, 지금까지 세워진 모든 것의, 가능한 한 짧은 요약이다.
그 짝 —— 겸손한 표면 위의 정확한 심 —— 은 우연이 아니다; 그것은 언어 자신의 미학이, 그 이름에 의해 연기된 것이다. Mere는 야심적이지도 교묘하지도 않게 나타난다; 소박하게 나타나고, 아래는 정확하다. 명확한 내용 위의 겸손한 이름은, 언어가 코드에 대해 취하는 것과 같은 자세다: 과시는 없고, 모든 것이 읽힌다.
왜, 모든 낱말 중 호수인가
선택은, 작은 풍경의 낱말의 긴 목록에서 —— glen도 cove도 tarn도 loch도, 모두 경계 지어진 지형의 한 조각이다, 메모리 모델의 중심적인 아이디어가 region, 둘레에서 경계 지어진 영역이기에 —— 이뤄졌다. 몇몇은 강했다. glen은 region을 직접 이름 부르고, 씩씩한 Scots의 강건함을 가진다; cove는 잔잔한 경계 지어진 후미다. Mere가 이긴 것은, 힘으로가 아니라, 들어맞음에 대한 이유로다.
호수는, 설계에 가장 완전히 사상(寫像)되는 메타포다. 그것은 둘레에서 경계 지어진 영역 —— region, 그 자신의 수명을 가진. 그 수면은 꿰뚫어 보일 만큼 고요하다 —— 능력 전달과 명시적 타입이 구하는 가시성, 추론하는 것이 아니라 볼 수 있는 흐름. 그리고 mere는 작고, 소박하고, 과시하지 않는 수역 으로, 그것은 일부러 작은 코어를 가진 minimal한 ML 계열 언어에 들어맞고, 설계 전체가 딛고 선 고요함에 들어맞는다: 교묘함이 아니라, 정적 검사로 쌓아 올린 확실함. 이름은 그 울림만으로 골라진 것이 아니다. 그것이 그리는 그림 —— 경계 지어지고, 고요하고, 바닥까지 맑은 —— 이, 언어의 그림이기에 골라졌다.
문턱으로서의 이름
가칭으로부터의 리네임은, 기계적으로는, 코드베이스와 문서를 쓸어내는 것 —— 리포지터리, 모듈 이름, 모든 예의 확장자, 모든 설계 노트의 프론트매터 —— 이었다. 하지만 기계적인 것은 요점이 아니다. 요점은, 공으로 건너는 소프트웨어에게 이름이 무엇을 위한 것인가다: 그것은, 그것이 불릴 수 있게 되는 순간이다. 이름 전에는, 프로젝트는 “내가 매달리고 있는 것”이다; 후에는, 남들이 검색하고, 참조하고, 의존하고, 채용할 수 있는 무언가다. 이름은 건넘의 첫 행위다. 코드를 바꾸기 때문이 아니라, 코드가 다른 사람들 에게 무엇일 수 있는가를 바꾸기 때문이다.
언어는 이제 정체성을 가진다 —— 하나의 낱말, 하나의 메타포, 네 글자에 압축된 매니페스토. 아직 가지지 않은 것은, 공적인 존재다: 살 곳, 그것을 들어 본 적 없는 누군가가 그것을 찾고, 배우고, 시험하는 길. 이름을 가지는 것은, 이용할 수 있는 것과 같지 않다. 다음 회: 공개 —— 사이트, 튜토리얼, 언어가 언어로서 나타나기 위한 등록, 그리고 사적인 실험을 세계에 여는 데 무엇이 드는가.