【初学者向け】プログラミングの勉強について~おまけ編~

どうもこんにちは、まかろにです。
今回は前回までの内容のおまけです。
僕は小さい頃からおまけが好きです。お菓子を買ったらもらえる食玩の類とか。

プログラミングを始める方のためにいくつか言語を紹介しましたが、あれらは一般に高級言語と呼ばれます。
高級言語とは、簡単にいうと人間が理解しやすいように表現される構文が使われる言語です。(詳しい定義はもっと違うかもしれませんが、ざっくり。)
ちなみに反対は低級言語といって、機械語に近いものを指します。

そんな中でも人間が理解しにくい難解言語という種類のものがあります。
今回はこの難解言語をいくつか紹介していきたいと思います。
(今回の記事は前回までと比べるとジョークに近いので気楽に読んでください。)


目次

  1. Brainf*ck
  2. WhiteSpace
  3. HQ9+


1.Brainf*ck

のっけから名前がマズい(←)
こちらのコンセプトはコンパイラをなるべく小さく作るというものです。

プログラム中の文字を指すポインタと、30000個以上の要素を持つ配列、その配列のどこかを指すポインタからできています。
演算は下の要素を使って行います。

>:ポインタをインクリメント(1増やすこと)
<:ポインタをデクリメント
+:ポインタが指す値をインクリメント
-:ポインタが指す値をデクリメント
. : ポインタが指す値を出力
, :入力から1バイト読んで、ポインタの先に代入
[ :ポインタの指す値が0の時に対応する]の後にジャンプ
] :ポインタが指す値が0じゃない時に対応する[の後にジャンプ

と言ってもなんのこっちゃわからないので、定番の”Hello, World”!。
こんな感じになるそうです。

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.#>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.

BrainF*ckサイト("http://www.muppetlabs.com/~breadbox/bf/")よりサンプルプログラム

*対象のプログラムを人間がわかる状態から機械がわかる状態に変換するプログラム。


2.WhiteSpace

名前の通り空白(スペース)のみを使ってプログラミングします。書いてあっても普通には見えないというなんだか遊び心満載の言語。
ちなみに四則演算はこんな感じ。

[Space][Space]:加算
[Space][Tab]:引き算
[Space][LF]:かけ算
[Tab][Space]:割り算

※LFは改行コード





...この空白には特にプログラムは記述してありません。


3.HQ9+

こちらの言語は”H”, “Q”, “9”, “+”で記述される言語です。実用言語ではありません。
以下の4つの要素のみで喜寿されます。

“H”:”Hello, World!"を出力する。
"Q”:プログラム自体を出力する。
“9” :『99 Bottles of Beer』を出力する。
“+” :コマンドはアキュムレータをインクリメントする。

例えばこれでBrainF*ckであんなに文字数を要した”Hello, World!”を書こうと思うと下のようになります。

H

これはずるい比較ですが笑
ちなみに、しれっと書きましたが、Brainf*ck自体も可読性は低いものの、チューリング完全といって前回紹介したような言語と同じ計算機構を組むことができます。



今回の内容は、実際にはほんとに役に立たないジョーク言語でした。頭の体操にはなるかもしれないですけどね。
ぜひ物好きな人は何か挑戦してみてください。

そろそろコーヒーに関する記事も書きます!
それでは、最後まで読んでいただきありがとうございました!!

この記事へのコメント