10才からはじめられる(かもしれない)魔方陣プログラミング
思うところがあって
「10才からはじめるプログラミング」本を図書館で借り、パク……リスペクトを受けたタイトル。
去年末はバタバタして中断していた魔法陣プログラム言語の作成を今月から再開する予定で、まずは子供でも理解できるレベルの言語仕様案を作ろうと思いたち記事を作成しました。
はじめに
そもそも、この魔法陣言語が表題通り「10才からはじめて理解できるのか」ですが理解可能か不可能かと聞かれたら、
「理解可能」です。
参考にした言語の一つにScratchがあり、画面上に配置してプログラムを組むという点で似ています。
ただ、かなり趣味に走った仕様であるゆえに他言語とは独自路線を走っているため、既にJavascriptでプログラムが組めるような天才肌の少年には逆に敷居が高いかなあという意味で「かもしれない」と曖昧なタイトルにしています。
元々四年ぐらい前に、針時計を配置する「B12」、
そこから派生したネジとナットでプログラムを組む「B012(ボルツ)」などネタ系言語を色々開発していた時期がありました。
※B012は作りかけがネットにまだ残っています。
その一環として作った魔法陣言語、その名も「グリム」。
よくファンタジー小説で魔法陣で呪文を錬成して放つとか、実はその構造が実にプログラム的だという設定がでてくるため、だったら魔法陣でプログラミング出来ないかと考えて開発しました。
ちなみに四年前で一度中断しており、技術的に難しかったというのもありますが、その時期からしばらく小説の投稿に軸足をおいてました。
主に歴史小説や、悪役令嬢物を書いてましたが最近断念、空いた時間で魔法陣言語開発再開となった次第です。
※一部は残ってますので、興味のある方は
大海烏>小説家になろう
用語解説
この魔法陣言語「グリム」ですが、コンソールやソースコードといったプログラムで使用する用語も趣味に走っており主にドイツ語を使っています(そもそもグリムという名称もグリム童話や魔導書Grimoireからですし)
ちなみに去年からSnap.SVGで作ってたWeb版と今年からFlutterを駆使して作る予定のアプリ版で微妙に名称が違っていて、Web版がGrm、アプリ版がGrimとなっています。
※なお今回はWeb版、Grmで解説します。
では全体の画面から
左上がグリム本体、
右上がmære(メーレ)で、いわゆるソースコードの表示場所です。
メーレはメルヘンの語源になった言葉で、出来事を意味する中世ドイツ語で、命令(メイレイ)文」とかけてます。
ついでにメーレはカタカナ表記、しかもルーン文字っぽく見える独自フォント表記というこだわりがあって、ネットに出回っていたnukosuki氏の「妄想ルーンカタカナフォント」を元に自作しました。
(フォント作者に報告済)
ちなみに、英語をぶち込むと良い感じにカタカナ変換します
mæreの下にあるのがSW、これが他のプログラムのコンソール画面にあたります。
なぜSWなのかと言うと、これもドイツ語と童話由来なのですが。
色んなプログラム言語では、ここにハローワールドを表示させるのが定番ですが、グリムの場合は
「鏡よ鏡、鏡さん」を表示させるのを目標にさせています。
これは童話、白雪姫に出てくる鏡の女王のセリフで最近流行ったCreepy Nutsの歌詞にも出て来ますが、そのドイツ原語が
「Spieglein, Spieglein an der Wand」
なのです。このSpieglein an der Wand(魔法の鏡)の略SWをコンソール画面として命名してます。
最後に、左下のSatz。
いわゆる文字入力枠で、Satz(サッツ)はドイツ語で文節やフレーズを意味する言葉。
魔法陣上に変数の内容などを入力する際に、最初は画面上に直入力を考えていましたが、せっかくなんで別枠で「Excelのセル入力枠風」のものを作ってみました。
同時にグリムにおけるSatzは入力枠だけでなく言語で言う「クラスや関数そのもの」の表現としても使用しています。
大きな魔法円に小さな魔法円をネスト、入れ子になる構造のプログラミングを想定していますが、その円一つの単位がSatz]ということで。
主な言語仕様
現状ふわっとした形のものしか出来上がってませんが、最終目標としてこんな感じという見本はあります。
魔法円にも色々ありますが、悪魔召喚のために悪魔文字を緻密に刻む側面もあるそうで、魔法円の中が文字で埋め尽くされる形になったらと。
なお全体画面で説明途中の、魔法円の中に描かれた6個の星座マークですが
♈が命令形(ForやIFなど)
♂️が数字関数
♀️が文字関数
♎が論理関数
☆がクラスとかユーザー定義関数
のSatzを追加するためのもので、
mæreでは色分けカタカナ表記で表示されます(Forだったらループ、とか)
最後に
一応、最低限のプログラムが組めるバージョンを1.0と想定していて現在まだ0.8です。
早くハローワールド、もとい鏡よ鏡の表示がSWでできるように頑張りたいと思っています。
Discussion