5 ポイント 投稿者 GN⁺ 2024-05-23 | 1件のコメント | WhatsAppで共有
  • 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 への感謝も記されている

1件のコメント

 
GN⁺ 2024-05-23
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 接続を使う完全な対話型構成へ移るのがよいが、初心者にはなじみのない流れで、設定も面倒に感じるかもしれない

    • Web へ楽しみを広げる準備ができたなら Biff を見るといい: https://biffweb.com
    • Babashka のいちばん良いところは、最近では本当に バッテリー同梱 だということだ
      業務アプリの統計を表示する小さな UI を作る必要があって HTMX と一緒に使ってみたが、とても良い体験だった
      Babashka には基本的な Web アプリに必要なものがほぼ組み込まれており、HTMX を使えば JavaScript フロントエンドを扱わずにページ内で動的ロードができる
      また bb --nrepl-server で nREPL を立ち上げたあと、Calva のようなエディタを接続してスクリプトを対話的に開発できるので、簡単な Web 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 もあるが、ユーザー向けの領域では、知る限りバックエンドは Clojure、Android と iOS アプリは TypeScript。
    • 中国語圏の名前に見える Clojure ユーザーをよく見かける。
      中国でも Clojure が意味のある流れになっているのか気になる。