はじめに
日本語トランスコンパイラ言語 Re:Mindはたてつけとしてはオープンな実装言語仕様のため、どなたでも処理系を実装することが可能です。逆転の発想で生成AIに実装言語仕様を読み込ませて、いくつかの抽象度レベルのプロンプトからトランスコンパイラ的な動きをさせてみようと思います。本記事はその第7ステップです。
Microsoft Copilot
生成AIはWindows11アプリケーションのMicrosoft Copilotとします。サインインした状態で使用しますが、第1ステップのプロンプト実行以前、この1年くらいの間で日本語トランスコンパイラ言語 Re:Mindに関連するセッションはないものとします。第5ステップの後にはサインアウトがあります。
第7ステップ 引き続きCopilotによる日本語トランスコンパイラ言語 Re:Mindの詳しい言語仕様(リンク先のページ記述の情報由来)の学習結果を確認する
第3ステップで確認された下記の方法での学習成果を確認してみます。
公式仕様文書やドラフト記事の提示
Qiitaなどに公開されている「Lv1.1ドラフト」「Lv1.2ドラフト」のリンクや抜粋を共有いただければ、その記述規則に従ってコード例を生成できます。
今回は第5ステップ、第6ステップでプロンプトに言語仕様情報へのリンクを含めましたが、それはこれまでの2回の学習で定着したと想定して、以下の簡単なプロンプトを投げてみます。
プロンプト
「オープンな実装言語仕様 日本語トランスコンパイラ言語 Re:Mind(リマインド)」の仕様情報2023 Lv1.1ドラフトに記載された内容を把握した上で、定番アルゴリズム:バブルソートのソースコードを日本語トランスコンパイラ言語 Re:Mindで書いてください。
生成レスポンス
承知しました。仕様ドラフト Lv1.1 に記載されている基本構文(関数宣言▽…△、代入「・」、繰り返し○…○ここまで、条件分岐◇…◇ここまで、return □return …)を踏まえ、バブルソートを Re:Mind 言語で記述します。
バブルソート(昇順)の Re:Mind 実装例
// 配列を昇順に並べ替えるバブルソート
▽public void バブルソートする(int[] 配列)
・int n = 配列.Length
○int i = 0 の間は繰り返す (i < n - 1)
○int j = 0 の間は繰り返す (j < n - i - 1)
◇配列[j] > 配列[j+1] の場合
・int tmp = 配列[j]
・配列[j] = 配列[j+1]
・配列[j+1] = tmp
◇ここまで
・j = j + 1
○ここまで
・i = i + 1
○ここまで
□return
△
第7ステップの評価
若干細かいところで気になる点はありますが、一部予想していました大崩れはなさそうで安心しました。
おわりに
第7ステップは以上です。第8ステップは引き続き言語仕様の詳細学習のステップとなりますが、少しフィードバックを試みるかもしれません。