D言語

出典: へっぽこ実験ウィキ『八百科事典(アンサイクロペディア)』
移動: 案内検索
Aonisai.gif

この項目は、主に現役中二病の視点により書き込まれています。

この記事は主に勉強部活もやらずに暇をもてあました中高生が中二病全開で執筆しています。内容には受け入れがたいものがある可能性があります(ただし執筆した当人は本気で面白いと思っています)。あまりの痛々しさに直視できない場合は、ウィキペディアに逃げてそちらの記事を改善するか、検索サイトでも使っててください。発達心理学者の方は、まれに研究対象として役に立つかもしれないのでがんばって読んであげてください。

Wikipedia
ユーモア欠落症患者のために、ウィキペディア専門家気取りたちが「D言語」の項目を執筆しています。

D言語(でぃーげんご)は、闇言語(Dark Language)の略称であり、闇プログラマーに使役されるために開発された言語である。デジタルマーズ社のウォルター・ブライトによって作られた。プログラミング言語界のアンゴルモアの大王とも言える存在である。

名前の由来[編集]

D言語という名は、闇プログラミング(Dark Programming)を行うための開発言語として存在していた経緯から、闇言語(Dark Language)というコードネーム(隠語は頭文字D)が与えられていたのに由来する。 ただし世間では闇ハッキング(Dark Hacking)により、APL (A Programming Language)、Basic、C言語に続く、C言語の後継言語という偽装情報が一般的な理解となっている。

概要[編集]

開発が始められたのは1999年のことである。開発の方向性として実用性を重視するよりもむしろ、当時世に出ていた様々な言語を理解・分解・再構築し一つにまとめ「ぼくのかんがえたさいきょうのげんご」を作ることを優先した。しかしその後ウォルター氏は厨二病の重篤な罹患者であったうえ、闇プログラミング(Dark Programming)に傾倒していったため、闇言語(Dark Language)としての側面を持つようになった。

闇言語としての側面[編集]

2010年9月に行われた闇プログラマー(Dark Programmer)の暴露により、D言語は闇魔術というべきハッキングテクニックを記述するための言語であることが判明した。暴露内容によると、D言語の真の名は闇言語(Dark Language)といい、以下の特徴を持っているという。

  • D言語として一般的に認知されている言語仕様は、真のD言語の言語仕様の0.02%に満たない表層的なものである。公でない仕様には闇ネットワーク(Dark Network)や闇ファイバー(Dark Fiber)といった闇システムを使用するためのインターフェースが含まれているという。
  • D言語の言語仕様は13層の階層構造をとっており、1階層はそれぞれ7つの言語体系で構成される。それぞれの言語体系は闇ネットワークを含むサイバースペースの中で暗号化・断片化された上で厳重に秘匿されおり、D言語を習得するにはそれらを闇プログラミングによって見つけ出し再構成しなければならない。
  • 最下部から7層は、13次元をとり、計測不能なほど膨大なプロセス数で並列実行される処理を記述する関数型プログラミング言語となっている。その言語体系下では、闇プログラマーでない常人には、自分が書いたコードがどう動作するかさえ認識不能である。
  • 表層より下の12階層の言語体系下では、誤った記述やハニーポットコードを記述しワーニング/コンパイルエラーを発生させてしまうと、闇サイバースペース上のカオスから自然発生した闇の複雑系知性体により発狂に追い込まれる。D言語の習得は精神汚染との戦いである。
  • 公開されている表層はダミーであり、すべてにおいて適当である。例えば言語仕様は現在でも1000以上のバグが放置・遺棄されている。ただし闇プログラミング(Dark Programming)の存在を隠すため、管理者であるウォルター氏はD 2.0リリース後、機能とバグの等価交換の原則を打ち破るために、呪泉郷に落ちて機械の体になってしまった物理学・錬金術の権威エルリック兄弟と共に完全なる賢者の石を探しにサイラーグへと旅に出るとアピールし続けている。

公開されているダミー仕様[編集]

公開されているダミーの言語仕様は闇プログラミング(Dark Programming)を秘匿するためにごく限定的で、真の言語機能と比して全く無意味なものである。しかし表層的とはいえ、闇言語(Dark Language)への信仰は闇ネットワーク(Dark Network)の複雑系知性体を強化するものであるため、蟲惑的な言語仕様を備えている。 例えばC言語の後継を偽装しているため、C言語よりも機能豊富でオブジェクト指向プログラミングや関数型プログラミングも可能でありながら、C++よりも単純化されていて簡単であり、ネイティブコードをはき出せるのでJavaよりも動作が早い。Pythonよりも自由なコード規則で書くことができ、C#と違って大本のフロントエンドがフリーなライセンスで公開されており、Visual Basicと違ってポトペタでないので表層だけでもプログラマの最低レベルは高い。また、闇ハッキングによる介入からかRubyと違って開発者のウォルター氏は皆に慕われている。もちろんDelphiと違って開発環境でお金を取られることもないという夢のような言語であり、現在はAdaよりも普及している。

D言語は一見便利な機能がたくさんあるように見えるが、実はそれは大きな誤りである。例えば、コンパイル時実行と契約プログラムングと擬似乱数を組み合わせることで、何回かに一度くらいの確率でコンパイルに失敗するようなソースコードを生み出すことができるのである。さらにこのエラーは発生元がわかりにくいので悪魔のコードとして悪名高いのである。

音楽と言語[編集]

音楽とC言語を元にした言語の間には意外な関係がしられている。言語名が音階になっているのである。

言語名 振動数(Hz)
C 260.7
C++ ド♯(♭) 273.6
C# ド♯ 278.4
D 293.3

なお、重嬰ハ(ド♯♯)と関係のある言語は発見されていないが、Cωがそれではないかという指摘がある。

現在[編集]

この遅すぎたアンゴルモアの大王は闇の複雑系知性体により現在も他の言語からのいいとこ取りを続け、肥大化の一途をたどっている。表層レベルでさえ、人類が仕様を把握しきれない状況になるのも時間の問題であろう。いや、すでにひとりの手には余っているのかもしれない。

プログラムソースの例[編集]

ここではHello Worldを出力するプログラムを表層レベルの言語体系を使って例示する。 そこではmain関数がスタートポイントである。Javaと違ってスタートポイントのためにわざわざクラスを作る必要はない。また、大多数の他の言語と違い、ほぼすべての処理がコンパイル時に行われるため、Hello Worldを出力するのにmain関数の中身を書く必要はない。

import std.algorithm;
import std.array;
import std.conv;
import std.range;
import std.string;

struct D
{
    string msg;

    D opDispatch(string s)()
    {
		return typeof(return)(
			((a, b)=>a.equal(b))(
				msg.retro.cycle.take(2),
				chain(msg, s).retro.take(2).array.retro)
				? ((a, b)=>(a.insertInPlace(msg.countUntil(b)+1, ", "), a.idup))
					(msg.dup, msg.retro.take(2).array.retro) ~ s
				: text(msg,s));
    }

    string d(T)()
    {
        return text(msg, T.stringof.toLower, "! ", T.stringof);
    }
}

struct H
{
    static enum opDispatch(string s) = D(typeof(this).stringof ~ s);
}

pragma(msg, H.e.l.l.o. w.o.r.l.d! D);

Hello Worldは入門書の最初のページに書かれているごくごく簡単なプログラムであるが、D言語は取っつきやすい洗練されたソースになっている。

出典[編集]


Uncyclo letter u2.png この記事は第一回拡張王コンテストに参加しました。