コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

"D" をはじめた

"D" was started

ここ最近というより、今月はDについてのクソ記事を書くことが多かったので今日も便乗してDについて書くことにします。


そんで今回扱うDネタはこいつです。D言語です。
Home - D Programming Language

D言語(ディーげんご、D programming language)は、プログラミング言語のひとつ。C言語をベースとしABI互換を保ちつつも、テンプレートによるジェネリックプログラミングやオブジェクト指向プログラミング、関数型プログラミングなどをサポートするマルチパラダイムプログラミング言語である。

僕の中でのイメージはコミュニティが愉快そうとかそんなイメージです。どこで使われることがあるのかはよくわかりません。言語仕様の変化は激しいらしいとか、C++より扱いやすいとか、メソッドチェーーーーーーーーーーーーーーーーーーーーーーンみたいな書き方できるとかあるので触ってみたくなったのです。あと、Dがついている言語だから(一番重要)。


というわけで公式から取ってきたら動かしていきます。

まずは何はともあれ"世界とあいさつ"します。

import std.stdio;
void main() {
    writeln("Hello, world!");
}

これでいけるらしいです。Go言語と並行学習いけそうな書き方ですね(いい加減な感想)。コンパイルして実行するとHello, worldが表示されます。


import std.stdio;      
void main(){
    "Hello".write(" D"~" World"); // Hello D World
}

なんかいい感じに使える情報が現状なくてさっぱりなんですが、先程のやつを適当にいじってこんなことやっても動くっぽいです。僕がはじめてRuby触った時の、「こいつやべーぞ適当に命令つなげるだけでそれっぽいことできるぞ」っていう感覚に似てる。

とりあえずなにかつくってみる

f:id:andron:20180407212841p:plain
何を作ろうとか考えもなしに作ったのでこんな情緒不安定なものができてしまった……。メンタルやられてますねコレは……。

以下、ソース。

import std.stdio;
import std.range: iota;
import std.algorithm: map, joiner;
import std.conv : to;

string killme()
{
    return 1.iota(100).map!(i =>"コロシテ".to!string).joiner(" ").to!string;
}

void main()
{
    writeln(killme());
}

こんな感じでfor文っぽいことできるっぽい。慣れたら楽しいかもしれんですね。次回はもう少し踏み込んだことに挑戦していきたい。そう言っていつも何か月も放置して思い出したようにやりだすんですけど、この言語変化が激しいからここでやったこと使えなくなるんじゃないかって懸念が大きい。どうしたものか…。