プログラミング
Rhombus言語 1.0
Rhombus Language 1.0 (blog.racket-lang.org)
要約
Rhombus言語のバージョン1.0がリリースされました。これはRacketを基盤とした汎用、関数型、拡張可能なプログラミング言語です。Lispの強力なマクロシステムと一般的な構文を組み合わせることで、最新のプログラミング概念をより一貫性のあるアクセスしやすい方法で提供することを目指しています。Rhombusは、小さなスクリプトから大規模なシステムまで対応できる柔軟性と、ドメイン固有言語(DSL)のサポートを強化するメタプログラミングの能力を特徴としています。
全文翻訳
2026年6月22日、Rhombusバージョン1.0が利用可能になりました!インストールはこちら: https://rhombus-lang.org/download.html 詳細情報: https://rhombus-lang.org/ なぜ新しい言語なのか?: https://rhombus-lang.org/goal.html (以下にコピー) よくある質問: https://rhombus-lang.org/faq.html (以下にコピー) プログラム例: 以下を参照してください。
Rhombusの主な貢献者: Mashfi Ishtiaque Ahmad、Taylor Allred、Nia Angle、Wing Hei Chan、Stephen De Gabrielle、Robert Bruce Findler、Jacqueline Firth、Matthew Flatt、Oliver Flatt、Kiran Gopinathan、Ben Greenman、Siddhartha Kasivajhula、Alex Knauth、Jay McCarthy、Lucas Myers、Alec Mills、Sam Phillips、Sorawee Porncharoenwase、Jens Axel Søgaard、Sam Tobin-Hochstadt。
Rhombusの目標
現代のプログラミング言語は、字句スコープ変数、クロージャ、オブジェクト、パターンマッチング、型パラメトリック性など、最も重要なプログラミング概念に関するコンセンサスを反映しています。では、なぜまた新しいプログラミング言語なのでしょうか?基本を超えて、一つの言語仕様には収まりきらない良いプログラミング構成要素のアイデアがまだたくさんあります。さらに、特定のドメインは、そのドメインに合わせた言語サポートから恩恵を受けます。言語の拡張性は、管理可能な言語サイズという目標と、幅広いタスクへの適合性という相反する目標のバランスを取るのに役立ちます。多くの新しい言語は、拡張性を可能にするマクロシステムを含んでいますが、他のマクロシステムは、Racketを含むLispの伝統に存在するマクロほどの表現力と流動性を達成していません。同時に、その表現力はLispのミニマリストで括弧指向の表記法から切り離すのが困難でした。Rhombusは、日常的な目的(マクロを必要としない)のために親しみやすく使いやすいように設計されており、その一部として従来の構文を採用しています。また、Racketと同じくらい拡張可能でありながら、Racketの最先端の機能をより一貫性があり、幅広い層にアクセスしやすいものにしています。
よくある質問
Rhombusはどのようなプログラミング言語ですか?
Rhombusは汎用で、関数型、拡張可能なプログラミング言語であり、優れたパフォーマンス、広範なドキュメント、実用的なライブラリを備えています。対話性と柔軟性を提供する動的言語ですが、小さなスクリプトから大規模なシステムまでスケールするために必要な静的および抽象化強制構造も備えています。
そのような言語はすでにたくさんあるのではないでしょうか?
楕円(…)を使ったコンパクトな繰り返しや、優れた漸近的複雑性を持つデフォルトの関数型データ構造など、Rhombusに固有だと私たちが考える小さなことはたくさんありますが、大きな違いは拡張性です。Rhombusの目標を参照してください。
高速ですか?
いくつかのベンチマークがあります。
どうすれば始められますか?
「Getting Started」を参照してください。
DrRacketを使わなければなりませんか?
DrRacketプログラミング環境は始める最も簡単な方法ですが、VSCode用のMagic RacketまたはEmacs用のRacketモード(そのracket-hash-lang-mode主要モード付き)を参照してください。
RhombusとRacketの関係は何ですか?
RhombusはRacket上に構築されており、DrRacketプログラミング環境やracoコマンドラインスイートなど、多くのRacketツールに依存しています。大まかに言えば、これらの言語はElixirとErlang、またはKotlinとJavaと同じような関係です。しかし、RhombusはRacketそのものだと言っても過言ではありません。なぜなら、Racketは多言語エコシステムになることを意図しており、単に`#lang racket`の代わりに`#lang rhombus`でRacketモジュールを開始するだけで、Rhombusモジュールになるからです。Rhombusは、Racketの多言語機能を前進させ、RacketとRhombusの上に構築されるより多くの言語と方言を可能にすることを意図しています。
RhombusはS式のないRacketで、構文が違うだけですよね?
新しい構文はRhombusの主な目標を反映していますが、`#lang rhombus`は他の方法でも`#lang racket`を改善しています。より良い事前定義されたデータ構造(特にリスト)、新しいクラスシステム、遍在するパターンマッチング、契約から型までのスペクトルの新しい点としての拡張可能な静的情報、階層的な名前空間の組織などです。これらの一般的な言語改善は、S式に基づくRacketの方言のために実装することも可能でしたが、Rhombusの言語と構文の共同設計により、より多くの可能性が開かれ、部分の合計よりも大きな全体を生み出しました。
RhombusはS式のないRacketなので、構文はホーモイコニックではないですよね?
やあ、リスパーの仲間よ!Rhombusは二院制の構文を持っており、S式レイヤーに相当するものがシュラバリーナ記法です。これはRhombusのマクロとメタプログラミングへのアプローチの重要な部分です。この小さな自己言及的インタプリタに驚かされるかもしれません。
Rhombusは拡張可能な言語、ドメイン固有言語(DSL)、および/またはマクロに興味がある場合にのみ役立ちますか?
Rhombusを使用することが必ずしもマクロを書くことを意味するわけではありません。なぜなら、Rhombusは基本言語で期待されるすべて(そしておそらくそれ以上)を提供してくれるからです。豊かな基本言語がマクロの拡張性によって可能になっているという事実は、実装の詳細または学術的な懸念と見なすことができます。もしあなたが関数型、動的言語を楽しみ、現代的な統合に興味があるなら、Rhombusはあなたのためかもしれません。
マクロは本当に良いアイデアですか?
Rhombusの設計は、メタプログラミングがソフトウェア構築の基礎であり、メタプログラミングへの最も効果的なアプローチは、汎用言語と統合されたものであるという信念を反映しています。特に、汎用言語内にドメイン固有言語(DSL)を accomodating することは、アプリケーションに統合するのが難しい孤立した言語や、それ自体が必然的に進化する必要があるDSLに追加された中途半端な抽象化構成要素など、一般的なDSLの落とし穴をいくつか回避します。一方、メタプログラミングを真剣に考えることは、DSLだけでなく、ドキュメント、分析、ツールサポートなどのメタプログラミングタスクにも利益をもたらします。「マクロ」という用語は、さまざまな意味や含意を想起させます。Rhombusで採用されているアプローチは、より正確にはコンパイル時メタプログラミングまたはオープンコンパイラAPIと特徴付けられるかもしれませんが、その起源はLispスタイルのマクロにあります。
Rhombusは学術言語ですか?研究言語ですか?教育言語ですか?
Rhombusは学術界に根ざしていますが、教育言語ではなく、単なる研究言語でもありません。これは本番環境での使用を意図しています。Rhombusは、最も広く使用されている言語で利用可能な豊富なライブラリをまだ提供できません。しかし、Racketの派生として、存続し進化するために必要なリソースとコミュニティを持っています。ユーザーは、Racketが何十年も提供してきたのと同様の安定性、一貫性、サポートを期待すべきです。
自律的なコーディングエージェントの時代に、新しいプログラミング言語やDSLは必要ですか?
誰にもわかりません。AIコーディングに関する一般的な初期の予測は、新しい言語の終わりを告げるだろうというものでした。なぜなら、AIはトレーニングデータに表されている最も人気のある言語しか使用できないだろうからです。その予測は実現していません。2026年5月現在(Rhombus 1.0以前でも)、コーディングエージェントはイディオムに沿ったRhombusコードを書くのがかなり得意です。おそらく良いドキュメントが役立っているのでしょう。DSLについては、プログラミングにおける議論のレベルを上げることは、人間のプログラマーにとっても、自律的なプログラミングエージェントにとっても、そしてそれらの間の対話にとっても良いことのように思われます。その場合、私たちはより良いDSLサポートを備えた言語を求めるでしょう。それがRhombusの目標です。
Rhombusのプログラム例
https://rhombus-lang.org/のRhombusウェブページには、短い例のカルーセルが含まれています。より大きく、現実世界の例については、まだ初期段階ですが、Rhombusの貢献者たちは、Rhombusの配布物に含まれるライブラリを含め、多くのタスクにRhombus自身を使用しています。PilleはRhombus上に構築された新しい言語です。LLVMをバックエンドとして使用しながら、Rhombusの言語構築機能を行使しています。これはメタプログラミングを多用する例です。Economancyは、Rhombusで審判、プレイヤープログラム、最小限のGUIインターフェースがすべて関数型プログラミングのコースの一部として実装された卓上ゲームです。これは…