D言語 Part34©2ch.net

レス数が950を超えています。1000を超えると書き込みができなくなります。
2015/01/25(日) 12:07:29.52ID:gAd5OZDm
プログラミング言語 D (D Programming Language) について語るスレッドです。

■本家
http://dlang.org/ - 公式(英語)
http://www.kmonos.net/alang/d/ - 公式の和訳 (やや古いので注意)
https://issues.dlang.org/ - D言語バグ報告
https://github.com/D-Programming-Language - D言語開発リポジトリ

■Wiki
http://wiki.dlang.org/ - 公式Wiki
http://dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)

■プログラミング言語D (TDPL: The D Programming Language)
Andrei Alexandrescu 日本語版
http://www.shoeisha.co.jp/book/detail/9784798131108

ソース貼付サイト http://dpaste.dzfl.pl/
<$><$> https://www.bountysource.com/trackers/383571-d-programming-language

■前スレ
D言語 Part33
http://toro.2ch.net/test/read.cgi/tech/1396145538/

■過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&;sf=2&all=on&view=table&shw=5000
2018/05/17(木) 22:15:29.42ID:sUJws5+j
そういう煽りは要らないっすね、このスレには
864860
垢版 |
2018/05/17(木) 22:42:36.00ID:AoIdJqgi
final変数がいつの間にか廃止してた問題は
scope変数への再代入がいつの間にかコンパイルエラー出るようになってたことで解決したわ
スコープ内限定で再代入禁止でスコープを抜ければ変数の寿命が来る、ってことでscope変数で要件を満たせる
865デフォルトの名無しさん
垢版 |
2018/05/18(金) 17:47:42.29ID:0IKxFX6d
>>862
流産というか仕様変えすぎて育つ前に首切ってる感じ
2018/05/20(日) 15:02:22.61ID:q06gwnuv
産みっぱなしの児童労働やで
2018/05/20(日) 23:02:17.61ID:qH56GQyK
aliasがいつの間にか構文変わってたのは知ってたけど
typedefもいつの間にか消えて使えなくなってるのかよ
しかも従来のやり方と比べて代替手段がクソ面倒
2018/05/20(日) 23:08:04.29ID:qH56GQyK
MDN並みに日本語ドキュメントが最新に追いついていて
現行仕様、廃止仕様がきちんと整理されていないとツライな
ちょっと離れてるだけで記憶に残ってるD言語とはまるで別言語になってる
869デフォルトの名無しさん
垢版 |
2018/05/21(月) 10:14:37.88ID:6DKDYwaD
うむ
870デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:08:02.45ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

KUKID
2018/05/23(水) 21:20:31.33ID:HAh7S+Yv
change log は見やすくなってるよ
時々重要な変更がすっぽり抜けてるけどな

言語レベルの廃止も一応リスト化されてるよ
https://dlang.org/deprecate.html

今気づいたが2ヶ月毎のリリースって明言されてるな
minor release とかふざけたこと書いてるけど
2018/05/24(木) 01:24:55.66ID:cbZMWmWW
>>871
そのページ初めて見るんだけどどっから飛べるんや…
2018/05/24(木) 01:51:49.54ID:cbZMWmWW
>>871
そして昔確かにあったはずのfinal/const/invariantの
( https://digitalmars.com/d/final-const-invariant.html )
再代入禁止を意味するfinal記憶クラスの仕様は何処へ消えたんや…
874デフォルトの名無しさん
垢版 |
2018/05/24(木) 09:58:50.53ID:fftgGS82
色々と残念になっていくな
875デフォルトの名無しさん
垢版 |
2018/05/24(木) 19:20:19.04ID:19Fz0o1F
文句あるならチミたちがD言語開発に直接関わりなさいな
2018/05/25(金) 12:29:53.89ID:llbJVLc1
いつの間にか使えなくなってて
しかも廃止仕様リストにも載ってなきゃ
どこに消えたんだってのは普通に抱く感想だよ
877デフォルトの名無しさん
垢版 |
2018/05/25(金) 16:14:50.43ID:XO9fqtgP
そういうの大事だよね
2018/05/25(金) 21:13:52.67ID:Kp5EEe8w
少なくとも俺がいじり出した10年くらい前には既にそんな機能なかった
2018/05/25(金) 21:45:50.20ID:llbJVLc1
当時穴が開くほど読んだもんだなぁ

https://web.archive.org/web/20071011061638/http://www.kmonos.net/alang/d/final-const-invariant.html
880デフォルトの名無しさん
垢版 |
2018/05/26(土) 17:33:25.22ID:VmZ0B+DV
終わっていくってこういうことなんだな
2018/05/26(土) 21:43:43.26ID:Yg2bLXCl
次バージョンから来る契約構文の追加は楽しみだ

int fun(ref int a, int b)
   in(a > 0)
   in(b >= 0, "b cannot be negative")
   out(r; r > 0, "return must be positive")
   out(; a != 0)
{
// ...
}
2018/05/27(日) 10:51:50.80ID:K2zIueyC
Dってnull安全性の機能は今のところ標準では用意されてないカンジ?
template使って実現すること自体は簡単そうだけど
2018/06/10(日) 18:04:56.72ID:arddwNhh
std.conv.to!intでstringからintに変換しようと思ったんですけど、
stringで表現される数字が全角でした。
こういう場合、どうすればいいですか?
2018/06/10(日) 22:54:43.49ID:LYbFojL+
要素に対し'0'引くだけでint値を得られるし
'0'引いて'0'足せば半角数字の文字コード得られるし
あとは煮るなり焼くなり
2018/06/11(月) 00:12:59.63ID:VBB2bpQs
>>884
なるほど。
文字コードが連続してるからそういう方法あるんですね。
886デフォルトの名無しさん
垢版 |
2018/06/11(月) 10:45:31.47ID:tK3aH3wF
漢数字はテーブル用意するのかそれともi18nされてるのか
887デフォルトの名無しさん
垢版 |
2018/06/11(月) 20:26:30.57ID:xf3num2h
意味的に連続する文字の文字コードが連続してる保証ってないって話ではなかったっけ
888デフォルトの名無しさん
垢版 |
2018/06/12(火) 16:49:06.21ID:bLF3+6cr
二支とか十干だな
889デフォルトの名無しさん
垢版 |
2018/06/12(火) 16:49:34.78ID:bLF3+6cr
変なとこで切れた
十二支と十干で干支
2018/06/12(火) 17:10:31.20ID:eeJGE1xP
tr関数でASCIIに変換すればいいんじゃね。
と思ったらハイフン'-'が厄介だった。tr(s, "0123456789+−", "0123456789+-");
2018/06/18(月) 19:23:44.09ID:MmynirXE
RustスレでD言語は死に絶えたって言われて何も言い返せなかったわ…
892デフォルトの名無しさん
垢版 |
2018/06/18(月) 19:48:03.22ID:UtQrM811
おかえり
2018/06/18(月) 21:11:21.63ID:w1ISs/TA
むしろ更新が落ち着いた今こそ復権のタイミングじゃないか
というか他の言語だって追加に廃止に非推奨と仕様コロコロ変わってて
Dのこと言えないじゃないか
894デフォルトの名無しさん
垢版 |
2018/06/19(火) 11:25:39.55ID:tjlbsfDK
D->LLVM->ネイティブとかさ
アプリのフレームワークで共通の鰌で
Windows,Android,OSX,iOSとかで動くようにならないかな
2018/06/19(火) 11:29:17.04ID:QOayKepT
UWPとかに対応しないと
2018/06/27(水) 11:31:28.73ID:ZyTQ80WT
D言語でCGI作る場合POSTデータってどうやったら取れますか?
2018/06/27(水) 11:58:51.27ID:qKnsPtkx
CGIならサーバーの設定次第で勝手にコマンドライン引数なり標準入力なりに入ってくるはずだろ
D側で考えることは特にない
2018/06/27(水) 20:33:43.97ID:+T+Up6NP
むしろPOSTは普通に取れてた
取れないのはGETの方だった
まぁ結局getenv("QUERY_STRING")で取れたけど
DってCみたいにポイントをそのまま配列としては使えないんですね
899デフォルトの名無しさん
垢版 |
2018/06/28(木) 01:40:10.19ID:FdbC2U6h
unicode1バイト目が
\0
というオチ
2018/06/28(木) 22:29:21.28ID:lMLAd/CT
>DってCみたいにポイントをそのまま配列としては使えないんですね
試してみたら普通に配列のように使えたけどどゆこと?

import std.stdio : writeln;
import core.stdc.stdio : putchar;

char[] text = "Hello World".dup;

char* pHello = text.ptr;
char* pWorld = &text[6];

// 添え字アクセス
for ( int i = 0; i < 5; i++ ) putchar( pHello[i] );

// 長さ付与
writeln( pWorld[0..5] );

出力結果:
HelloWorld
2018/07/04(水) 14:01:26.85ID:lH1tX97N
ようやくDMD2.081.0のリリース版来たやんけ
902デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:05:22.52ID:gFgZc5FG
PDR
2018/07/05(木) 16:30:06.53ID:AeL6VB/V
PDR
2018/07/21(土) 10:05:01.11ID:HztBSU4B
D言語って将来性あるの?
学んでおいて損はない?
905デフォルトの名無しさん
垢版 |
2018/07/21(土) 11:01:32.26ID:JzufiDOi
将来性は微妙
損はない
2018/07/22(日) 07:56:57.07ID:7emN8jqZ
C言語みたいな化石言語使い続けないといけないの早くなんとかしてくれ
2018/08/11(土) 12:00:22.25ID:3BcXSGzx
dflってもう使えんの?
2018/08/19(日) 17:17:14.78ID:81TKEpi+
1年以上ほったらかしだったがフォーク版なら特に問題なかった
2018/08/25(土) 09:37:03.11ID:TUMq6wBN
https://github.com/JesseKPhillips/dfl
ここが最新メンテナだと思ってたが更新停止を明言されちまったな

DWT が標準GUIとして継続してくれればいいんだが
2018/08/25(土) 12:44:14.71ID:6IfF+cbw
ポトペタしたい
2018/08/25(土) 15:59:29.12ID:l6qIS0xn
別にD言語に限った話でもないけど
DelphiやQt DesignerやXcodeのリソースファイルを読み込む部分だけ書けば
どんなGUIライブラリでもポトペタモドキはできると思うんだ
実例は見たことない
2018/09/01(土) 11:14:11.93ID:QmQOTtaG
今日本で最もアツいD言語コミュニティって何処なん?
15年前はここだったけど
913デフォルトの名無しさん
垢版 |
2018/09/01(土) 13:47:55.16ID:i/jVHK5F
過疎ってるけどここ
914デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:03:13.23ID:ZleIwKxc
競プロで流行らせて盛り上げようぜ
2018/09/01(土) 21:05:32.60ID:KTWSZRWs
Rust,Goより良いと思うんだけどなあ
2018/09/01(土) 21:59:11.71ID:rtR930fJ
自分もコミケでD同人買って読むまで知らなかったけどDUBっていうD言語のパッケージマネージャあるんだよな
http://code.dlang.org/
917デフォルトの名無しさん
垢版 |
2018/09/02(日) 01:33:02.61ID:YXkmV9AS
>>915
ほんそれ
2018/09/02(日) 06:46:58.89ID:TkJi8FAz
こんなのあるのな
http://code.dlang.org/packages/vibe-d
http://code.dlang.org/packages/dlangui
2018/09/02(日) 06:54:20.44ID:TkJi8FAz
ラズパイでも使えそうだな
http://code.dlang.org/packages/dgpio
2018/09/02(日) 10:47:36.34ID:kbbUS7De
vive.d は希望の星やで
DUB もそこが作ってるし
921デフォルトの名無しさん
垢版 |
2018/09/22(土) 15:13:01.38ID:xOVRbYWf
Nim いいね
2018/11/05(月) 01:16:39.94ID:rYTjRCxn
gccに入ったのおめ
923デフォルトの名無しさん
垢版 |
2018/11/05(月) 13:41:51.79ID:o5QGnfIr
いつの話よ
2018/11/05(月) 18:04:59.72ID:rYTjRCxn
ごく最近だよ
gccの公式リポジトリにgdc一式が入った
2018/11/05(月) 22:07:45.33ID:5ZQ/MJVc
入るのはだいぶ前に決まってたけど実際に入ったの?

だとしたらめでたい
926デフォルトの名無しさん
垢版 |
2018/11/06(火) 11:34:12.15ID:vyXuaWzf
遅すぎた春🎊
2018/11/06(火) 13:39:43.26ID:e09+EfP6
gcjが外れたからgc付き言語が無くなってチャンスではあったのだけれども
goが先に入っちゃって時節を逃した感はどうしても
2018/11/08(木) 23:12:51.64ID:IsYSfhKR
ついに入ったのか
しかしGDCはバージョンアップが遅れに遅れてほとんど相手にされないレベルだったけどどうなったのかしら
929デフォルトの名無しさん
垢版 |
2018/11/09(金) 12:15:39.04ID:mwKVhTqG
https://qiita.com//outlandkarasu@github/items/a2243eb3adbe906ec30d
2018/11/10(土) 13:52:26.13ID:hzkpPvzE
風評被害甚だしい

【接客】クレーマーの餌食になる人は「この言葉」に注意 モンスタークレーマーだけでなく「ふつうのお客様」をも怒らせる“D言語”とは
https://rosie.5ch.net/test/read.cgi/editorialplus/1539062055/
2018/11/10(土) 16:33:56.24ID:yzCMB8/E
でもその「D言語」はマナー屋の造語なんですよ
ですからこのスレとは関係ないんです。だってここのD言語はうぉるたん作ですもの
2018/11/10(土) 20:04:13.92ID:iAbNNeDp
だから風評被害なんだろ
2018/11/21(水) 17:48:45.86ID:hwLUtClc
CPUとメモリをたっぷり使うプログラムを書いたんですけど、実行中、下記のエラーが発生してしまうことがあります。
core.exception.OutOfMemoryError@src\core\exception.d(693): Memory allocation failed

タスクマネージャを見ながら実行してみると、多い時でメモリを1700MBぐらい使っていて、上記のエラーが出たときは1100MB程度でした。
PCのメモリは8GB積んでいて、プログラム実行中も2〜3GBぐらいは空いていました。
未使用のメモリがまだ残っているのにアロケーションに失敗するのはどうしてなんでしょうか?
そして、何か回避方法はありますか?
2018/11/21(水) 21:37:17.53ID:SmkNBI+1
大きな領域を一度に確保しようとして
空き容量には余裕があるけどその領域を確保できる隙間がないから失敗したとか?
2018/11/21(水) 22:16:34.40ID:z3Is5rCO
たぶん 32bit やろ 64 bit でいいならそっちにしたほうが無難
GC も肝心なときにコケる印象

まさか無いとは思うけど仮想メモリ無効にしたりしてないよね
2018/11/21(水) 22:30:35.42ID:H1v4KZsy
D言語のGCってコンパクションやってないんだっけ?
937933
垢版 |
2018/11/21(水) 23:21:11.93ID:hwLUtClc
>>934
なるほど、そういう可能性もあるんですね。

>>935
32bitのdmdを使っていました。
4GBより大きいメモリを積んでる場合、32bitだと使えない場合があるということですね。
64bitを試してみます。
2018/11/23(金) 17:30:19.97ID:WNoH6qHd
>>929のDLang Tourっての見たらVibe.dの事も普通に載ってるのな
興味はあったけど今まで拾い読みする程度の情報くらいしか知らなかったけど
これを機にやってみようかな
2018/11/23(金) 18:07:04.87ID:ZtWiRdZy
>>937
32bitプロセスならプロセスが使える仮想メモリの上限は2GBだからね
これはOSの制限なので、しょうがない
2018/11/23(金) 18:54:10.07ID:tTn5D6Z9
コンパイラを変えるんじゃなくてビルドモードを変えるんやで ( -m64 )
デフォルトの GC はゴミだが 64bit ならまぁまぁ使えると言ってるんやで
941デフォルトの名無しさん
垢版 |
2018/11/25(日) 23:30:27.63ID:kJa4tJwN
他のGC付言語と比べてもDのGCはゴミ?
942デフォルトの名無しさん
垢版 |
2018/11/26(月) 13:35:29.96ID:M4lkR7sD
JSよりまし
2018/11/26(月) 16:41:04.95ID:E028bwsj
インストール版でインストールしたdmd2.083で適当なコードをビルドすると"Access Violation"とだけエラーが出て、
ビルドが完了しないんですが、原因は何なんでしょうか?

上記のエラーはDebugモードの時のみで、Releaseモードの時は正常にビルドできます。
またこのコードはdmd2.071ではDebug、Releaseともに正常にビルドできました。
944デフォルトの名無しさん
垢版 |
2018/11/26(月) 16:46:42.83ID:M4lkR7sD
「適当なコード」

再現する最小限のものを貼れ
2018/11/26(月) 17:01:45.17ID:DMixgTsv
OSとか周辺情報皆無で質問されてもね…
2018/11/26(月) 18:08:49.61ID:E028bwsj
>>944
import std.stdio;
void main()
{
  writeln("Hello World!");
}
これをビルドすると例のエラーになります。

>>945
win10です。
IDEはVS2013を使いました。
947デフォルトの名無しさん
垢版 |
2018/11/27(火) 20:08:46.24ID:F5dyxMID
OSからインスコやり直し
948943
垢版 |
2018/11/27(火) 22:40:25.69ID:9c7HJkqh
>>947
厳しいですね。

https://qiita.com/sfujita/items/55dfd9203dffe05598c6
一番下のsc.iniで上書きして、hello.dとBuild.batをコピペして、
Build.batを実行したら、正常に動作しました。
VSの方で何か問題があるのかもしれないです。
2018/11/27(火) 22:53:19.06ID:pagiDKMJ
去年くらいから VS のインストール情報を検索してリンカやSDKを自動選択する機能がついた
VS2013 は古すぎてマズイ気がする
950943
垢版 |
2018/11/28(水) 16:57:45.65ID:lzMMCZH4
VS2017のインストールとdmd2.083インストーラ版のインストールを行い、Hello World!をビルドしてみましたが、
hoge.pdb: cannot add symbols to module, probably msobj140.dll missing
というエラーが出ました。
$(VCINSTALLDIR)binと$(VSINSTALLDIR)Common7\IDEをエクスプローラで確認してみましたが、
どちらともmsobj140.dllはありました。
なぜエラーが出るのか全く分かりません。
951デフォルトの名無しさん
垢版 |
2018/11/28(水) 18:22:14.14ID:hLCjBKjM
x64の方にはあるけどx86の方には無いな
952943
垢版 |
2018/11/28(水) 20:00:53.65ID:lzMMCZH4
私の環境では、Program Files (x86)\Microsoft Visual Studio 14.0にはありましたが、
Program Files\Microsoft Visual Studio 14.0にはありませんでした(全部で64KB程度しかない)。
sc.iniはProgram Files (x86)の方を参照するようになっていますが、32bit版のVSじゃ使えないんでしょうか?
953943
垢版 |
2018/11/29(木) 13:56:17.42ID:9E8r92ip
>>948のサイトの手順をやり直したら解決しました。
VSのインストール時に、VisualC++に関するオプションをいじった(5GBぐらい大きくなった)のが影響したのかなぁ。
2018/11/29(木) 15:01:17.62ID:9iyhNIn7
つーか>>948の記事が古い
2.079以降は64bit版ビルドするのにVC++もWindowsSDKも不要になってる
2018/11/29(木) 20:54:07.49ID:eyw2ItTx
llvm のツールチェーンが使えるようになったんだっけ
でも本格的にやるにはデバッガがあったほうがいい
2018/11/29(木) 22:53:22.13ID:OLmOFAf+
12月1日のQita Advent Calendarが何かしらの参考になるかもしれないね
まだ内容は当然わからないけど
957デフォルトの名無しさん
垢版 |
2018/12/02(日) 18:19:15.04ID:r/YV3Hmh
無事1日が終わりました
本当にありがとうございました
2018/12/12(水) 19:50:50.65ID:KrrqRBoW
Linuxでvibe.dやるならコンパイラどれ使ったらいい?
2019/03/09(土) 18:08:15.48ID:1edG4e+S
2.085 で Precise GC の試験実装が始まったのにお前らときたら

>>958
公式でいいんじゃね
ldc の追随も凄まじいけど
2019/03/21(木) 00:18:56.75ID:oV/wBHSs
std.conv.toから投げられた例外をThrowableでcatchしてtoStringとwritelnでエラーメッセージを書き出すと、
関数呼び出しの経路とかソース上の行番号が表示されますよね。
それが、いろいろ改修してるうちに途中で途切れたようなエラーメッセージしかでなくなってしまいました。
原因わかる方いますか?
961デフォルトの名無しさん
垢版 |
2019/03/21(木) 00:27:04.55ID:7qm1Whlz
ascii以外の字が混ざってないか
multibyteの不正な文字(1byte目だけあって2byte目が現れずに次のascii文字が並ぶとか)
2019/03/21(木) 02:27:46.51ID:oV/wBHSs
>>961
main関数の中でto!uint("a")とやってみましたが、同じように途切れたエラーメッセージになりました。

std.conv.ConvException@***\src\phobos\std\conv.d(2267): Unexpected 'a' when converting from type string to type uint
----------------
0x00007FF77B85E400 in std.string.representation!(immutable(char)).representation at ***\src\phobos\std\conv.d(2271)
0x00000207C32A3000
レス数が950を超えています。1000を超えると書き込みができなくなります。