5P by GN⁺ | ★ favorite | 댓글 1개
  • Try Clojure는 브라우저에서 Clojure 표현식을 바로 평가해보는 5분짜리 체험 페이지임
  • 화면 오른쪽의 REPL에서 입력한 내용이 read-eval-print loop로 실행됨
  • (+ 1 2) 같은 예시 표현식을 직접 입력하거나 코드 조각을 클릭해 자동 삽입할 수 있음
  • (help)로 명령을 확인하고, 준비되면 (start)를 입력해 체험을 시작함
  • 이 페이지는 Clojurescript로 만들어졌고 Elia Scotto, Michiel Borkent, Clojure 커뮤니티가 제작 정보에 포함됨

브라우저에서 바로 실행하는 Clojure

  • Try Clojure는 “Got 5 minutes?”라는 안내와 함께 짧게 Clojure를 체험하도록 구성됨
  • 오른쪽의 REPL에서 사용자가 입력한 Clojure symbolic expression이 평가됨
  • 체험 흐름은 단순함
    • (+ 1 2) 같은 표현식을 직접 입력함
    • 코드 조각을 클릭해 자동 삽입함
    • (help)로 명령을 확인함
    • (start)로 시작함

제작 정보

  • 페이지에는 Rich Hickey의 인용문이 포함됨: “If you want everything to be familiar, you'll never learn anything new.”
  • Try Clojure는 Clojurescript로 만들어졌고, Elia Scotto가 제작자로 표시됨
  • Michiel Borkent와 Clojure community에 대한 감사도 함께 담겨 있음

댓글과 토론

Hacker News 의견들
  • 이게 돌아와서 반가움. 아주 예전에 있던 버전이 Clojure를 시도하게 해줬고, 그 선택이 커리어에서 가장 큰 영향을 준 결정이 됐음
    지금도 직장과 집에서 거의 매일 Clojure를 쓰고, 때로는 표준 Clojure, 때로는 Make 같은 작업 실행기나 Zsh 스크립트 대체재로 훌륭한 Babashka를 씀
    Go도 단일 바이너리로 컴파일해야 할 때 강력한 2순위지만, Clojure는 일반적인 작성-컴파일-실행 루프보다 프로그램과 대화하는 느낌의 REPL 기반 개발 흐름 덕분에 가장 편하게 느껴짐
    여기에 JVM 위에서 돈다는 점까지 합치면, 즐겁게 일을 끝낼 수 있는 도구 세트가 됨. Lisp와 함수형 프로그래밍에 조금이라도 관심 있다면 꼭 시도해보길 권하고, VSCode를 쓴다면 Calva 플러그인이 큰 도움이 됨

    • “한동안 사라졌던 이유”는 만든 사람 Anthony Grimes(https://github.com/Raynes)가 7년 전 세상을 떠났기 때문임: https://www.reddit.com/r/Clojure/comments/5gyyxw/clojure_ope...
    • Clojure, Rust, TS처럼 표현력이 높은 언어를 쓰다가도 Go로 쉽게 전환하는 사람들이 늘 신기함
      표현력이 낮은 언어로 바꾸는 건 고통스럽고 짜증났고, Python에서 Java 5로 옮겼을 때 같은 내용을 표현하는 코드가 3~5배 길어진 기억이 있음
      아마 핵심은 표현력이 낮은 언어로는 셸 스크립트, 성능이나 외부 함수 인터페이스용 작은 C 함수, 작은 Go 유틸리티처럼 작은 것만 작성하는 데 있는 듯함
    • Clojure를 배우지 않게 만든 건 늘 이름의 “j”였음. JDK와 JVM에서 안 좋은 경험을 너무 많이 해서, JavaScript를 뜻하는 게 아니라면 “J”가 들어간 건 천 킬로미터쯤 떨어져 있고 싶음
  • Clojure를 처음 접하고 바로 쓸모 있게 실험해보고 싶다면 스크립팅용 Babashka 런타임을 강력 추천함: https://babashka.org
    재미있고 접근하기 쉬우며, Clojure 생태계에서 더 다듬어진 부분 중 하나임
    전체 JVM Clojure와 달리 시작 시간이 매우 빨라서 좋은 진입점이고, 초보자는 이미 익숙한 파일 감시/재로딩 도구, 예를 들어 nodemon 같은 것으로 대화형처럼 작업할 수 있음
    나중에는 편집기에서 REPL 연결을 쓰는 완전한 대화형 구성으로 넘어가면 좋지만, 초보자에게는 익숙하지 않은 흐름이고 설정도 번거로울 수 있음

    • 웹으로 재미를 확장할 준비가 됐다면 Biff를 보면 됨: https://biffweb.com
    • Babashka의 가장 좋은 점은 요즘엔 정말 배터리 포함이라는 것임
      업무 앱의 통계를 보여주는 작은 UI를 만들어야 해서 HTMX와 함께 써봤는데 아주 좋은 경험이었음
      Babashka에는 기본 웹 앱에 필요한 것이 거의 내장돼 있고, HTMX를 쓰면 JavaScript 프론트엔드를 다루지 않고도 페이지에서 동적 로딩을 할 수 있음
      bb --nrepl-server로 nREPL을 띄운 뒤 Calva 같은 편집기를 연결해 스크립트를 대화형으로 개발할 수 있어서, 간단한 웹 UI가 필요하면 확인해볼 만함
  • 비슷한 방향의 사이트로 https://www.maria.cloud/도 있음
    완전 초보자에게 프로그래밍을 가르치는 쪽에 더 맞춰져 있지만, 기본적인 paredit식 조작과 폼 단위 평가 방식이 실제로 쓰는 REPL 주도 개발에 훨씬 가깝다고 봄
    REPL 터미널 창에 직접 입력하는 건 ergonomics가 매우 나쁘고, 보통은 VSCode의 Calva나 Emacs의 CIDER 같은 것으로 커서 아래 폼을 어딘가의 REPL 프로세스에 보내는 방식이 더 현실적임

  • Clojure를 배울 가장 좋은 이유는 Reagent이고, React를 쓰는 방법 중 단연 최고라고 봄: https://reagent-project.github.io/
    shadow-cljs는 npm 라이브러리 사용을 쉽게 해줌: https://github.com/thheller/shadow-cljs
    기본 구성으로는 Go 백엔드와 Reagent 프론트엔드에 정착했음: https://github.com/nathants/aws-gocljs

    • Reagent는 좋고 10년쯤 이어져 왔지만, React 자체도 이미 복잡한데 그 위에 추가 복잡성이 너무 많이 얹힌다고 느껴서 React의 얇은 래퍼 쪽으로 옮겼음
      내부에서 무슨 일이 일어나는지 더 명확히 보고, 네이티브 React 컴포넌트와 더 단순하게 상호 운용하고 싶었음
      React 18 실험 지원을 따라잡는 것 같긴 하지만, Reagent는 최신 React 흐름에서 뒤처졌고 모든 성능 최적화 이점을 얻지 못할 수 있음
      아직 class component를 쓰고 hook을 쓰지 않으며, Hiccup 런타임 변환이 성능을 떨어뜨릴 수 있다는 우려도 있음
      다만 대부분의 경우 체감 문제는 아닐 테고, 화려한 걸 하지 않는다면 괜찮을 것임. Hiccup의 UI-as-data 모델은 그립기 때문에 언젠가 Reagent로 돌아갈 수도 있음
      상태 관리는 re-frame을 강력 추천함: https://day8.github.io/re-frame/
      처음엔 부담스러워 보일 수 있지만 문서가 훌륭하고, 이해하고 나면 모델이 매우 명확함
      Helix(https://github.com/lilactown/helix)나 UIx(https://github.com/pitch-io/uix) 같은 대안도 있고, Reagent 의존성을 거의 제거한 refx(https://github.com/ferdinand-beyer/refx)도 있음
      또는 UIx/Helix에 상호 운용 코드를 추가해 re-frame을 붙일 수 있음: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
    • Elixir 백엔드도 BEAM VM의 힘 덕분에 잘 맞았음
    • 그 구성에서 코드 분할이나 정적 사이트 생성이 되는지 궁금함
      2024년에 빈 HTML 파일을 내려보낼 수는 없고, 검색 최적화를 망치기 때문에 그게 아니라면 시도해보고 싶음
  • Clojure를 썼던 기간이 정말 좋았고 강력 추천함: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...

  • Daniel Higginbotham의 Clojure for the Brave and True는 Clojure를 배우기 위한 정말 훌륭한 자료라 강력 추천함
    온라인에서 무료로 읽을 수 있음: https://www.braveclojure.com/clojure-for-the-brave-and-true

    • 문체가 너무 장황하다고 느끼지만, 그런 스타일을 좋아하는 사람도 있다는 건 이해함
      이 책의 진짜 문제는 Clojure가 아니라 Emacs부터 가르치기 시작한다는 점임
      요즘엔 VSCode에서 오는 초보자가 많을 텐데, 그들에게는 큰 산만함이 됨
    • Aphyr의 Clojure from the ground up 시리즈도 매우 좋아함: https://aphyr.com/posts/301-clojure-from-the-ground-up-welco...
    • Emacs 경험이 없다면 VSCode에 Calva 플러그인을 쓰는 편이 나을 수 있음
  • 몇 년 전 동료가 Clojure를 시도하지 않더라도 History of Clojure는 읽어보라고 권했지만 미뤄뒀음: https://dl.acm.org/doi/pdf/10.1145/3386321
    그러다 Rich Hickey - Greatest Hits를 보고 나서 https://changelog.com/posts/rich-hickeys-greatest-hits, History of Clojure를 읽고 바로 배우기 시작했음
    Clojure는 무언가를 만들기 가장 재미있는 언어 중 하나이자 가장 아름다운 언어 중 하나임
    문법 자체라기보다는 좋은 설계와 조합을 통해 생각을 표현하게 해주는 방식이 머리를 기분 좋게 자극함
    아직 딱 맞는 반짝이는 도구를 찾고 있는데 아무것도 와닿지 않았다면 Clojure를 시도해볼 만함. 지금까지 본 언어 중 가장 간결하면서도 강력한 축에 듦

    • 몇 달 전에 Common Lisp를 배우면서 비슷한 느낌을 얻었음
      Clojure를 배우면 거기에 더해 얻는 게 있는지, 아니면 대체로 비슷한지 궁금함
  • LLVM 같은 것으로 컴파일되는 Clojure 버전이 있는지 궁금함
    Scala Native가 원래 그러려던 것과 비슷한 느낌인데, 실제로는 그렇게 자리 잡지 못했음
    함수형 프로그래밍은 좋아하지만 2024년에 Java 생태계는 너무 낡게 느껴져서 견디기 어려움

    • Clojure 런타임을 Clang/LLVM으로 구현하려는 작업이 진행 중이고, 핫 리로딩 같은 흥미로운 기능도 목표로 함
      https://jank-lang.org/에서 볼 수 있음
      아직 완전한 JVM Clojure와 기능 동등성에 도달하진 않았지만 개발을 주의 깊게 보고 있음
    • 지금 기준 최상위 댓글이 https://babashka.org/를 가리키지만, 이건 LLVM이 아니라 GraalVM 기반임
      사실 그게 크게 걸릴 일은 아닐 것임
    • 곧 나올 것임: https://jank-lang.org
    • https://jank-lang.org/
  • 관련 링크들:
    Try Clojure – An interactive tutorial in the browser - https://news.ycombinator.com/item?id=30423856 - 2022년 2월, 댓글 93개
    Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - 2011년 12월, 댓글 26개
    Try Clojure - https://news.ycombinator.com/item?id=1359682 - 2010년 5월, 댓글 60개

  • 멕시코에서 Clojure가 인기를 얻고 있고, 브라질도 Nubank 때문에 비슷한 흐름이 있을 것 같음
    컴퓨터 과학자들이 일하러 가고 싶어 하는 곳이고, 주로 Clojure로 일하는 듯함
    언어 핵심 멤버 일부를 고용했던 것 같고, 어느 시점엔 Elixir 창시자 José Valim의 회사도 인수했던 것으로 기억함
    그래도 여전히 주로 Clojure를 쓰는 회사로 보임

    • Nubank는 2020년에 Clojure 뒤의 컨설팅 회사인 Cognitect를 인수했고, José Valim의 고용주였던 Platformatec도 인수했음
      후자는 Platformatec의 프로젝트 관리 전문성을 얻기 위한 것이었고(https://building.nubank.com.br/tech-perspectives-behind-nuba...), 아는 한 Nubank에서 돌아가는 Elixir 코드는 없음
      ETL 파이프라인의 “다른 쪽”에는 Python이 있지만, 사용자-facing 영역은 아는 한 백엔드가 Clojure, Android와 iOS 앱이 TypeScript임
    • 중국어권 이름처럼 보이는 Clojure 사용자들을 자주 마주침
      중국에서도 Clojure가 의미 있는 흐름인지 궁금함