2019」の2日目の記事です。「write-blog-every-week」は、毎週ブログを書くことを目標としたコミュニティです。kojirooooocks.hatenablog.com私がブログを書き始めたのは2017年の8月ですが、アクセスはほぼなく、無名ブログとして運営しておりました。「くいなちゃんのKuinというプログラミング言語が凄い件」という記事が、はてなブックマークの人気エントリー入りしたことです。www.konosumi.netくいなちゃんがいなければ、ブログを書くモチベーションは枯渇して、続かなった自信があります。いうわけで、今回はくいなちゃんとKuin言語について書きます。KuinInKuinKuinInKuinとは、KuinのコンパイラをKuinで書き直すプロジェクトです。github.comKuinInKuinは、単に既存のコンパイラをKuinで書き直すに留まらず、次の根本的な思想があります。Kuinは主にWindows向けのゲームプログラミング言語を主戦場としていたのですが、これによってマルチに活躍できる可能性があります。おもしろい取り組みです。「コンパイラをコンパイルするコンパイラ」という自己完結の仕組みは、珍しいようで実際に起こり得る話です。コンパイラをコンパイルするコンパイラCコンパイラがCで書かれているといった自己参照的な状況は珍しくありません。C以外でも、数多くの言語実装がその言語自体を使って書かれています。言語Xの実装がある場合、その言語自身を使って新たなXコンパイラを作ることに論理的な矛盾はありません。セルフホストするためには、単に既存のコンパイラで開発を進めていって、自作のものが完成したらスイッチすればよいだけです。この本で我々が行おうとしているのはまさにその方法です。Webブラウザ上でコンパイルできるKuinコンパイラ(β版)現在公開されている「Webブラウザ上でコンパイルできるKuin(β版)」は、KuinInKuinでコンパイルしたKuinのコンパイラを、JavaScriptで出力したものです。プログラミング言語「Kuin」IssuesにKuinコンパイラ自体をJSで生成してみて動いていると書いてあるので、おそらくその成果物が稼働していると思われます。生成してみて動いています。...実装が気になって覗き見しようとしたら、くいなちゃんにばれました。本題に戻りますが、「Webブラウザ上でコンパイルできるKuin(β版)」では、テキストエリアに入力したKuinのプログラミング言語がコンパイルされます。これはWebページに実装されている、JavaScriptを見るとわかります。}});プログラムを記述するテキストエリアはHTML上で「id="src"」となっており、Kuin関数に渡すオブジェクトのreadFileを経由して中身が渡されます。本来であればファイルに書かれたKuinのプログラムをコンパイルするのでしょうが、テキストエリアに直接書かれているため、テキストエリアの値(src.value)が使われていることがわかります。cmdLineの指定は推測ですが、JS上でKuinのコマンドラインの引数指定を表現したものです。コンパイラの指定オプションは、「Kuin言語仕様11」に書いてあります。プログラミング言語「Kuin」この指定オプションが、JavaScriptで出力されたKuinコンパイラでも使えるようになると推測されます。KuinInKuinのJavaScript出力機能を見てみようKuinInKuinのソースコードは公開されているため、誰でも見ることができます。コンパイラのソースコード内にwebディレクトリがあり、そこにJavaScriptの出力機能があると分かります。https://github.com/kuina/KuinInKuin/blob/master/src/compiler/web/output.knhttps://github.com/kuina/KuinInKuin/blob/master/src/compiler/web/raw_funcs.kncompiler内のmain.knを見ると、オプションファイル内の「env_」という変数を利用して、環境によってoutput関数を使い分けていることがわかります。switchソースコードを簡単に理解することは難しいですが、raw_funcs.knを見ると、実際にJavaScriptを生成している過程が垣間見えます。ここでは「codes.add()」の引数に書かれているのが、実際のJavaScriptであると推測できます。以下、省略KuinInKuinのソースコードを見るのは楽しそうこのように、KuinInKuinのソースコードを追うのは探究心に溢れており、楽しそうです。ひとつだけ難点があって、ソースコード内にコメントは少ないので、ヒントがあまりありません。――Kuinコンパイラの迷宮へようこそ。ここは、読解に挑んだ多くのプログラマが帰らぬこととなった場所です――。・・でも、おもしろそうな迷宮であることは確かです。くいなちゃんは倒されたのかそう言えば、最近Twitterのくいなちゃんアイコンが変わりました。20期を超えているのですが、地味に気になります。歴代くいなちゃん何かしらのきっかけでくいなちゃんが倒されると、次の世代のくいなちゃんに引き継がれる仕組みです。まとめKuinはcppやJavaScriptの生成機能を実装することで、将来的にはMacやブラウザを対象とした、ハイブリッドのプログラミング言語になれる可能性があります。こんな言語を6歳のくいなちゃんが開発しているわけですから、くいなちゃんはすごい。2019」は、@AquiTCDさんです。くいなちゃんの技術同人誌で参加しました技術書典6にサークル参加しました。くいなちゃんとはじめる...2019-03-02歴代くいなちゃん総選挙で、あなた好みのくいなちゃんに清き一票を!くいなちゃんとは、プログラミング言語Kuinの開発者です。はてなブログProWEB系エンジニア。ブログで趣味の映画・ゲーム・読書の感想を書いたり、技術系の知見を共有しています。技術書典7にサークル参加して、技術同人誌を頒布しました。BOOTHに電子版があります。(1)月別アーカイブスポンサーリンクはてなブログをはじめよう!konosumiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。