1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.NET共通言語ランタイム (CLR) 上で走行する日本語プログラミング言語Mind8中間コード(Hello by mind8)

1
Last updated at Posted at 2026-10-24

はじめに

Mindの単語拡張としてはC言語とTclがありますが、どちらもいろいろたいへんなので、.NET言語、具体的にはC#でMind単語が書けるようになるといろいろラクかなという願望があります。
Mindのランタイム中間コードは非常に実装言語と疎のつくりになっているので原理的には実現可能と考えていましたが、実装がたいへんでとん挫しておりました。(ちょうど2年前)

しかし、昨今GitHub Copilot Pro+の余裕のある推論量に触れて、もしかしてもしかして、こういう機械的なことって得意なのという気がして、やらせてみる(やっていただく)ことにしました。

本記事はその結果報告です。実装・検証自体は上記の記事投稿後の数10時間後には完了していたのですが、人間系の記事化に時間がかかっていたという経過でございます。

お題のC#ソースコードのクラス構成

お手数ですが上記の記事をご参照ください。

クラスの説明と対応ソースファイル構成

お手数ですがこちらも上記の記事をご参照ください。

使用AI

Microsoft Copilot

Windows11アプリケーションのMicrosoft Copilot。昨年末から日本語プログラミング言語あおい Aoi(Re:Mind)の原型を作成してもらった生成AI123。モードは「無料プラン」。

GitHub Copilot

GitHub CopilotのPro+版。あおい実装4と検証の主担当。スーパバイザとしてMicrosoft Copilotを使いGitHub CopilotのCodeAgent推論量を最小化するプロンプトをCopilotで生成しGitHub CopilotのCodeAgentで実行という工法?を採用していました。ただし、Pro+版移行でこの点はあまり気にしなくなっています。

Dispatcherクラス(C#関数配列)

ディスパッチャ本体クラスのC#関数配列部分です。
お手数ですがこちらも上記の記事をご参照ください。

正直ここの実装がしんどかったです。ありがとうGitHub Copilot!:joy:

お題のMind8の中間コードファイル

当時、下記のコードの実行部分くらいすぐに実装できるだろうと甘く考えておりましたところ、スタートアップの中間コードが大量に実行されることが判明。

hello.src
メインとは
    「Hello by mind8」を 表示すること。

スタートアップ側の検証コードをはぶいたバージョンのconsoleランタイムを生成して、ステップバイステップバイで走行範囲を広げていたのでした。

c:\developments\vscode\mind8dispatch>dir hello.mco

2024/04/18  20:53            43,544 hello.mco
               1 個のファイル              43,544 バイト

詳しくはこちらの記事をご参照ください。

実行結果 お題のMind8の中間コード実行リスト

中断時点で未完走でしたLevel7が完走しました。このずらずらとした数値リストはC実装オリジナルランタイムとの比較検証用に実行中のMコードとスタック状態をリスト出力したものです。75ステップ以前は割愛しています。

  76 004E     78   3512   1022       14     8660   1022     8676      116
  77 00EC    236   3518   1020        0        0   1022     8676      116
  78 0096    150   3524   1022       14     8660   1022     8676      116
  79 026D    621   3526   1020        0        1   1022     8676      116
Hello by mind8  
  80 0020     32   3528   1024        0        0   1022     8676      116
  81 0020     32   8678   1024        0        0   1023      116        0
  82 801A  32794    118   1024        0        0   1024        0        0
  83 002F     47    106   1024        0        0   1023      118        0
  84 00A5    165   8236   1024        0        0   1023      118        0
  85 00C1    193   8250   1022       10     8238   1023      118        0
実行終り
  86 801B  32795   8252   1024        0        0   1023      118        0
  87 002F     47    110   1024        0        0   1022     8252      118
  88 00A5    165   8210   1024        0        0   1022     8252      118
  89 00C1    193   8232   1022       18     8212   1022     8252      118
実行終り時の処理
  90 0020     32   8234   1024        0        0   1022     8252      118
  91 0012     18   8254   1024        0        0   1023      118        0
  92 004E     78   8256   1024        0        0   1023      118        0
  93 0014     20   8262   1022        0        0   1023      118        0
例外がスローされました: 'Mind8Kernel.Dispatcher.ExitModule' (mind8dispatch.dll の中)
プログラム '[15704] mind8dispatch.dll' がコード 0 (0x0) で終了しました。

無事に完走しました。最後の例外スローはコード復帰用の意図的なもので正常です。

おわりに

以上です。いかがでしたでしょうか?本件しばらくつづきがあるかもしれません。やるとしたら次回は検証用Mindのソースコードを増やしたmcoを実行してみます。

.NETの膨大なライブラリをMindで使えるようになるということに意義を見出していました。(実際には走行系の他にコンパイラ系の対応も必要ですが、そのあたりは開発者様のご意向次第という感じ?これはあくまで部外者による前提条件の概念実証という形となります。)

  1. Microsoft Copilotで日本語トランスコンパイラ言語 Re:Mindをいじりたおす - Qiita ↩

  2. Copilotが生成した日本語トランスコンパイラ言語 Re:MindのASTパーサが動作するまで - Qiita ↩

  3. Copilotが生成した日本語トランスコンパイラ言語 Re:MindのC#コード生成が動作するまで - Qiita ↩

  4. AIとつくる日本語プログラミング言語Aoi (あおい) - Qiita ↩

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?