世界を動かす技術を、日本語で。

レッドプログラミング言語

2025年5月21日原文(red-lang.org)

概要

  • Red は、REBOLに強く影響を受けた 次世代プログラミング言語
  • ヒューマンフレンドリーな構文多様なプログラミングパラダイム を提供。
  • 自己記述的 かつ 全スタック対応 の言語設計が特徴。
  • 単一実行ファイル でクロスプラットフォームに対応し、依存関係が不要。
  • システムプログラミングから高水準スクリプトまで 幅広く対応可能。

Red: 次世代フルスタックプログラミング言語の特徴

  • REBOL に強く影響を受けた設計思想を採用すること
  • 人間に優しい構文 を重視し、直感的なコード記述を実現すること
  • ホモアイコニック(自己記述的) な言語・データフォーマットを持つこと
  • 関数型・命令型・リアクティブ・シンボリック など複数のパラダイムを統合すること
  • プロトタイプベースオブジェクト をサポートすること
  • マルチタイピング による柔軟な型システムを実現すること
  • 強力なパターンマッチング 機能を組み込むこと
  • マクロシステム を備えること
  • 50種類以上の組み込みデータ型 を提供すること
  • 静的コンパイル・JITコンパイル(将来実装予定) によるネイティブコード生成を可能にすること
  • 正しいクロスコンパイル を実現し、異なるプラットフォーム間でのバイナリ生成を容易にすること
  • 1MB未満の実行ファイル 生成、外部依存なしで動作すること
  • アクターや並列コレクション(将来実装予定) による並行・並列処理の強力なサポート
  • Red/System DSL による低レベルシステムプログラミング機能を持つこと
  • PEGパーサDSL を組み込み、複雑なパターン解析を容易にすること
  • 高速かつコンパクトなガーベジコレクタ を搭載すること
  • クロスプラットフォームのGUIシステム、UIレイアウトDSL・描画DSLを内蔵すること
  • JVMブリッジ によるJavaとの連携をサポートすること
  • 高水準スクリプティングREPL 環境を提供すること
  • GUI/CLIコンソール を含み、ユーザーインターフェースを選択可能とすること
  • Visual Studio Codeプラグイン による開発支援機能を備えること
  • 高い組み込み性低メモリフットプリント を実現すること
  • 単一ファイル(約1MB) にツールチェーン・標準ライブラリ・REPLを全て内蔵すること(現在は一時的に2ファイル構成)
  • インストールやセットアップ不要 で即利用可能とすること
  • 「楽しい」開発体験 を保証すること

フルスタック言語としてのRedの意義

  • 「フルスタック開発者」 の概念を 言語レベル で実現すること
  • システムプログラミング から 高水準スクリプティング まで、単一構文で幅広いタスクに対応可能とすること
  • どのプラットフォームからでもどのプラットフォーム向けにも バイナリ生成を可能にすること
  • OS付属のもの以外に依存しない 単一実行ファイルでの配布を実現すること
  • システムの柔軟な再定義や拡張 を可能にし、 リテラティブなコード高性能 を両立すること
  • 「言語構築セット」 としての側面を持ち、用途ごとに適切な抽象度で開発できること

利用例・適用範囲

  • デバイスドライバシステムレベルのプログラム 開発に対応すること
  • プラットフォームネイティブなGUIアプリケーション の構築を支援すること
  • 共有ライブラリ高水準スクリプト の開発を単一言語で実現すること
  • 共通構文 で多様な抽象度のコードを書くことができること

歴史・発表

  • 2011年3月 のReBorCon 2011カンファレンスで初公開されたこと
  • 2013年7月 のRecodeカンファレンス(モントリオール)で最新プレゼンテーションが行われたこと
  • YouTube での発表動画が存在すること
  • Recode 2013プレゼン資料(PDF) や過去のカンファレンス資料(SFD 2011, ReBor 2011)が参照可能なこと

まとめ

  • Red は、 全スタック対応自己記述的高性能単一ファイル配布 という特徴を持つ、 革新的な次世代プログラミング言語 であること
  • 幅広いプログラミング領域 で活用できる柔軟性と拡張性を追求すること
  • 今後の開発ロードマップコミュニティ活動 にも注目すること

Hackerたちの意見

これはREBOLの後継で、Amigaのカーネルを設計したカール・サッセンラートがデザインしたものだよ。何度か見たことがあるけど、すごく面白い。だけど、1行も書いたことはないんだ。

「1988年、サッセンラートはシリコンバレーを離れ、サンフランシスコの北2時間にあるウキアバレーの山に移住しました。そこから、Pantaray、American Multimedia、VideoStreamなどのマルチメディア技術会社を設立しました。また、AmigaのためにLogoプログラミング言語を実装し、CDTVのソフトウェアOS開発を管理しました。CDTVは初期のCD-ROMテレビセットトップボックスの一つです。そして、インターネットテレビセットトップボックスの一つであるVisicorp EdのOSも作成しました。」なんて伝説的な人なんだ!

一度、シンプルなウェブスクレイパーと画像ダウンローダーを作るために使ったことがあって、それにはすごく良く働いたよ。その言語にぴったりだった。(それはREBOLで、REDじゃなくて、かなり昔の話。)正直、今はPythonでやっちゃうけど、面白さはないけどね。

20年くらい前に、仕事でマネージャーのためにいくつかの作業を自動化する小さなアプリをREBOLで作ったことがあるんだ。結構いい感じだけど、これで何か大きなものを書く気にはなれないかな。

どうやって見つけたかは覚えてないけど、REBOLは25年くらい前に学んだ最初のプログラミング言語の一つだったんだ。個人プロジェクトのほとんどは今でもそれで書いてるよ。Redに変換することはまだ試してないけど。

変な暗号通貨関連のことをやり始めた時点で、もうダメだと思ったよ。いつか1.0のリリースにたどり着いてほしいな。

同じく。ICOの話をし始めてからは、ブロックチェーン関連のダイアレクトに集中しすぎて、定期的にフォローするのをやめちゃった。レッドシステム言語、通常のスクリプト言語、クロスプラットフォームのGUI、ネイティブ実行ファイルを持つアイデアは本当にクールだったけどね。2015年頃に興味を持ってたのを覚えてるから、今どうなってるのか気になる。プロジェクトがすごく野心的なのは分かってるけど、ほとんどの人が実用的だと考える段階にどれくらい近づいてるのかな。

面白いね、これで少しはなぜこうなるのか説明できる。https://i.imgur.com/a/phd4lVr

これは俺が絶対に学べなかったプログラミング言語だわ。何も理解できなくて、裏で何が起こってるのか全くイメージできない。

これはリスプだけど、括弧の代わりに角括弧を使ってる感じだね(それに、標準ライブラリにGUIライブラリみたいなランダムなものがたくさんある?)

大学の時にREBOLについての論文を書いたことがあるよ。すごく面白いけど、文法は確かに変わってる。関数呼び出しの文法はForthっぽいけど、トークンの順番が逆になってる感じ。だからリスプみたいだけど、括弧が必須じゃない。例えば、send friend@rebol.com read http://www.cnn.comっていう例だと、readは1つの引数を取ることを知ってて、sendは2つの引数を取ることを知ってるから、結局は(send friend@rebol.com (read http://www.cnn.com))みたいにグループ化される(これは有効な文法だと思うけど、そのASTノードは「括弧」と呼ばれる)。不思議なことに、この言語にはちょっと場違いなインフィックス演算子もあるんだ。'parser'[1]がどう動いてるのか全く分からないよ。[1] 'parsing'はすごく遅く行われるから、そう呼ぶのが変な感じがする。配列を評価可能な式の表現として扱って評価する方法を知っているもの。

これが俺が絶対に学べなかった唯一のプログラミング言語だ。Urbitのことを聞いて、これを見てみて: https://developers.urbit.org/overview/nock

Hacker Newsで議論の続きを見る