2016年10月13日
言葉を語るための言葉
僕は小6か中1の時にプログラミングを独学で学び始めた。
当時のパソコン("マイコン"と呼んでいた)は、今のパソコンとは違ってプログラミングができないことには使えないものだった。つまり、マイコンを持っている=プログラミングができる、ということを意味していた。
当時のマイコンでプログラミングをするために覚える最初の言語はBASICというもので、これは「基本的」という意味とかけてあるのだろうが、Biginners All-Purpose Symbolic Instruction Codeの頭文字をとったもの、ということで、やはり初心者向けであったことは間違いないようだ。
僕がBASICでできることをひととおり覚えて最初にやったことはゲームを作ることで、今思えばとてもつまらないもの(たとえば数字当てゲームとか、ルーレットゲームとか)をいくつか作った後に、「プログラムを作るプログラム」というものを作りたくなった。
当時のパソコン("マイコン"と呼んでいた)は、今のパソコンとは違ってプログラミングができないことには使えないものだった。つまり、マイコンを持っている=プログラミングができる、ということを意味していた。
当時のマイコンでプログラミングをするために覚える最初の言語はBASICというもので、これは「基本的」という意味とかけてあるのだろうが、Biginners All-Purpose Symbolic Instruction Codeの頭文字をとったもの、ということで、やはり初心者向けであったことは間違いないようだ。
僕がBASICでできることをひととおり覚えて最初にやったことはゲームを作ることで、今思えばとてもつまらないもの(たとえば数字当てゲームとか、ルーレットゲームとか)をいくつか作った後に、「プログラムを作るプログラム」というものを作りたくなった。
今ではまったく書かなくなったBASICについて、30年以上前の記憶をたどりながら書くが、たとえば"ABCDEFG"と表示するプログラムは次のようになったと思う。
10 PRINT "ABCDEFG"
これにより、このプログラムを実行すると、"ABCDEFG"という文字が表示される。
そこで、このプログラム自体を表示するプログラムを書こうとしたのだ。
要するに次のようなプログラム。
10 PRINT "10 PRINT "ABCDEFG""
ここで、文字列を囲む" "が二重になっているのでエラーになったとは思う。今であればエスケープする方法で回避する、という知恵も身についたが、当時はこれができなくてとても残念だった。
もし上記ができていたなら、僕は新しいプログラム言語を作ろうと思っていた。
さて、これは何かに似ていないか?
"GNU's Not Unix"である。
あるいはこれはブラック・マトリョーシカと言えるのかも知れない。
とにかく、自己言及の入れ子構造になったものである。
「プログラムでプログラム自身を書く」ということについて、僕は中1のころから考えていた。
「人工知能が実現するとすれば、それは人工知能自身が自己言及できるようになったときだ」という言い分があるが、まさに僕は中1の頃に自我を得たということなのか。
10 PRINT "ABCDEFG"
これにより、このプログラムを実行すると、"ABCDEFG"という文字が表示される。
そこで、このプログラム自体を表示するプログラムを書こうとしたのだ。
要するに次のようなプログラム。
10 PRINT "10 PRINT "ABCDEFG""
ここで、文字列を囲む" "が二重になっているのでエラーになったとは思う。今であればエスケープする方法で回避する、という知恵も身についたが、当時はこれができなくてとても残念だった。
もし上記ができていたなら、僕は新しいプログラム言語を作ろうと思っていた。
さて、これは何かに似ていないか?
"GNU's Not Unix"である。
あるいはこれはブラック・マトリョーシカと言えるのかも知れない。
とにかく、自己言及の入れ子構造になったものである。
「プログラムでプログラム自身を書く」ということについて、僕は中1のころから考えていた。
「人工知能が実現するとすれば、それは人工知能自身が自己言及できるようになったときだ」という言い分があるが、まさに僕は中1の頃に自我を得たということなのか。
myinnerasia at 08:05│Comments(0)