X



D言語 Part34©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net垢版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
0002デフォルトの名無しさん垢版2015/01/25(日) 12:09:12.95ID:gAd5OZDm
■DUB パッケージマネージャ
http://code.dlang.org/

■IDE
http://rainers.github.io/visuald/visuald/StartPage.html - Visual D(Visual Studioプラグイン)
https://code.google.com/p/ddt/ - DDT(Eclipseプラグイン)
http://wiki.dlang.org/Mono-D - Mono-D (MonoDevelop プラグイン)

■ライブラリ
https://github.com/d-widget-toolkit/dwt - DWT(GUIライブラリ)
https://github.com/gtkd-developers/GtkD - GtkD(GUIライブラリ)
https://github.com/Rayerd/dfl - DFL(GUIライブラリ・非公式最新版)
https://github.com/DerelictOrg - Derelict(SDL/OpenGLなどのポーティング)
http://www.vector.co.jp/soft/win95/prog/se491774.html - DXライブラリ バインディング(作者サイトメンテナンスのため Vector)
http://www.ku6.jp/keyword6/1.html - 傾き指向プログラミング(SDLなどのポーティング)

■OMF<->COFF変換ツール
http://www.agner.org/optimize/#objconv

■D言語で作られたゲーム
http://www.nicovideo.jp/mylist/4453698 - D言語で作られた芝ゲー niconico動画
http://www.asahi-net.or.jp/~cs8k-cyu/ - ABA Games
0003デフォルトの名無しさん垢版2015/01/25(日) 13:05:52.30ID:JhgO84F7
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0004デフォルトの名無しさん垢版2015/01/25(日) 15:09:19.73ID:N7hbj8cO
最新verにしたらgl3nってライブラリがコンパイル通らなくなった
破壊的変更入れる方も糞だが
製作者もカッコつけて変な機能使わずに、betterC程度で実装すべき
0005デフォルトの名無しさん垢版2015/01/25(日) 15:38:38.09ID:y+Auf1Wh
>>4
DMD2.064以降が必要っぽいね
エラー箇所を見てみたが、破壊的変更というよりコンパイラのバグだなコレ
0011デフォルトの名無しさん垢版2015/01/26(月) 23:02:12.05ID:pUuTj9VR
直そうかと思ったけどgl3nってGNU make使えないのかまじかよ
makeコマンドまで専用に置き換えることないだろJK・・・
0013デフォルトの名無しさん垢版2015/01/27(火) 18:05:27.96ID:66YrvWGd
>>11
普通に使えるんだが……
バージョンの問題なのかな? 少なくともGNU make 4.0ではコンパイルできる
0014デフォルトの名無しさん垢版2015/01/29(木) 18:20:55.08ID:zwkKAiAG
何かDの公式サイトがちょっとモダンになってるなw

…で、日本語版はいつまで放置状態なんですかね
0016デフォルトの名無しさん垢版2015/01/29(木) 20:41:25.06ID:4Rp6hoR2
言語の方はPRでなんとかなるけどライブラリの方はどうにも手が出せんな
翻訳元がどのバージョンかもわからん ソース一本一本バラバラで頭痛くなった
0019デフォルトの名無しさん垢版2015/02/01(日) 13:21:53.88ID:zYqn1tT/
ベータテストをサボってない?
2.067.0-b1とか、changelogにある変更点は一つも入ってない時のバージョンじゃないか
こりゃregression地獄だろうな
0020デフォルトの名無しさん垢版2015/02/01(日) 13:54:34.43ID:sjXjc1T+
まだβテスト始まってない
2.067.0-b1はアルファ版だけど担当者不在の状態でベータとして公開された
手違いか確信犯かは知らない
0023デフォルトの名無しさん垢版2015/02/10(火) 00:28:01.15ID:fSGdLYp2
D言語初心者なんですが教えて下さい

<プログラミング言語D 日本語版>の12Pに出てくる、テキストに含まれる
単語ごとに出現回数を数えるプログラムを打ち込んでみてるのですが、
ソース上どこにもテキストファイルを読み込むような箇所が無いような気が
するのですが、その部分は自分で実装しろって事なんですかね?

http://ideone.com/nqOOCq
0026デフォルトの名無しさん垢版2015/02/10(火) 01:03:06.19ID:fSGdLYp2
実行できました!!

有り難うございます。
0027デフォルトの名無しさん垢版2015/02/10(火) 05:06:36.82ID:fSGdLYp2
derelict3使ってらっしゃる方いますか・・?

ソースをダウンロードしてコンパイルまでは問題なくいったんですけど、
実行すると以下のようなエラーがでてしまいます。。

Building all packages.
Building DerelictPQ

../import/derelict/pq/functions.d
../import/derelict/pq/pq.d
../import/derelict/pq/types.d

dmd -lib -O -release -inline -property -w -wi -I"../import" -of"../lib/dmd/libDerelictPQ.a" "../import/derelict/pq/functions.d" "../import/derelict/pq/pq.d" "../import/derelict/pq/types.d"
/usr/src/phobos/std/stdio.d(975): Error: not a property fileno
/usr/src/phobos/std/bitmanip.d(1650): Error: not a property iota(this.dim()).filter!((i) => ptr[i])
/usr/src/phobos/std/bitmanip.d(1651): Error: not a property filter(iota(this.dim())).map!((i) => BitsSet!size_t(ptr[i], i * bitsPerSizeT))

対処法分かる方いらっしゃいますか??

バージョンはDMD64 D Compiler v2.066.1です。。

一応ぐぐってこういうページ(https://github.com/repeatedly/xxhash-d/issues/1
とかは見つけてみて、
posix.makとかいうテキストファイルをあさって中みてみたけど、
サイトの人が答えてる箇所と同じ部分は見つからないし、
何がなんだかサッパリ!
0028デフォルトの名無しさん垢版2015/02/10(火) 07:16:00.93ID:d72dCSc4
詳しい説明を省略するとコンパイルオプションに-propertyがついてるのが悪い

dmd -Isrc -m64 -w -d -property -O -release …

から -property を削って

dmd -Isrc -m64 -w -d -O -release …

にすればコンパイル通るはず。-propertyで検索するといい
0029デフォルトの名無しさん垢版2015/02/10(火) 07:23:34.59ID:d72dCSc4
あとposix.makはlinuxとかで使うメイクファイルだろうから
もしWindows使ってるなら直すべきはwin32.makとかかも
0030デフォルトの名無しさん垢版2015/02/10(火) 07:56:13.10ID:fSGdLYp2
>>28
先輩さすがっす!!
もう自分一人じゃ万策尽きてました!!

linux使いなんですがposix.makはいじらなくても平気でした。
Direlict3を落とした時についてたbuild.dの中の-propertyを全2箇所、
仰せの通り削除したら普通に通りました。

もっと勉強が必要ですね。
今日はこれでやっと寝れます。どうも有難う御座いました。
0031デフォルトの名無しさん垢版2015/02/10(火) 08:26:27.82ID:Hs3TdF+4
デレリクトIII世あやまれ
0033デフォルトの名無しさん垢版2015/02/10(火) 22:48:56.53ID:CuK7u/7x
凄い、と感動するけどハックっぽいのが…

言語機能として欲しいよね、名前付き引数
あと多返値
0035デフォルトの名無しさん垢版2015/02/11(水) 02:15:50.86ID:sEyNJ1vO
http://qiita.com/yasei_no_otoko/items/ae23b681a47d9a16f4c6
↑ここに書かれてる方法に従って進め、ソースコードのビルドを試みたのですが、
以下のようなエラーが出ました。

libDerelictSDL2.a(sdl.o):(.rodata+0x20): `_D8derelict4util6loader12__ModuleInfoZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.data+0x40): `_D8derelict4util9exception17DerelictException7__ClassZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.data+0xb0): `_D8derelict4util6loader15SharedLibLoader7__ClassZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4568): `_D8derelict4util6loader15SharedLibLoader4loadMFZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4570): `_D8derelict4util6loader15SharedLibLoader4loadMFAyaZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4578): `_D8derelict4util6loader15SharedLibLoader4loadMFAAyaZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4580): `_D8derelict4util6loader15SharedLibLoader6unloadMFZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4588): `_D8derelict4util6loader15SharedLibLoader8isLoadedMFNdZb' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4598): `_D8derelict4util6loader15SharedLibLoader10loadSymbolMFAyaZPv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x45a0): `_D8derelict4util6loader15SharedLibLoader3libMFNdZS8derelict4util9sharedlib9SharedLib' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x45a8): `_D8derelict4util6loader15SharedLibLoader8bindFuncMFPPvAyabZv' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
--- errorlevel 1

ライブラリの配置等は書かれてる通りにやったと思うのですが・・・
どういう原因が考えられますか?
0036デフォルトの名無しさん垢版2015/02/11(水) 09:32:23.09ID:DokQQA8v
>>34
組み込みのタプルが欲しいってことでしょ
DIPがあったけど、どうなったんだろう

>>35
本当にそのページ通りにやってる? libDerelictUtil.aをコンパイラの引数に指定してないのでは
もしGNU/Linuxの利用者なら、さらに -L-ldl も必要

ところで、Derelict3はもうメンテナンスされてないのでDerelictOrgを使った方が良いかもしれない(dub必須だけど) https://github.com/DerelictOrg
DerelictOrgをラップしたゲーム製作用ライブラリもあって、用途によってはこちらを使うのが便利かも https://github.com/d-gamedev-team/gfm
0038デフォルトの名無しさん垢版2015/02/11(水) 11:41:59.07ID:sEyNJ1vO
>>36
私には誤りが2つありました。
サイトの通りにやったつもりでしたが、私はlinuxユーザ
としての仕様を理解していなかったようです。
ご指摘の通り-L-ldlをつけていませんでした。
しかしそれだけではできませんでした。

最初はページの順番で最後にdlをリンクして
dmd test.d -LlibDerelictUtil.a -LlibDerelictSDL2.a -L-ldl
このように記述しましたが、これでは先ほどのようなエラーがまた出てしまい、
dmd test.d -LlibDerelictSDL2.a -LlibDerelictUtil.a -L-ldl
このように順番を変えたらうまくいきました。

しかしderelict3にしてもそうですが、当然とはいえD言語+SDLでは
日本語ドキュメントがかなり少ないですね。
貼って頂いたサイトのライブラリもとても興味がわきますが、
英語頑張らないとダメですかね・・。

にしてもやっと最初の一歩が踏み出せました!
有難う御座いました!
0042デフォルトの名無しさん垢版2015/02/11(水) 15:58:10.30ID:lWf1wIdf
>>40
構造体は値型でclassとかと違って常に実体があるから
_hogeの中の_hogeの中の_hogeの中の_hogeの中の_hogeの中の_hogeの中の…
みたいになる
0043デフォルトの名無しさん垢版2015/02/11(水) 16:54:42.71ID:29qyXWgk
>>32
めちゃくちゃやな
0047デフォルトの名無しさん垢版2015/02/11(水) 19:48:00.41ID:AEgPMJkt
>>46
それはもちろんできる。
実際にstd.container.SListとかDListはそんな感じになってる。
(正確には内部のNodeが、だけど)
0048デフォルトの名無しさん垢版2015/02/12(木) 13:29:24.84ID:4XYPAIWu
>>36さんが貼ってくれたgfmを使おうとしたんですが、
その中に書いてあったサンプルプロジェクトhttps://github.com/p0nce/aliasthis
をdubでビルドを試みたんですが、
Error executing command build: Root package aliasthis contains reference to invalid package gfm:math
って言われて、
あれ?dubって足りないパッケージ自動でダウンロードしてくれるんじゃなかったっけ?って
思いつつも、仕方ないからdub.jsonから"dependencies"の項目全部消してimportファイルを手動で配置して
実行したら、今度はsource/aliasthis/colors.d(11): Error: module hsv is in file 'gfm/image/hsv.d' which cannot be read
と怒られた。
gfmの最新リポジトリ内のimageにはhsv.dがないが、ソースにはインポートされている。
こうなったらもうこのプログラムの実行は無理かな。
0049デフォルトの名無しさん垢版2015/02/12(木) 17:37:55.21ID:q1EoFTcz
>>48
バージョン1.1.4が古すぎて、dubリポジトリから消えたのが原因
(最新30バージョンしかダウンロードできない)

dependenciesに書いてるバージョンのgfmを持ってくればいいよ
git clone (gfmのgitレポジトリ); git checkout v1.1.4してdub add-localするなり、手動でコンパイルするなり
0050デフォルトの名無しさん垢版2015/02/12(木) 19:48:39.30ID:bXvlMxGY
wxDでポトペタで開発できる環境はまだ無かったり?
そういう環境があればあっさり普及しそうなんだが
0053デフォルトの名無しさん垢版2015/02/12(木) 20:51:21.63ID:q1EoFTcz
QMLバインディングがあるから、QtCreatorとやらでGUIを作れるんじゃないか
試したことないから知らないけど
0055デフォルトの名無しさん垢版2015/02/12(木) 21:06:55.00ID:4P7uNPIb
そもそもwxDが今や死んでるという…

お願いですからwxDかQtDかのどっちかでいいから生き返ってください
C++からのポーティングはやっぱ難しいのかな
0056デフォルトの名無しさん垢版2015/02/12(木) 21:29:47.24ID:3kErsrEg
QtDは最初よかったけどなんか根が深そうなエラーが散発的に出てきて辛くなったな
開発者の人もくじけてしまったんだろうか
0059デフォルトの名無しさん垢版2015/02/12(木) 23:09:30.23ID:PfMIiKi9
QtD サポートのために traits 増やしたお というのを数年前に見て度肝を抜かれた
だがそれでも時既に遅しだったのかもしれない
0060デフォルトの名無しさん垢版2015/02/13(金) 01:55:34.54ID:Bhurw0eL
>>49
なるほど、確かに古いパッケージ見てみたら該当のソースがあった!
しかし今度はね。それだけじゃなくてね。std.loggerってのもないんだって・・w
Wikiでちょっと見た所、過去にあったimportファイルみたいなのだが、
今はstd.experimentalとやらに分類されてるようで、
それは標準添付ではなくて、リポジトリから持ってこないといけないみたい。
で、loggerというディレクトリに5つのソースファイルに分割されていた・・w
たった1年か2年前のソースをビルドするのがこんなにも大変とは、
D言語の破壊的成長力に、め・・目を見張るばかりだ!
0061デフォルトの名無しさん垢版2015/02/13(金) 08:41:05.07ID:OQXQ5SVC
互換性維持しない方向で成長するのは別に構わんけど
過去のリポジトリ消される(ライブラリ含めて)のはめっちゃ困る罠
0063デフォルトの名無しさん垢版2015/02/13(金) 10:04:02.80ID:Bhurw0eL
うーん・・
dub buildで急にエラーが出て何もできなくなった。
ソースとかまるで関係なく、どんなプロジェクトでも同じ文言を吐き出す
ようになったのだが、、

dub build
Error executing command build: Failed to invoke the compiler dmd to determine the build platform: {
"compiler": "dmd",
"frontendVersion": 2066,
"compilerVendor": "Digital Mars D",
"platform": [
"linux",
"posix"
],
"architecture": [
"x86_64"
],
}
Error: Error writing file '/tmp/dub_platform_probe.o'

dub_platform_probe.d見ても原因がさっぱり分からない助けてくれ。
0064デフォルトの名無しさん垢版2015/02/13(金) 10:44:48.60ID:GGd+ovbB
Dの破壊的変更はもっとマシになるべきだが対策することが出来る
だが半生ライブラリはダメだ 滅ぶべき
パッケージシステムは道を誤りし背教者どもの墓標
0065デフォルトの名無しさん垢版2015/02/13(金) 13:22:45.55ID:hveNpu6j
>>60
え、そっちもGitレポジトリでしょ? 過去の状態のを使えばいいのでは
(内容も変わってるかもしれないし)
0066デフォルトの名無しさん垢版2015/02/13(金) 13:33:09.45ID:hveNpu6j
>>61
dubレポジトリは個人がボランティアで運営してるっぽいから仕方ない
あそこはGithubからミラーしてるだけだから、どうしても古いバージョンが入手できないということはないしね

2015年前半に、D言語の宣伝・普及のための団体を作るとかいう計画を立ててるらしいけど
それ以前にこういうボランティア任せの部分をちゃんとしたサービスとして運営できる組織を作って欲しいなぁ
0074デフォルトの名無しさん垢版2015/02/19(木) 23:05:32.06ID:/l77WhQC
1番目に学ぶべきはCかJavaかC#
2番目に学ぶべきはCかJavaかC#のまだやってないの
3番目に学ぶべきはJavaScriptかPythonかRuby
0076デフォルトの名無しさん垢版2015/02/19(木) 23:22:06.59ID:VH3d6pj7
>>73
ありゃ相当古い記述なのであまり真に受けない方がいい
今は割と初心者向けのリソースがあるし(英語が読めない人間には無いも当然だけど)
0077デフォルトの名無しさん垢版2015/02/20(金) 00:33:37.66ID:0dV0e97W
D言語はまだ英語無しで学べる言語じゃない

まあレファレンス読むよりソース読んだ方が手っ取り早いかもしれないけど
(でもソースがレファレンスの代わりになるってunittestのおかげだよね)
0079デフォルトの名無しさん垢版2015/02/27(金) 00:27:23.38ID:K5JNT6u2
本当に安定しててつまらないよ、細々とした調整ばかり
今年はDIP69含めて大幅な変更に期待
0080デフォルトの名無しさん垢版2015/02/27(金) 00:35:21.49ID:f/HlKW2K
RoRみたいなキラーフレームワークの登場が最優先だろ
変更ばっかじゃいつまでたっても出てこねえんだよお
0081デフォルトの名無しさん垢版2015/02/27(金) 16:16:04.75ID:K5JNT6u2
まさにRubyも仕様変更の多い言語なわけだし、あまり関係なさそう
キラーなんたらが出る以前に、それなりに人気が無いと始まらん
0082デフォルトの名無しさん垢版2015/02/27(金) 17:00:53.63ID:fb9Ltl2D
RubyやPythonと違ってネイティブ吐けるところがメリットだけど
Pythonで間に合ってます
0084デフォルトの名無しさん垢版2015/02/27(金) 17:23:58.74ID:iHoQTjKY
>>81
ライブラリが充実して実用的に使えるバージョンがない
複数組み合わせて使うとたちまち破綻する
比べる土俵が間違ってる
0086デフォルトの名無しさん垢版2015/02/27(金) 18:17:54.33ID:XIuqZzpl
他の言語に比べて、D言語でしかできない or ものすごくやりやすい ことってなによ?
0087デフォルトの名無しさん垢版2015/02/27(金) 19:17:07.04ID:mK3Wrb1I
自分がそうだけど継ぎはぎだらけのC++の汚さに絶望した人がやってるんだと思う
スマートなコーディングができるのにアセンブリコードが出力されるから
Javaやスクリプト系のように速度で妥協することもない
0088デフォルトの名無しさん垢版2015/02/27(金) 19:22:04.02ID:qLq7jEUd
C++で同じことできるって言われても意味ないんだよねえ。
単なる見せかけの機能だけに釣られてる奴はC++やってた方がいい。
0089デフォルトの名無しさん垢版2015/02/27(金) 19:23:14.99ID:mK3Wrb1I
ちょっと理解できてないのかな
C++よりスマートなコーディングができることに魅力を感じてるって話なんだけど
0092デフォルトの名無しさん垢版2015/02/27(金) 19:50:40.22ID:XIuqZzpl
>>87 >>89
たとえば?
C++ も 11, 14 で多少はマシになったと思うんだけど、
どの辺りが問題で、D言語ならどういうふうにスマートに書けるんだろう?
0094デフォルトの名無しさん垢版2015/02/27(金) 21:39:53.48ID:PrbBT478
テンプレート絡みだけでかなり差別化できてるんじゃね
あと今更イテレータとか触りたくないよね
0095デフォルトの名無しさん垢版2015/02/28(土) 00:25:57.89ID:eZcrJ6fq
C++の偉い人もタイムマシン手に入れたら何したいって聞かれて
C++のテンプレート周りの構文をD言語風にしたいって言ってたな
0097デフォルトの名無しさん垢版2015/02/28(土) 02:14:47.96ID:OQbzO6Hu
C++は気持ち悪いからな
関数ポインタとデリゲードが別物であった時点で俺の中では終わった。
0098デフォルトの名無しさん垢版2015/02/28(土) 07:17:05.89ID:dohjXiRJ
>>97
C++で統一できるなら、std::function<...> で統一すれば済む問題だろ?
DのデリゲードはCの関数ポインタに変換できるのか? 既存のC製ライブラリを使うときはどうするんだ?
0100デフォルトの名無しさん垢版2015/02/28(土) 10:26:19.86ID:X4brU/QV
>DのデリゲートはCの関数ポインタに変換できるのか?
Dにも普通の関数ポインタがあるので、そちらを使う
まあデリゲートでも(cast(void function())dg.funcptr)とか出来る、もちろんキャプチャした変数は使えなくなるけど
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況