GN⁺: Racket 프로그래밍 언어
(racket-lang.org)Racket 프로그래밍 언어
- Racket은 성숙하고, 실용적이며, 확장 가능하고, 견고하며, 세련된 프로그래밍 언어임
- Racket은 언어 지향 프로그래밍(Language-Oriented Programming) 언어로, 다음과 같은 특징이 있음:
- 고차 발생 타이핑(higher-order occurrence typing)을 지원
- 문서 생성을 위한 Scribble 언어 내장
- Datalog와 같은 로직 프로그래밍 지원
- 작은 매크로에서 큰 매크로, 쉬운 DSL 작성, 모든 구문 지원 등 매크로 시스템이 강력함
- Racket 생태계는 소프트웨어, 튜토리얼과 문서, 커뮤니티, 책, 교육, 스웨그 등으로 구성됨
- Racket은 NSF, DARPA, FIPSE, Exxon 재단, 마이크로소프트, 모질라, 구글 등 여러 단체와 개인의 후원을 받아왔음
GN⁺의 의견
- Racket의 가장 큰 장점 중 하나는 언어 지향 프로그래밍을 지원한다는 것임. 이를 통해 도메인 특화 언어(DSL)를 쉽게 만들 수 있어 생산성 향상에 도움이 됨
- 다만 Lisp 계열 언어의 특성상 괄호가 많이 사용되어 처음 접하는 사람에겐 가독성이 떨어질 수 있음. Clojure처럼 괄호 대신 다른 구문을 도입하면 좋을 것 같음
- 튜토리얼과 문서가 잘 갖춰져 있어 학습이 용이함. 교육용으로도 많이 사용되고 있음
- 범용 프로그래밍 언어로 사용할 수도 있지만, DSL 제작이나 SICP 등 교육용으로 특화된 면이 있음. 실제 프로덕션 환경에서 사용하기엔 아직 라이브러리 등이 부족해 보임
- 함수형 언어를 시작하려는 분들께 학습용으로 추천함. 단, 실무에선 Haskell, OCaml, F# 등을 고려해 보는 것이 좋겠음
Hacker News 의견
요약:
- Racket은 컴파일러, 패키지 관리 시스템, GUI IDE, Emacs 바인딩 등 핵심 기능은 매력적이나, 일부 컴퓨터과학 교수들이 주도하는 프로그래밍 언어 연구 부분은 관심이 적음.
- Racket은 편집기에서 코드를 작성하고 쉘에서 실행하는 Python과 달리, 장기 실행되는 VM과 REPL로 상호작용해야 해서 워크플로우에 적응이 어려움.
- Racket의 typed/racket, racket/gui, scribble/base 등 언어들을 하나의 애플리케이션에 통합하는 방법이 명확하지 않음. 각 언어를 설명하는 튜토리얼 챕터들이 서로 연관 없이 다뤄져서 혼란스러움.
- Racket은 빠르고 실용적이며, 견고한 기반과 뛰어난 동시성 스토리를 가지고 있음. 통합된 패키지 생태계와 훌륭한 문서화 시스템도 장점. Python보다 뒤쪽 호환성이 우수함.
- Racket으로 전자상거래 사이트, iOS/macOS용 앱, Apache Kafka용 데스크톱 클라이언트, Lua용 #lang 등 실용적인 프로젝트들을 개발한 사례 있음.
- 해커 뉴스도 Arc로 작성되었고 Racket에서 실행됨.
- GUI가 포함된 바이너리 개발이나 JSON, XML 등 파싱에 Racket이 적합함.
- 매크로 시스템이 Common Lisp과 달라 적응이 필요하지만 메타프로그래밍에 용이함.
- LISP 계열 언어들이 제시하는 학구적이고 순수한 프로그래밍 관점은 실용적인 앱 개발과는 동떨어져 보임.