한 사람이 C 대체용으로 만든 최소주의 언어 Copper, 해커뉴스에서 메모리 모델과 GC 질문이 쏟아져
- Copper는 작성자가 C를 대체하려고 만든 최소주의 저수준 언어로, 문법이 단순하고 대부분의 구성 요소가 명시적이며 BSD 라이선스로 공개됨
- 모든 타입에 상속, 제네릭, 다중 반환값, 정의 순서 무관, 헤더 없는 임포트, 지연문(deferred), 옵션 타입, 루비 스타일 문법을 지원함
- 문서에 메모리 모델, GC 여부, 무엇으로 컴파일되는지, C ABI나 FFI 지원이 없어 댓글에서 같은 질문이 반복됨
- 표준 라이브러리에 free가 있는 할당자 인터페이스가 있어 수동 해제를 전제로 한 것으로 보이나 예제에서는 해제를 다루지 않음
- 리눅스에서 빌드가 제대로 안 되고 문자열 보간과 케밥 케이스가 없다는 댓글이 있으며, 언어 자체는 Copper로 작성된 것으로 보임
Hacker News opinions
내가 만든 건 아니지만 한 사람이 자기 쓰려고 만든 언어라 흥미롭더라. 블로그에 예외 처리를 넣었다가 다시 뺀 이야기나 체인지로그를 보면 언어가 어떻게 변해왔는지 다 보임.
문법은 파이썬 같아 보이는데. 사이트엔 루비 스타일이라고 써 있고, 파이썬처럼 들여쓰기로 블록 정하는 것도 아님.
GC는 있는 거야? 문서만 봐선 모르겠더라.
소스 훑어봤는데 GC 관련 코드는 안 보이고 memory-allocator.co 같은 할당자 인터페이스가 있음. 직접 관리하는 쪽인 듯.
문자셋 얘기가 아예 없어서 걸림. 16비트 문자열이 뭘 표현하는 건지, 유니코드는 어떻게 다루는 건지 모르겠음.
Crystal 같다. 타입은 더 강하고.
더 명시적이긴 한데 Enumerable이 없어서 아쉽더라. 수동 할당이랑 같이 돌아가게 만들면 더 좋겠음.
Dart에서 중괄호 대신 들여쓰기 쓴 것 같아.
들여쓰기는 안 따지는 것 같던데. Basic이나 Ruby 쪽에 가까움.
OOP라고 하기엔 Lua나 JS 수준 아닌가. Pony가 훨씬 성숙하고 기능도 많은데.
자기호스팅은 부트스트래핑에 최악이야. 그래도 C 백엔드를 둔 건 그나마 최선의 선택임.
남의 언어 소개 글에서 다른 프로젝트가 더 낫다고 홍보하는 건 좀 아니지. 그게 싫다고 써놓고 똑같이 하는 건 웃기고.
OOP가 뭔지는 아무도 합의를 못 하지. 캡슐화라는 사람, 상속이라는 사람, 메시지 패싱이라는 사람 다 있고, 묶어주는 건 O-O-P 세 글자뿐임.
리눅스에서 빌드가 제대로 안 되고 문자열 보간도 케밥 케이스도 없더라. 그래서 내가 만든 작은 컴파일 언어는 여기 있음.
Crystal 팬이라 문법은 마음에 듦. 근데 메모리 모델이 뭔지, 뭘로 컴파일되는지, 왜 low level인지, GC가 있는지, C ABI나 FFI가 되는지가 문서에 없음.
왜 이 언어를 써야 하는지, 만든 동기가 궁금함. 세상에 언어는 이미 쓸 수 있는 것보다 많음.
개인 프로젝트고 Clade라는 편집기 만들 때 씀. 다른 프로젝트에도 쓰는 듯.
C 대체한다는데 뭘 만드는 데 쓰는 거지?
Clade 편집기랑 그 전신인 code-browser 만드는 데 쓰더라.
메모리는 어떻게 해제함? 문서에 dealloc 얘기가 한 군데도 없고 alloc만 있음.
표준 라이브러리 할당자에 free가 있으니까 그걸 부르라는 뜻 같음. 예제에서 안 다루는 게 이상하지만.
새 언어 내는 시대는 끝났음. 이제 코딩은 LLM이 하고 언어도 LLM이 고름.
계산기가 나왔다고 수학이 끝난 게 아님. 그때도 의존성과 실력 저하를 걱정하면서 반대했지만 말이지.
잠재력은 있는데 중요한 게 빠져 있음. 이 스레드 피드백 보고 작성자가 답을 좀 채워줬으면.
예제가 좋더라. 제네릭이랑 인터페이스, 패키지 같은 가시성 경계까지 보여줬으면 더 좋았을 텐데. 컨테이너가 공변인지 반공변인지도 궁금하고.
Ruby 문법은 나쁘지 않은데 다중 반환값은 좀 어색하더라. 그래도 한번 써볼 생각임.