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

神秘的な

概要

  • Mysticalは 魔法陣風のPostScript表記 を目指す独自プログラミング言語案。
  • リング構造 で配列や辞書などのデータ構造を可視化・記述する特徴。
  • シジル(記号)や文字列 を独自形状で表現し、可読性と装飾性を両立。
  • 実行可能なインタプリタは未提供で、主に 可視化・表現手法 として提案。
  • 他言語への応用可能性 や今後のレイアウト最適化も議論。

Mystical: 魔法陣風PostScript記述システム

基本構造とリングの種類

  • Mysticalは リング(円環) を基本単位とし、 外周から内周へ 情報が流れる構造を採用。
  • 各リングは 3:00(右端)から反時計回り に内容が展開されることを原則とする。
  • リングには以下3種類が存在:
    • 実行可能配列 :PostScriptの { } に対応、内外に単純な円、内部に星印、開始/終了点は錬金術記号で表現。
    • 非実行配列[ ] に対応、星印なし、開始/終了は三角形で示す。
    • 辞書<< >> に対応、多角形+二重外周+単一内周、開始/終了は配列と同じ記号で表現。

サブリングと入れ子構造

  • サブリングは 親リングとの接続点 から開始し、 小円や点でリンク を表現することが可能。
  • PostScript上の [ ]<< >> の複雑なネストには非対応な場合あり、 非推奨な使い方 には注意喚起を行うこと。

テキスト・シジルと表記法

  • リングの縁には テキストまたはシジル(記号) を配置。
  • PostScriptの /name三角形内または重ね文字 で表現し、 文字列(text))はカルトゥーシュ状の囲みで表現。
  • 標準シジルは 演算子やキーワード を視覚的に表現、例:dup, add, arc, stroke など。
  • ユーザー定義シジル も追加可能で、1単位四方内に収める設計指針を推奨。

定義の省略記法(リガチャ)

  • /name { ring } def という関数定義パターンには 専用リガチャ (省略記法)を採用し、 defシジルを省略 して可読性・省スペース性を向上。
  • この省略記法は 実行可能配列内限定 で、辞書内では適用しない設計。

Mystical画像生成関数

  • "mystical.ps" 内に以下の 描画関数 を用意:
    • mystical:配列・xarray・dictをMystical形式で描画、必要に応じて再帰的にサブ構造を描画。
    • mystical_evoke:辞書内の名前を参照して描画。
    • mystical_evoke_label:名前付きでラベルを付与し、シジルを正立させて描画。
    • _unscaled付き関数はスケーリングせず、リング幅1単位で大きく描画。

レイアウトと現状課題

  • 現状の実装は 衝突回避重視で余白が多く、最適化余地あり。
  • 例示画像では レイアウト手動調整 を実施、今後は自動レイアウト改善を目指す提案。

プログラミング言語としての位置付け

  • 実行エンジンは未実装、人間が読んでPostScriptへ変換し実行する前提。
  • 表現手法・可視化ツール としての側面が強い設計思想。

他言語への応用可能性

  • Forthのような演算子中心言語 には応用可能性あり。
  • 複雑な文法やネスト が多い言語では、リング増加による過剰な複雑化の懸念を指摘。

ダウンロード・情報源

  • GitHubやCodeberg でソース公開。
  • 詳細・サンプル・標準シジル一覧は公式リポジトリ参照を推奨。

  • 提案 :魔法陣風プログラム表現手法
  • 確認 :PostScript構文との対応関係と可視化ルール
  • 設計 :リング構造・シジル・省略記法の導入
  • 注意 :非対応なPostScript構文やレイアウト課題
  • 展望 :他言語応用可能性・自動レイアウト改善

Hackerたちの意見

日本のアニメ「電脳コイル」を思い出すな。子供たちが床に作者のプログラムとほぼ同じものを描いて、それを何かの魔法みたいに使ってたんだよね。めっちゃおすすめ!

あの番組大好きだった!子供たちが新しいテクノロジーにどう対処するかが、大人とは全然違うのを見せてくれたよ。グーグルグラスよりも半世代前に放送されてたしね。

私も全く同じことを言いに来た!なんて素晴らしい番組なんだ。

トーレス・ケベドが最初にやったけど、機械のハードウェアとプロセスにシンボルを使ってたよね。それに、バベッジも文字通りギアを使ってたし。エレクトロメカニカル計算について調べてみて。

カオスマジックとシジルキャスティング101についてもっと知りたいなら: https://archive.org/details/the-psychonaut-field-manual

これは、Aphyrの「技術面接を乗り越える」シリーズの異世界の主人公が好むプログラミング言語に違いないね。[1] シリーズに独自のエントリーがあってもいいと思う。 [1] https://aphyr.com/posts/354-unifying-the-technical-interview

これ知らなかった、投稿ありがとう!めっちゃ面白いね。

実際のプログラミング面接でこれを使ってみたいな。

これはネオグラフィーとコンラングの融合だね。大好き!美しいスクリプトを使ったユニークなプログラミング言語を見てみたいな。自分でも作ろうと思ったことがあるけど、結局やらなかったんだよね。

ゲーム用に錬金術や神秘的なシンボルを調べてるんだけど、シンボルやアルファベットの参照はたくさんあるのに、こういう大きな図を作るための文法の紹介がほとんどないのがイライラする。これはすごい!体系的に表現されたコードが、こんなに美的に pleasing だなんて、すごく嬉しい。

これ、絶対ハマるよ!: https://www.reddit.com/r/UFOs/comments/145teoz/isaac_and_the...

事前に:ドアを閉めて、窓と出口も閉じる;時間が来るまで待つ。呪文書を開いて、勉強して、読んで(スキャンして、選んで、教えて);書いて、みんなが見てる間に呪文を印刷して、長さを逆にして、もう一度書く;クモを殺して、潰して、切って、分けて、殺す。腕を外して、シフトして、待って聞く(聞いて、待って)、… — 匿名, "Black Perl" https://en.wikipedia.org/wiki/Black_Perl

これすごいね、作品のライセンスは何なの?これの派生版(再帰だけを使ったフォースみたいなやつ)が、今やってるゲームプロジェクトにぴったりなんだ。呪文の視覚的表現が足りなくて、Mysticalがユーザーがゲーム内で自分の呪文を構造的に書ける方法の欠けていたピースを提供してくれる。普通のプログラミングと同じようにゲームの世界の一部に感じられるんだ。

Noitaには、呪文をプログラム的に構築するための似たようなシステムがあって、繰り返しや掛け算、複製などができるよ: https://store.steampowered.com/app/881100/Noita/

おお、これ試してみなきゃと思ってたけど、やっぱりすごいね。見た目も良くて面白いアルゴリズムをデザインするのはめっちゃ楽しいし、結果も意外と読みやすい。上下逆さまになると混乱しやすい記号(bとか括弧みたいな、begin/endの記号)に慣れるのにはちょっと時間がかかるけど、他の人と同じようにLispやForthでやってみたいな。