D言語 Part35
他のメジャーな言語もこの20年で随分と機能増やしてきたり
標準ライブラリ機能をdeprecatedにしたりキーワードを廃止したりしてんのに
何故それらは棚上げされてDだけが槍玉に挙げられるのだろうか cython とは違うけど Python を C++ から呼ぶのが結構楽過ぎて D 要らなくなってしまった ゆっくり開発して破壊的変更しまくった結果がコレだよ 多次元配列のディープコピーって、次元数-1個まではループ回してdupしていくしかないんでしょうか?
int[][] a;
...
auto b = a.dup;
ちなみにこれをやって嵌りました。 deepcopy
ttps://qiita.com/Kaz_K/items/a3d619b9e670e689b6db VisualDを使っているのですが、プロジェクトによって
core.simd.double4がundefined identifierになったりならなかったりします。
どういうところでバージョン判定を行っているのでしょうか? 自己解決。
いつ何のために書いたのか記憶がないのですがAdditional optionsに-mcpu=avx2と書かれてました。 動的配列をnewで確保すると同時に値を初期化することってできないですか?
auto array = new double[](100); // 同時に0.0で初期化したい std.rangeのrepeatを使うのはどうでしょうか?
auto array = 0.0.repeat(100).array; // 全て0.0のdouble[] >>64
うーん、見た目が直感的でないのが気になります。 0.0にしたいだけなら
auto array = new double[100]; それではstd.arrayのreplicateはどうでしょうか?
auto array = replicate([0.0], 100); // 長さ1の配列を100回繰り返す >>68
>>64とあまり変わらない気がします。
言語仕様にないのが残念。 >>69
dlang.orgのフォーラムをざっと見てみましたが、動的配列の確保と初期化を同時にすることはできないみたいですね。
2行になりますが、たぶん以下が一番速いと思います。
auto array = uninitializedArray!(double[])(100);
array[] = 0.0; 記念すべき 2.100.0 が降臨しかけているというのに *・゜゚・*:.。..。.:*・゜2.100 ・*:.。. .。.:*・゜゚・* 久々に弄ったけど相変わらずライブラリしょぼくて泣ける
C++やPythonよりずっと気持ちよく書けてこれだよこれ!って感じなのに C/C++の後継候補
D
Go
Rust
Dは完成が遅過ぎたのかねえ むしろ早すぎたがために、中途半端にC言語を引きずって後継ほどの割り切りができてなかったせいでは Dはけっこう昔からあったよね
でも当時からなんかパッとしなかったね
なんか惹かれるもんがなかった
今もない
Goは詳しくは知らんけど
シンプル目の言語仕様+ゴルーチン
っていうところが非凡さ感じさせる
現代的な平均的な言語と違って >>90
>>91
D2で迷走していたから完成はしてないのかなという感じだったのだが? >>92
D 2.00って2007年だぜ?Goの初登場よりも昔だ DもGoもCからの流れだけど(?)
変数宣言時のポインタの書き方に違いがあって面白いよね
int *p, *q; // c
int* p, q; // d
var p, q *int // go Dは多言語のいいとこ取りで独自性がない
厨房が考えた最強言語臭がする 破壊的変更多すぎた。
IDEで開発できるようになったのが遅すぎた。 >>93
D2の「開発」開始が2007年。
Goは2009年に登場しているので、D2が迷走している間に追いついたのではないか。
Rustも2010年に登場しており、すぐにD2に追いついた。
やはりD言語の完成が遅かったと言えるかと。 新仕様が定まったから2.0になったんだぞ
それ以降で起きたでかい破壊的変更なんてグローバル変数のデフォルトがTLSになったぐらい
迷走のイメージが先に来て時系列変になってないか >>98
D2の登場時期からするとGoやRustから大幅に先行していたとも言い難い。 Pythonも大企業に支えられてこそだったからなあ