Streetとあるフリープログラマの頭ん中。中から、「Whitespace」言語のJava実装ができました。「空白」や「余白」を意味する英単語である。多くの一般的なプログラミング言語では空白に相当する文字(スペース、タブ、言語によっては改行も)は単語間の区切りとして使われている。おいてはプログラムは空白文字だけで構成される(それ以外の文字列はコメント扱いで無視される)。そのため、一見するとプログラムであることすらわからないという珍しい言語である。中から、「Brainf*ck」言語のJava実装です。実行可能な命令は「8つ」のみである。ポインタをインクリメントする。ポインタをptrとすると、C言語の「ptr++;」に相当する。ポインタをデクリメントする。C言語の「ptr--;」に相当。ポインタが指す値をインクリメントする。C言語の「(*ptr)++;」に相当。ポインタが指す値をデクリメントする。C言語の「(*ptr)--;」に相当。ポインタが指す値を出力する。C言語の「putchar(*ptr);」に相当。1バイトを入力してポインタが指す値に代入する。C言語の「*ptr=getchar();」に相当。直後までジャンプする。C言語の「while(*ptr){」に相当。C言語の「}」に相当。中から、「HQ9+」言語をJavaで実装してみます。world!"を出力する。Qコマンドはプログラムのソースコードを出力する。Beer』(アメリカの数え歌で、プログラミングの例題でよく利用される)の歌詞を出力する。+コマンドはアキュムレータをインクリメント(1だけ増やす)する。Wikipediaよりです。いうわけで早速実装してみます。Language~奇妙。Worldプログラムを1バイトで記述できる「HQ9+」言語や、8つの記号'>'、'<'、'+'、'-'、'.'、','、'['、']'のみで記述する「Brainf*ck」言語、半角スペース、タブ、改行のみで記述する「Whitespace」言語など、とにかく奇妙な言語たち。そのそれぞれの処理系の実装にあたり、Rubyの簡単な解説から、様々な実装方式の解説、チューリングマシンの解説など、話題がバラエティに富んでいて全く飽きない。新しい言語を実装してみたいというつわものがどれだけいるのかわかりませんが、そういう人の入門書としては最良の本かもしれません。秘密の国のアリス普段何気なく使っている暗号システムについて、詳細かつ簡潔に説明されている本です。ある程度の知識はあると自負していたこの辺の知識も、この本を読むと全くのうわべだけのものだったことを痛感しました。利用する機会が多いであろうSSL/TLSについても、実は全く理解していなかったことに愕然。理解しないで利用することで、逆にセキュリティレベルを下げてしまう危険性もあるので、きちんと理解していきたい。BackgroundsAdSenseこのブログはクリエイティブ・コモンズでライセンスされています。Typeこのブログはクリエイティブ・コモンズでライセンスされています。