とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

プログラム言語を考える (4)

CPUにはたくさん種類があるし,一般化できるのだろうか? 某Knuth先生のMIXはどうなんだ?最小のCPUの命令セットを考えればいいのか?よく分からない。めんどくさいから,今のところ処理系定義のインラインアセンブラを持たせればいいかな。投げやりだが。

考えてみたら,投げやりではなく現実的な解のような気がしてきた。

最小の命令セットを考えてしまうと,その時点で別の言語だ。危ない危ない。アドレスの計算なんかはアセンブリにマクロとして持たせることができるだろうけど,命令そのものはやっぱCPU固有。アセンブリなんて言うから,汎用性のあるような気になっちゃうんだ。Z80アセンブリ,8086アセンブリ,Athlon64アセンブリはすべて別の言語だね。上位互換とかあるかもしれないけど,完全に汎用にはできない。処理系定義のインラインでOKだな。アセンブリの基本的な文法くらいは定義できるかもしれない。命令以外でCPU固有な部分はマクロを用意すればいいかな。ユーザがアセンブリを自分で拡張できるように。

インライン,言語内言語

インラインアセンブリって結局のところ言語内言語なんだよね。この世のすべてのソフトウェアが実現してきたことは,この世のいずれかのプログラム言語によって実現している。そう考えると,言語内言語は超強力だ。言語内言語機能によって,現存するすべての言語を用いることができるのであれば,この世のすべてのソフトウェアが実現してきたことは,この言語一つで実現できることになる。

この言語

ちょっと脇道に逸れるが,私が妄想している言語に仮の名前を付けよう。指示代名詞むかつく。
命名,「Happy Life Programing Language」。HLPL だの, Happy だの,Halif / Halife だのと呼ぶことにしよう。繰り返すが仮の名前だ。それにこの言語は現存しない。私の脳内に妄想としてだけ存在する。はりふたんかわいいよ,はりふ。