【プログラミング】D言語と18年ぶりに1週間近く向き合った感想文

ここ数日はD言語に向き合い・・・

  • ドキュメントムシャムシャ

  • 頭の中で仮組み

  • 実際にvimで開発

    • (補足)私は生粋のvimmerではないです。

短期間ですが、上記をやった上での感想文です。



関数型言語のように組む場合の結論

D言語を関数型言語やプロトコル指向のように使った時は・・・

ほとんどSwift

よっぽどのことがない限りは、Swiftを使った方が良いです・・・


マルチパラダイム前提で組む場合の結論

プロシージャ指向やオブジェクト指向を使うと

ほとんどRuby

ビルドが早すぎて動的言語のように開発できますが・・・

  • autocomplete

  • リファクタリング

  • import自動調整

上記のIDEお馴染みの機能抜きだと、Rubyでブロックを渡しながら作るのとあまり変わらないです。

「型検査のあるRubyが使いたい!」という人は是非D言語を使ってみてください。恐らく「欲しい物と違った・・・」となるかと思います()

SafeDの学習曲線は確かに低い。しかし、vimでD言語のフルパワーを引き出すための学習曲線は、Rustよりも高い

出典:投資用アカウント

IDE込みで考えると、D言語に比べると充実しているgo、Rust、C#で良い想定です。

ここは各々のvim環境に左右されることを書いているため、歴戦のvimmerからの感想も聞きたいところです。


D言語は実用に耐えうるのか?(言語機能編)

今回はターゲット環境がシビアのため、下記のモノのパフォーマンス次第でD言語は実用に耐えると考えております。

  • 並行処理(core.thread.fiber)

  • 並列処理(std.parallelismとimmutable)

  • ムーブセマンティクス(core.stdcpp.memory.unique_ptr)

  • 引数の遅延評価(lazy)

  • 構造体のアラインメントやパディング周りへの強さ(std.bitmanip)

  • 自前のメモリアロケータとGC手動オンオフ

C++でも上記はやれなくはないですが、D言語で楽になるポイントでもあります。

  1. 並行処理:ソケット待ちやディスクIO待ちを減らせる

  2. アラインメント周り:スタック領域の節約

  3. 並列処理:上記2種を組み合わせた上でマルチコアでグルグルさせられる

上記3つで軽量(抽象的)かは気になるポイントです。

今回のターゲット環境

  • Debian系 64bit

  • 2コア クロック1.1GHz

    • ドライバのバグでターボクロックが機能しないものとする

  • メモリ 2GB(多分諦めて4GBにします)

  • ディスク 2.5インチSSD

Fiber次第ではHDDもやれるかも?(要測定)


D言語は実用に耐えうるのか?(チーム開発編)

チーム開発では絶対に勧めません。まず開発環境の構築の問題が大きいです(主にエディタ)

低レイヤにこだわらない限りは、プロダクトが解決したい問題に注力できる言語を採用した方がいいです。


総括

D言語を使う前に、近年の業務上で需要の高い言語を調べてからの方が良いです。それらの多くは、タイピング数が少なくなったD言語のためです。


(補足)上記のことを書いておきながら、なんでD言語を採用し続けているんですか?

悪い意味で中毒性がやたら高いためです()

(D言語の沼に沈みだした時のサンプル)

他にも理由はありますがそれは追々・・・


おしまい