Whitespaceとは、難解であるとされるプログラミング言語の一つである。
どう見ても実用的ではないネタ言語。
Whitespaceは、空白という意味である。その訳の通り、このプログラミング言語は空白あるいは空白に相当する文字(空白文字、タブ、改行)しか扱わない。したがって、プログラムソースは一見すると真っ白であり、非常に解読が困難である。なお、その他の文字はすべてコメント扱いされる。
最初の文字は命令を表し、Space(空白)はスタックの操作、Tab(タブ)&Spaceは演算、Tab&Tabはヒープアクセス、LF(改行)はフロー制御、Tab&LFは入力出力を表す。
スタックの操作の場合、次の文字がSpaceであればLFが来るまでSpace=0、Tab=1とする2進数入力と判断され、スタックに値を積む。次の文字がLF&LFであれば一番上のスタックを削除する。
プログラムの基本はやっぱりHello worldを出力するプログラムなのだが・・・。
もちろん真っ白なので読めません・・・・。
というかニコニコ大百科の記事じゃ空白・タブ文字が除去されるから再現できないだろ…。
上記の空白文字だらけのプログラムを、SpaceをS、TabをT、LFを改行と置き換えたプログラムを以下に表す。
すると、Space&Spaceでスタックに値を入れ、それを文字として出力するだけであると分かる。
S-S-STSSTSSS // "H"(01001000)2=72をスタックに入れる
T // スタックに入れた値を文字として出力
S-S-SSSTTSSTST // "e"(0001100101)2=101をスタックに入れる
T // 上記と同じ
S-S-SSSTTSTTSS // "l"(0001101100)2=108をスタックに入れる
T
S-S-SSSTTSTTSS
T
S-S-SSSTTSTTTT // "o"(0001101111)2=111をスタックに入れる
T
S-S-SSSTSTTSS // "," 以下説明省略
T
S-S-SSSTSSSSS // " "
T
S-S-SSSTTTSTTT // "w"
T
S-S-SSSTTSTTTT // "o"
T
S-S-SSSTTTSSTS // "r"
T
S-S-SSSTTSTTSS // "l"
T
S-S-SSSTTSSTSS // "d"
T
S-S-SSSTSSSST // "!"
T
S-S-SSSTSTS // "改行"
T
S-S- // "終了"
なお、分かりやすくするためにIMP、コマンド、パラメータを"-"の記号で分けている。
何故72が"H"になるのかというと、"H"の文字コードが72だからである。
掲示板
急上昇ワード改
最終更新:2024/10/11(金) 05:00
最終更新:2024/10/11(金) 04:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。