2 ポイント 投稿者 GN⁺ 2024-04-22 | 1件のコメント | WhatsAppで共有

Racketプログラミング言語

  • Racketは成熟しており、実用的で、拡張可能で、堅牢かつ洗練されたプログラミング言語である
  • Racketは言語指向プログラミング(Language-Oriented Programming)のための言語であり、次のような特徴がある:
    • 高階発生型付け(higher-order occurrence typing)をサポート
    • ドキュメント生成のためのScribble言語を内蔵
    • Datalogのようなロジックプログラミングをサポート
    • 小さなマクロから大きなマクロ、容易なDSL作成、あらゆる構文のサポートなど、マクロシステムが強力
  • Racketのエコシステムは、ソフトウェア、チュートリアルとドキュメント、コミュニティ、書籍、教育、スワッグなどで構成される
  • RacketはNSF、DARPA、FIPSE、Exxon財団、Microsoft、Mozilla、Googleなど、さまざまな団体や個人から支援を受けてきた

GN⁺の意見

  • Racketの最大の長所の一つは、言語指向プログラミングをサポートしている点である。これによりドメイン固有言語(DSL)を容易に作成でき、生産性向上に役立つ
  • ただし、Lisp系言語の特性上、括弧が多用されるため、初めて触れる人には可読性が低く感じられるかもしれない。Clojureのように括弧の代わりとなる別の構文を導入するとよいかもしれない
  • チュートリアルとドキュメントがよく整備されており、学習しやすい。教育用途としても多く使われている
  • 汎用プログラミング言語として使うこともできるが、DSL作成やSICPなど教育用途に特化した側面がある。実際の本番環境で使うには、まだライブラリなどが不足しているように見える
  • 関数型言語を始めたい人には学習用として勧められる。ただし、実務ではHaskell、OCaml、F#なども検討するとよいだろう

1件のコメント

 
GN⁺ 2024-04-22
Hacker Newsの意見

要約:

  • Racketはコンパイラ、パッケージ管理システム、GUI IDE、Emacsバインディングなどの中核機能は魅力的だが、一部の計算機科学の教授たちが主導するプログラミング言語研究の部分にはあまり関心が持てない。
  • Racketはエディタでコードを書いてシェルで実行するPythonと異なり、長時間稼働するVMとREPLを相手にやり取りする必要があるため、ワークフローに慣れるのが難しい。
  • Racketのtyped/racket、racket/gui、scribble/baseなどの言語を1つのアプリケーションにどう統合するのかが明確ではない。各言語を説明するチュートリアルの章が互いに関連なく扱われていて混乱しやすい。
  • Racketは高速で実用的であり、堅牢な基盤と優れた並行性のストーリーを備えている。統合されたパッケージエコシステムと優れたドキュメント化システムも長所で、Pythonより後方互換性に優れている。
  • RacketでECサイト、iOS/macOS向けアプリ、Apache Kafka向けデスクトップクライアント、Lua向けの#langなど、実用的なプロジェクトを開発した事例がある。
  • Hacker NewsもArcで書かれており、Racket上で動作している。
  • GUIを含むバイナリ開発やJSON、XMLなどのパースにRacketが適している。
  • マクロシステムはCommon Lispと異なるため慣れが必要だが、メタプログラミングには向いている。
  • Lisp系言語が提示する学究的で純粋なプログラミング観は、実用的なアプリ開発とはかけ離れているように見える。