Chicken Scheme 메인테이너 Sjamaan/피터 벡스 인터뷰

Interview with Chicken Scheme Maintainer Sjamaan/Peter Bex

alexalejandre.com ▲ 55 댓글 13 veqq

요약

Chicken Scheme 메인테이너 피터 벡스가 Chicken 6 개발 뒷이야기와 언어·데이터베이스에 대한 생각을 밝혔습니다.

알렉스 알레한드레가 진행한 인터뷰입니다. 벡스는 본업으로 Clojure 개발을 하면서 Chicken의 수 체계, 정규식 라이브러리 irregex, 버그 수정과 보안을 맡고 있습니다.

왜 중요한가

  • 주요 Scheme 구현들이 R7RS(Scheme 표준 7차 개정판)를 외면하면 표준화가 힘을 잃는다는 메인테이너의 우려가 담겼습니다.
  • Chicken 6은 R7RS를 바탕으로 UTF-8 처리를 정리하고 문자열과 바이트 벡터를 엄격히 나눈 큰 개편입니다.
  • Lisp 책들이 GC(안 쓰는 메모리를 자동으로 회수하는 기능) 같은 구현 세부를 빼놓는다고 보고, 그 빈틈을 블로그로 채우고 있습니다.

핵심 내용

  • Chicken 6.0.0 출시는 Chicken 위키 서버에서 나던 힙 손상(메모리 영역이 깨지는 오류) 때문에 늦어졌습니다.
  • 벡스는 위키 코드를 줄여 가며 원인을 좇았고, UTF-8 전환 때 망가진 read-symbolic-link 함수를 찾아냈습니다.
  • 다음 과제로 타입 검사를 건너뛰는 내장 연산의 컴파일러 활용과 코어용 간단한 날짜·시간 처리를 꼽았습니다.
  • Postgres는 UTF-8을 검증하고 테이블 구조 변경(DDL)도 트랜잭션으로 묶을 수 있어 MySQL과 SQLite보다 낫다고 했습니다.
  • 분산 시스템은 전체 동작을 예측하기 어려우니 가능하면 피하라고 조언했습니다.

HN 반응

  • 여러 이용자가 Chicken 커뮤니티를 초보 질문에도 친절히 답해 주는, 온라인에서 손꼽히게 좋은 곳이라고 입을 모았습니다.
  • Lisp 책이 구현을 얕게 다룬다는 지적에 공감하며 벡스의 GC 해설 글을 추천하는 댓글이 이어졌습니다.

댓글

13개 표시 · 전체 13개
  1. bjoli HN

    지금은 chicken을 쓰지 않아요. 별들의 배치가 그렇게 맞아떨어진 탓에 결국 대부분 guile scheme을 쓰게 됐거든요. 그래도 chicken 쪽 사람들은 온라인에서 만난 사람 중 가장 친절한 축일 거예요. 제가 그쪽 IRC 채널에서 초보자다운 바보 같은 질문을 던졌는데, 메인테이너들이 시간을 내서 하나하나 설명해 줬고, 좋은 공부가 되겠다며 다음에 구현해 볼 만한 것까지 제안해 줬어요.

    정말이지 인터넷에서 가장 좋은 구석이에요.

  2. matheusmoreira HN

    또 한 번 훌륭한 인터뷰를 해 주셨네요, veqq님, 고맙습니다!

    Lisp 책들에는 무엇이 부족합니까?

    가비지 컬렉션이나 데이터 표현 같은 건 그다지 깊이 다루지 않습니다.

    요즘은 아무도 얘기하지 않는 멋진 기법들에 대해 블로그에 쓰는 걸 좋아합니다.

    예를 들면 약한 참조(weak reference)를 구현하는 법, 그리고 그것을 효율적으로 GC하는 법 같은 것입니다.

    저도 책들에 대해 똑같은 불만이 있었습니다. 늘 너무 추상적인 수준에서 끝나죠. 가비지 컬렉션 같은 건 그냥 당연히 있는 것으로 취급합니다. 실제 lisp에서는 그게 가상 머신의 핵심 부분인데도 말입니다.

    chicken의 가비지 컬렉터와 데이터 표현을 다룬 블로그 글은 훌륭합니다. 저는 chicken의 컨티뉴에이션(continuation)이 어떻게 컴파일되는지도 정말 읽어 보고 싶습니다. 언젠가 그 주제로 글이 올라오길 바랍니다.

    저도 그런 빈틈을 메우려고 블로그를 시작했습니다.

    제가 거의 본 적 없는 또 다른 주제는 FFI를 어떻게 구현하는지, 그리고 모듈 간 최적화를 어떻게 하는지입니다.

    맞습니다. 정말 흥미로운 주제인데 자료는 별로 찾지 못했습니다.

    Wingolog에 guile의 모듈 간 부분 평가(partial evaluation)를 다룬 글이 있습니다.

    https://www.wingolog.org/archives/2021/05/13/cross-module-inlining-in-guile

    부분 평가기는 외부 함수(foreign function) 안쪽까지는 뚫고 들어갈 수 없어서 최적화가 막힙니다. FFI에 반대하는 논거인 셈이죠!

    지금 보기에 가장 긍정적인 점은 디지털 주권을 향한 움직임입니다.

    이 흐름이 사람들이 기술을 도입하는 방식을, 좀 더 신중한 쪽으로 바꿔 주길 진심으로 바랍니다.

    하지만 기득권과 관성을 넘기는 어려울 것 같고, 그게 정말 우울합니다.

    신경 쓰는 사람이 더 있다는 걸 알게 되면 늘 반갑습니다! 우울해지지 않을 방법을 찾으시면 꼭 알려 주세요. 우리한테는 상황이 갈수록 어려워지기만 하는 것 같으니까요...

  3. sjamaan HN

    chicken의 컨티뉴에이션이 어떻게 컴파일되는지도 정말 읽어 보고 싶습니다. 언젠가 그 주제로 글이 올라오길 바랍니다.

    https://www.more-magic.net/posts/internals-data-representation.html 에 우리가 만드는 클로저 객체에 대한 아주 짧은 설명이 있습니다. 컨티뉴에이션 컴파일 과정에서 구체적으로 어떤 부분이 궁금하십니까? 그 주제로 글을 한 편 쓸 수도 있을 것 같습니다.

  4. sidkshatriya HN

    피터 벡스가 쓴 블로그 글은 품질이 대단히 높습니다!

    저도 이 글들을 읽느라 시간을 정말 많이 썼습니다.

    https://www.more-magic.net/posts/internals-gc.html

    https://www.more-magic.net/posts/weak-references.html

    (아직 읽지는 않았지만 이것도 굉장해 보입니다)

    https://www.more-magic.net/posts/internals-data-representation.html

  5. jrapdx3 HN

    좋은 인터뷰입니다. 내용이 알차고 인물의 성격도 어느 정도 드러납니다. 이런 종류의 인터뷰로서는 평소보다 글도 좋습니다.

    다만 저는 편향된 사람입니다. Chicken Scheme을 몇 년째 쓰고 있거든요. 대체로 만족스러운 경험이었습니다. 저에게는 Chicken의 쓰기 쉽고 합리적인 FFI가 큰 이유입니다. 이 언어는 제가 하려는 일에 대체로 잘 맞습니다.

    Chicken 커뮤니티는 새내기든 베테랑이든 도움이 필요할 때 지원해 줍니다. 질문에 가혹하게 답하는 일은 드뭅니다. 온라인 커뮤니티로서는 이만하면 최고 수준입니다.

  6. veqq HN

    좋은 인터뷰입니다. 내용이 알차고 인물의 성격도 어느 정도 드러납니다. 이런 종류의 인터뷰로서는 평소보다 글도 좋습니다.

    감사합니다!

  7. thenthenthen HN

    주제와는 상관없는 얘긴데, 'Sjamaan'은 어디서 나온 이름인가요? Ctrl+F로 찾아도 안 나오네요. Chicken/Scheme 쪽 작명법은 잘 몰라서요. 그런데 솔직히 좀 꺼림칙해요. 제가 만나 본 스스로 샤먼이라고 하는 사람들은 전부는 아니어도 대부분 완전 불쾌한 인간들이었거든요.

  8. sjamaan HN

    그냥 그땐 좀 웃기다고 생각해서 붙인 별명인데, 너무 오래 써 와서 바꾸지 못하고 있는 것뿐입니다. 지금은 그 별명이 딱히 마음에 들지 않고, 제가 샤먼이라고 생각하지도 않습니다.

  9. bch HN

    maw sjamaan

  10. sjamaan HN

    maw maw! 정말 오랜만에 듣는 인사네요 :)

  11. bch HN

    주제와는 상관없는 얘긴데, 'Sjamaan'은 어디서 나온 이름인가요?

    오래 써 온 온라인 닉네임입니다. 저는 "옛날 옛적"에 Freenode의 #netbsd에서 보던 sjamaan이 반갑게 기억나네요.

  12. weikju HN
  13. poetaster HN

Hacker News에서 보기 ↗