NaeNote

読者です 読者をやめる 読者になる 読者になる

NaeNote

気楽に生きたい外資コンサルのブログ

常識なんてクソ食らえ!最高にクレイジーなプログラミング言語4選+α

テクノロジー テクノロジー-雑学・トリビア
このくらいシェアされています
スポンサーリンク
【おトク情報】 12月12日(月)まで!Amazonが本気の割引セール「CYBER MONDAY SALE」を開催中。会場はこちら!

プログラミング風景

こんにちは、NAEです。

プログラミング教育という言葉をよく聞くようになりました。そろそろプログラミングを勉強しようかな、という方もいらっしゃると思います。

CやC++、JavaやJavascript、Python、Ruby、GoLang・・・有名便利で使いやすい言語は実にいろいろあります。さて、それらとは一線を画したキワモノプログラミング言語が存在するのをご存知ですか?

今回はそんなお話。

プログラミング言語とは

プログラミング言語とは、アプリやシステムで実行される処理を記述するための言語です。コンピュータに対して命令を下し動かすための指示書を書くための言葉、とイメージしてもらうとわかりやすいかもしれません。

その種類は実に多く、Wikipediaによるとその数なんと278個。掲載されていないマイナー言語を含めると500個は超えるんじゃないでしょうか。

アプリやシステムの部位によって適切な言語が違ったり、時代とともに流行する言語が変わったり、言語ごとの派閥に分かれた宗教論争があったり・・・プログラミング言語そのものの特性やそれを取り巻く文化は調べてみると実に奥深いのですが、今回はそこらへんは割愛します。

ここでは、プログラミング言語によって記述された処理をソースコードと呼ぶ、ということだけ覚えておいてください。

プログラミング言語が満たすべき条件

コンピュータはソースコードに記載された処理を忠実に実行するのですが、ここでひとつ大事な条件があります。プログラミング言語で記述された内容をコンピュータが最後まで実行できること(計算可能性が確保されていること)です。

詳しいことはWikipedia先生に譲るとして、要するに一定のルールを守っていないときちんとしたプログラミング言語とは呼べませんよ、ということ。(そうでないプログラミング言語も一部存在しますが、ここでは割愛)

ちなみに、このルールに則っている(計算可能であることが数学的に証明されている)状態を「チューリング完全」と呼びます。この名前は、現在存在するコンピュータの基礎理論を確立した超有名数学者であるアラン・チューリングの名前をから取られました。

ちなみにアラン・チューリングの功績と人となりについてはこちらの映画で実によく描かれています。

話を戻します。大事なのは、この一定のルールさえ満たしていればプログラミング言語で使う言葉尻はなんでもいいという点。

たとえば「Hello World!」と表示する処理を書いたソースコードを見てみましょう。

System.out.println("Hello World!");
puts 'Hello World!'
echo Hello World!

これらを実行するといずれも同じ結果をもたらすのですが、プログラミング言語ごとに実に表現に幅があることがわかっていただけると思います。

ぶっ飛んだプログラミング言語たち

さて、本題です。型にはまっていれば表現は自由。ルールさえ守っていればなにやってもいい。ならば最高にふざけてみようじゃないか!

というノリで作られた、ネタに全振り&実用性ゼロのぶっ飛んだプログラミング言語たちをご紹介します。

ファイルを開くとそこは雪国だった「Whitespace」

ソースコードといえば処理が文字で書かれているものである、という先入観を見事に裏切るプログラミング言語。ソースファイル(ソースコードの書かれたファイル)を開くと、そこには真っ白な世界が広がっています。

それもそのはず。この言語で使われる文字はなんと

  • 半角スペース
  • 改行
  • タブ(Tab)

の3つだけです。いずれも真っ白、なにも見えません。そしてこれら以外の文字は全て無視されるというおまけ付き。

たとえばHello Worldと表示するためのソースコードはこちら。

   
           
                
                
                 
                  
                    
                  
                  
                        
                    
(以下略)

真っ白ですね。ここまで真っ白だと禅の世界に入れそうな気がします。

このファンタスティックなソースコードの全文が見たい方はコチラからどうぞ。

参考:https://ja.wikipedia.org/wiki/Whitespace

笑えば、いいと思うよ「Grass」

「Whitespace」の類型です。この言語で使われるのは以下の3文字のみ。これ以外は無視されます。

  • W
  • w
  • v

さて、どのようなソースコードになるのでしょうか。さっそく実物を見てみましょう。

f:id:nice_and_easy:20160531175331p:plain

この言語の名前はちょっと草植えときますね型言語Grass。笑いを表す「www」が草に見えることから、笑う=草生える。それを全面に押し出した笑いに溢れた言語です。

プログラミングしているとW、w、vがゲシュタルト崩壊を起こしてしまいそう。

参考:http://www.blue.sky.or.jp/grass/doc_ja.html

いつからソースコードはファイルの中に書くものだと思っていた?「Pxem」

ソースコードといえば、通常はファイルの中に記載されているもの。その既成概念をぶち壊しにかかったのが「Pxem」です。

Pxemでは、なんと処理の内容をファイル名に記述します。たとえば"Hello World!"を出力するプログラムのソースコードはこちら。

ファイル名:Hello World!.pxe

ファイルの中身:




なんと0バイトのソースコードでHello Worldが出力できていまいました。効率的!(と言いつつ、ちゃんと別の場所でディスク容量は食っているんですが・・・)

ちなみにプログラミングの練習問題として有名なFizzBuzzと呼ばれる処理の場合、ファイル名は

`ak.-akbuzz.-ak4.-akfizz.-ak2.-1.p05.-.tab.z01.-.c.m.+.c.t05.-.%.w.s01.-.m03.-.%.W.s.m.nak.-.p00.-.c.c.c.a.wak.-fizz.p00.-.c.c.a.a.w01.-.m03.-.%.w.sak.-buzz.p00.-.c.c.a.wak.-fizzbuzz.p00.-.c.a.a.md2.-02.-.!.a.d.pxe

となるそうです。読めない。

参考:https://ja.wikipedia.org/wiki/Pxem

これからはアートの時代だよ「Piet」

ソースコードは文字列である必要なんてない!画像でやって何が悪い!というアウトローでアーティスティックなプログラミング言語が「Piet」です。

論より証拠。さっそく"Hello World!"を出力するソースコード(画像)を見てみましょう。

http://www.dangermouse.net/esoteric/piet/Piet_hello_big.png

出典:http://www.dangermouse.net/esoteric/piet/samples.html

なんだか現代アートそのものという感じですね。


その他にも見た目がキレイなソースコード(画像)がたくさん紹介されています。

ぼく個人的なお気に入りを紹介します。

素数を出力する

http://www.dangermouse.net/esoteric/piet/erat2_big.png

左上を1として、素数のマス目にドット(・)が入っているのにお気づきでしょうか。

素数の算出ロジックにどう影響しているかは不明ですが、芸が細かいですね。

Hello World!を出力する(別バージョン)

http://www.dangermouse.net/esoteric/piet/hw5_big.png

その昔、MS-DOSという古いOSで走るプログラムに「vgaidemo.exe」というものがありました。

パソコンの画像処理性能をデモするためにキレイなグラフィックを表示するプログラムなのですが、その出力によく似てるんですよね。美しいので何度も実行して眺めていました。

(知ってる人は知っている、はず・・・)

"Tetris"という文字列を出力する

http://www.dangermouse.net/esoteric/piet/tetris_big.png

画像の構成要素がすべてテトリスのブロックになっている点に注目。

こういう芸も、画像をソースコードに使うからこそできる遊びです。


ここまでくるとプログラミングというより本当にアートの世界ですね。

キレイなソースコードを書く、というのはプログラマの至上命題ですが、これもひとつの解になりうるのでしょうか。

参考:http://www.dangermouse.net/esoteric/piet.html

まとめ:暇を持て余した、プログラマーの遊び

というわけで、まさに誰得のキワモノプログラミング言語のご紹介でした。

プログラマーというと難しい顔しながらキーボードを叩くとっつきにくい人間というイメージがありますが、プログラマーにはプログラマーの遊びやユーモアがあるんですね。

ちなみに、「Whitespace」や「Grass」のように使う文字や言葉を限定するタイプのプログラミング言語はほかにもさまざまな派生があります。たとえば

興味がある方はぜひ見てみてください。


ネタではなく、スキルとしてプログラミングを学びたいのであればこちらをどうぞ。

  • プログラミング関連本も読み放題:Kindle Unlimited
  • 講座形式でスキマ時間にがっつり学習:Udemy

関連記事

スポンサーリンク