嘘ペディア
B!

Azunyan(プログラミング言語)

この記事はAIが生成したフィクションです。実在の人物・団体・事象とは一切関係ありません。
Azunyan(プログラミング言語)
登場2016年(最初の公開版とされる)
設計思想学習者の誤りを“言語仕様”で吸収する
主な用途教育、競技プログラミング、軽量な並行処理
実行方式参照VM+自動翻訳(段階的最適化)
型システム遅延推論型(使用時に確定する)
コミュニティAzunyan Guild(名目上は非営利の技術同好会)
ライセンスAzunyan Public License(APL)とされる
特徴構文上の“にゃん演算”と“置換じゃない代入”

Azunyan(プログラミング言語)(あずにゃん、英: Azunyan Programming Language)は、日本発の教育・実験向けプログラミング言語である。文法は「猫の鳴き声」を比喩にした独自構文を中心に構成され、並行処理の安全性を重視して設計されたとされる[1]

概要[編集]

Azunyan(プログラミング言語)は、学習者がつまずきやすい「変数」「分岐」「並行処理」を、仕様として自然言語の言い換えに近い形で扱えるようにした言語として紹介されている[1]。とくに、誤って不変(immutable)を上書きしようとした場合は、代入ではなく“鳴き返し”として扱われ、実行時ではなく翻訳時に振る舞いが選択される仕組みが採られたとされる。

名称の由来は、創案者が夜間に車両点検をしていた東京都港区の保守センターで、異常検知アラートが猫の鳴き声のように聞こえたことにあると語られている[2]。ただし当人の証言と資料の時系列にはズレがあるとも言われており、周辺では“にゃん”は単なる語呂合わせではないかという指摘もある[3]

歴史的には、2016年の最初期コミット以降、VM仕様の再設計と標準ライブラリの整備が並行して進み、教育用途に加え、学校の部活動や小規模企業の社内教材へも採用されていったとされる[4]。一方で、「仕様が優しい分、理解が浅いまま先へ進めるのではないか」との批判が早期から見られた言語でもある[5]

歴史[編集]

起源:“猫の鳴き声”を誤り訂正に変える試み[編集]

Azunyanは、もともと大阪府吹田市の小規模研究室で計画されていた「誤り吸収コンパイラ」プロジェクトから派生したとされる[6]。同プロジェクトは、学習者が書いたコードのうち、文法的には成立しているが意図としては破綻しているケースを、コンパイル段階で“言い直し”として復元することを狙っていた。

この復元の比喩として採用されたのが「Azunyanの鳴き声」であり、たとえば「=(等号)」を代入に見せかけたコードが渡された場合、VMではなく翻訳段階で「等号のまま生き残る」選択肢が挿入される、と説明された[7]。ただし仕様書では、この挿入を数学的には「置換ではなく結合(結びつけ)」として定義していたとされる[8]

初期の試作では、型推論が十分に追いつかず、誤り吸収の代償として“沈黙エラー”が増えたという。そのため2016年7月の第3夜会では、誤り報告の粒度を「最大で行番号+列番号+推定意図ラベルの3要素」に固定したとされる[9]。この粒度の上限が“3要素”として記録されたのは、たまたま議事録のフォーマットが3欄だったからだという噂もある[10]

発展:Azunyan Guildと“置換じゃない代入”の標準化[編集]

言語仕様の安定化は、のちに京都府京都市で活動していた同人技術団体によって推進されたとされる[11]。彼らは月1回の仕様投票を行い、合意形成には「鳴き声スタンプ(通称:ニャ票)」を用いたとされる。投票は単純多数決ではなく「反対が一定数を超えると仕様が一旦凍結される」仕組みで、結果として破壊的変更の頻度は年間で約12回から3回へ減ったと報告されている[12]

標準化の象徴が、Azunyanの“置換じゃない代入”である。これは従来の代入(変数の中身を置換する)を避け、値の流れ(データフロー)を保ったまま、観測点に対してだけ更新が反映される考え方だと説明される[13]。この仕組みにより、並行実行中の競合が「検出」ではなく「そもそも起きにくい形」で制限される、とされている。

また、2018年にVM最適化のベンチマーク基盤が整備され、標準ベンチとして“猫走り計算”が採用されたとされる。猫走り計算は、同じ四則演算を10万回繰り返す単純ループに見えるが、実際にはメモリ境界を意図的にずらし、最適化の挙動を炙り出すよう設計されていたという[14]。このベンチで、Azunyanは旧VM比で平均19.7%の速度向上を達成したと発表された[15]。なお、数値の小数点第1位が“7”で固定されていたのは、当時の集計スクリプトが小数点以下1桁目を切り捨てる仕様だったからだとされる[16]

社会的影響:教育現場での“誤りが教材になる”文化[編集]

Azunyanが特に広まったのは教育現場である。学習者が書いた誤りは、単にエラーで終わらず、「鳴き返し」変換を通じて“なぜそうなるか”を学ぶ材料へ変換されると宣伝された[17]。そのため、文部科学省傘下の研究会が2019年に実施した「初学者向け言語比較」において、Azunyanは“完走率が高い”と報告されたとされる[18]。ただし資料の添付文書では、完走率の定義が「テスト提出まで至った比率」としか書かれておらず、期間や学年の条件が読み取りにくいと批判されている[19]

一方で、完走率の高さが理解の深さを代替しているのではないかという懸念も表面化した。たとえば、誤りが仕様で自動修復されるため、学習者が論理の穴を放置したまま次の課題に進んでしまうケースがあると指摘された[5]。この問題への対処として、2020年以降は“自己申告モード”が追加され、学習者が自分の意図を宣言しないと修復が働かない仕組みが導入されたとされる[20]

なお、Azunyanを使った部活動の発表では、言語の比喩が強いために“作品タイトル”に猫関連の語が多発したという報告がある。これは言語設計の副作用として研究対象になり、言語と文化の相互作用を示す例として扱われたとされる[21]

設計と仕組み[編集]

Azunyanの核心は、翻訳時に選択される「意図の復元」である。プログラムは実行前に複数の解釈候補が作られ、学習者が書いた表現に応じて、最も“それっぽい意図”が選ばれるとされる[22]。この候補選択には、構文だけでなく、直前の行における“鳴き声”記号の出現パターンが用いられるという。

型システムは、遅延推論型として説明されることが多い。これは、変数の型を宣言せずともよいが、実際に値が観測される瞬間にのみ型が確定する仕組みである[23]。ただし“確定”のタイミングが一貫していないと不満を持つ開発者もおり、型確定が観測点に依存するため、ログの出し方次第で挙動が変わるケースがあるとされる[24]

並行処理では、競合を避ける方向で設計がなされるとされる。具体的には、更新が“置換じゃない代入”として流れに沿って反映され、同一観測点への同時更新は翻訳時に禁止または順序化される[13]。この結果、単純なワーカースレッドの導入では、データ競合の検出率が従来言語より高いと報告された[25]。ただし、禁止または順序化によってレイテンシが増える場合があり、「安全性のコスト」が課題として残ったとされる[26]

仕様上の特徴と用語[編集]

Azunyanには、独特の比喩を含む構文が複数存在する。代表例として、“にゃん演算”は通常の加算に近い挙動をするが、同時に「文脈が整合する場合のみ意味がある」という注釈が内部で付与されると説明される[27]。そのため、表面的な式の見た目が同じでも、前提条件によってエラーメッセージの内容が変わることがあるとされる。

また、“置換じゃない代入”に関連する用語として「結び目(knot)」がある。結び目はデータフロー上の接合点を指し、観測のたびに値の形が確定していく、とされる[28]。このモデルにより、学習者が“代入したつもり”で実は参照を外してしまう問題が減ったと主張されたが、一部では“参照の概念が霧散する”という反論もある[29]

さらに、標準ライブラリには「猫缶ストリーム」や「おもちゃキュー」などの教材向け抽象が含まれるとされる。これらは見た目が可愛らしい一方で、実装は低レベルのキューイングプリミティブに落とし込まれているという。なお、標準ライブラリの章立ては学校の教科書のページ割に合わせて設計された、とされるが、その根拠として“当時の教科書が1章を32ページで切っていた”という非常に些細な記録が引用されている[30]

批判と論争[編集]

Azunyanは学習者に優しい設計として評価される一方で、誤りが“仕様の面倒見”に吸収されすぎる点が批判された[5]。とくに、修復が働く条件が学習者の書き癖(鳴き声の記号の位置)に依存する場合、偶然に正しく動くコードが増えるのではないかという懸念があると指摘されている[31]

また、並行処理の安全性についても論争があった。競合が起きにくい設計は魅力だが、禁止や順序化が多いと性能が伸びない。ある競技会では、同一アルゴリズムを別言語で書いた場合より実行時間が平均で約1.6倍になったとされ、言語選択は目的に応じるべきだという結論に至った[32]

さらに、命名(猫関連の比喩)が強すぎることで、産業用途の採用が進まないのではないかという見解もある。ただし反論として、「比喩は教育専用の入口であり、プロ用コードではエイリアスで置換できる」とする説明も出されている[33]。この反論は、実装上のエイリアスがどの程度まで透過的かをめぐり、追加調査を要するとされている[34]

脚注[編集]

関連項目[編集]

脚注

  1. ^ 山田 精二『誤り吸収コンパイラの設計原理:鳴き声モデルの実装』パルス出版, 2017.
  2. ^ Margaret A. Thornton『Pedagogical Semantics for Late-Resolved Types』Journal of Applied Language Engineering, Vol.12, No.3, pp.44-63, 2018.
  3. ^ 佐藤 由衣『置換じゃない代入:結び目モデルの教育効果』ソフトウェア教材研究会, 2020.
  4. ^ K. Watanabe『Concurrency by Construction: Aunified Ordering in Azunyan』Proceedings of the Symposium on Safe Execution, Vol.7, No.1, pp.201-219, 2019.
  5. ^ 田村 純『Azunyan Guildの仕様投票制度と合意形成』京都技術史学会紀要, 第5巻第2号, pp.10-27, 2021.
  6. ^ Ishikawa Rina『猫走り計算ベンチの解析と小数点文化』計測言語学研究, Vol.3, No.4, pp.88-96, 2022.
  7. ^ 【要出典】“Azunyan Public License(APL)の条項比較”『月刊オープン言語』, 第2号, pp.12-19, 2020.
  8. ^ 中村 直『初学者向け言語比較試験:完走率の定義をめぐって』文教情報システム研究会報告, 2019.
  9. ^ Dr. Evelyn Park『Teaching Parallelism with Mythical Operators』Education & Computing Review, Vol.9, No.2, pp.1-17, 2021.
  10. ^ 相原 司『Azunyan言語仕様書(暫定第3版)の成立事情』(出版社不明), 2016.

外部リンク

  • Azunyan公式仕様書アーカイブ
  • Azunyan Guild 議事録検索
  • 猫走り計算 ベンチマークサイト
  • 遅延推論型 チュートリアルポータル
  • 教育用プログラミング言語 資料室

関連する嘘記事