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
0600デフォルトの名無しさん
垢版 |
2016/06/11(土) 09:15:16.03ID:sZRxwhEp
あそこの一連のインターフェイスは「こんなん作ってみたんだけど〜」程度のもので
ほとんど使われてない

構造体テンプレートにしてコンパイルエラーが出ない程度に既定プロパティを補うのが主流
そのやり方なら alias this の転送でほとんど足りるはず
ただしどのプロパティを再定義すべきかはインターフェイスを見るのがいい
0601デフォルトの名無しさん
垢版 |
2016/06/11(土) 09:41:32.26ID:j5Azp1YN
>>600
ええっとすみません。間違っていたら申し訳ないのですが、もしかしてinterfaceとclassを使うよりstructを使うのが主流なのですか?
0602デフォルトの名無しさん
垢版 |
2016/06/11(土) 10:36:32.51ID:sZRxwhEp
D言語のファンはオーバーヘッドとかGCとか嫌う声が大きい
実際のところ GC の実装がチープでそれほどあてにならないし

構造体とメタプログラミング乱舞で読みにくいライブラリが人気

でもインターフェイスでやりたければやればいいのよ
>>599 の 大半のメソッドは1行関数で済むはず
双方向とか明らかにいらなそうなのを省くなら std.typecons.WhiteHole が使えるかも
0603デフォルトの名無しさん
垢版 |
2016/06/11(土) 11:30:53.78ID:awsUhPf2
>>602
Whiteholeは知らなかったし参考になります。
人気のライブラリとかってどこを見ればわかるんでしょうか?
0605デフォルトの名無しさん
垢版 |
2016/06/13(月) 05:06:45.55ID:PElmNHhw
>>604
あ、すみません。人気のライブラリって標準ライブラリ中でも人気な奴という意味からと思ってました。
そういうことでしたか。ありがとうございます。

ところで、ひとつ聞きたいのですが、dではpureやimmutableが使えますが、これらを使うと実際どの程度最適化されるのでしょうか?
0606デフォルトの名無しさん
垢版 |
2016/06/13(月) 15:35:28.75ID:iihvfQlB
InterfaceにopBinaryなどのテンプレート関数を持たせるにはどうするのですか?
0607デフォルトの名無しさん
垢版 |
2016/06/13(月) 16:12:58.29ID:+zMNrpMB
すいません
>>606
これ自己解決しました
finalにすれば良いのですね
0608デフォルトの名無しさん
垢版 |
2016/06/14(火) 14:11:58.45ID:JvVSF706
GCの性能は連想配列とかクロージャとかクラスの性能に直結するので、
「できるだけGCが動かないように」じゃない方向に進んでGC性能うpしてほしいな・・・
0612デフォルトの名無しさん
垢版 |
2016/06/25(土) 11:45:41.24ID:M9L0G4Rl
Dって多重代入なかったっけ?
0614デフォルトの名無しさん
垢版 |
2016/06/25(土) 22:16:23.10ID:hxA5cJiF
残念
0615デフォルトの名無しさん
垢版 |
2016/06/26(日) 11:50:32.74ID:YRduG3pc
速い行列演算したいんだけどIntel mklのblasを読み込む方法がよくわからん……

あとScidってなんか開発止まってるっぽいけどどうなんだろ?
0616デフォルトの名無しさん
垢版 |
2016/06/26(日) 12:08:12.61ID:Hr+drjlN
ネイティブも吐けるJuliaと比べて
どっちが速いん?
どっちが書きやすいん?
0617デフォルトの名無しさん
垢版 |
2016/06/26(日) 13:03:10.20ID:0+Or/a+e
C系に慣れてればこっちが書きやすい

どっちが速いかは用途によるんじゃないの

ベンチマーク取った!→チューニングが足りん!
てのがいつもの流れ
0618デフォルトの名無しさん
垢版 |
2016/06/26(日) 14:45:48.76ID:Hr+drjlN
なるほどthx!
0619デフォルトの名無しさん
垢版 |
2016/06/28(火) 14:04:24.39ID:MNOhqMou
ってかDで線形代数する時のスタンダードってなんだ?
0621デフォルトの名無しさん
垢版 |
2016/06/28(火) 21:33:02.21ID:NXkyNPDs
Scidもdepricated放置されてるし科学方面弱いな
0622デフォルトの名無しさん
垢版 |
2016/06/29(水) 20:56:03.25ID:6Q9/xyGV
std.experimental.ndsliceはどうなんだろう
experimentalだし俺は使ってないからわからんけど
0623デフォルトの名無しさん
垢版 |
2016/06/29(水) 21:52:28.61ID:AXw9t+Ft
ndsliceは行列演算ついてなかったはず多分
0624デフォルトの名無しさん
垢版 |
2016/06/29(水) 22:24:24.36ID:9iO2eMNn
多分ね
0626デフォルトの名無しさん
垢版 |
2016/07/06(水) 11:02:58.90ID:X105+0ra
import std.stdio;
// 例えばこういう interface に対して、
interface Iinc{
final int opUnary(string OP : "++")(){ return opInc; }
int opInc();
}
// こんな mixin template 使う場合に、
mixin template incImpl(alias target){
int opInc(){ return ++target; }
}

class A : Iinc {
int a;
// ↓これはまあいいとして、
mixin incImpl!a;
}

class B : A {
int b;
// ↓ ここに override って書いて動くってはじめて知りました。
override mixin incImpl!b;
}

void main(){
Iinc c = new B;
++c;
(cast(A)c).a.writeln;
(cast(B)c).b.writeln;
}
0627デフォルトの名無しさん
垢版 |
2016/07/08(金) 07:42:04.17ID:0UOH05eF
テンプレート制約で複素数とか、複素数または実数にヒットさせるにはどうすりゃええんや……
組み込み複素数は__traitで簡単にヒットさせれるけど
0628デフォルトの名無しさん
垢版 |
2016/07/08(金) 22:01:04.69ID:7n1yPXzP
>>627 こう?
is(T == Complex!U, U) // T が std.complex.Complex の場合に true
std.traits.isNumeric!T // T が組み込みの数値型の場合に true
0629デフォルトの名無しさん
垢版 |
2016/07/09(土) 22:27:59.54ID:lSFNvjJ5
>>628
こんなis の使い方あったのか
勉強不足でしたすいませんありがとうございます
0630デフォルトの名無しさん
垢版 |
2016/07/10(日) 00:27:46.10ID:PefByr9S
やべえndsliceのライブラリstatic if多すぎて何が起こってるのか全然わかんねえ
0631デフォルトの名無しさん
垢版 |
2016/07/16(土) 14:39:39.16ID:9Y22Kipm
Julia(女) に浮気中
0632デフォルトの名無しさん
垢版 |
2016/07/18(月) 09:14:41.70ID:V9a/Rv5f
Juliaは線形代数得意だもんな
0633デフォルトの名無しさん
垢版 |
2016/07/19(火) 16:01:58.15ID:U82S7i4O
1、dub.exeを実行すると、コマンドプロンプトが一瞬立ち上げってすぐに消えます。
2、コマンドプロンプトからdub init
0634デフォルトの名無しさん
垢版 |
2016/07/19(火) 16:02:38.07ID:U82S7i4O
1、dub.exeを実行すると、コマンドプロンプトが一瞬立ち上げってすぐに消えます。
2、コマンドプロンプトからdub init"プロジェクト名"でプロジェクト制作すると、
  プロジェクト名のフォルダーが制作され、フォルダー内には、以下の階層ができる
   1./source/
   2./source/app.d
3、ここで、"dub.jsonを記述する"とありますが、そのファイルが何処にも有りません。
  
dubの設定及び使用方法教えてもらえませんか。
Win10、dmd.2.071.1.windowsです。よろしくお願いします。
0635デフォルトの名無しさん
垢版 |
2016/07/19(火) 17:26:50.31ID:Ez5hwRqa
実行するとコマンドプロンプトが一瞬立ち上がってすぐに消えるのって
dub.exeをエクスプローラからダブルクリックした時とかの挙動じゃね?

ちゃんとコマンドプロンプトからdub init
0637デフォルトの名無しさん
垢版 |
2016/07/19(火) 17:45:43.54ID:o21q4Wh2
まず、Windowsのロゴがあるキー( 田 )を押しながら、Rを押してください。「ファイル名を指定して実行」ウィンドウが開きます。
次に、cmdを入力して、Enterを押してください。
0638デフォルトの名無しさん
垢版 |
2016/07/19(火) 19:18:09.42ID:3sf6xm4M
>>633 が一瞬書き込んですぐに消えました
0639633
垢版 |
2016/07/19(火) 19:38:28.66ID:U82S7i4O
1、コマンドプロンプトからdub init"プロジェクト名"Enter
2、Package recipe format (sdl/json) [json]:このようになり、
  Package recipe format (sdl/json) [json]:json
                       ↑これ入力
3、Enterキー連打していくと、
  Name [test]:
  Description [A minimal D application.]:
  Author name [user]:
  License [proprietary]:
  Copyright string [Copyright ツゥ 2016, user]:
  Add dependency (leave empty to skip) []:
  Successfully created an empty project in 'C:\Users\user\test'.
  Package sucessfully created in test
  ↑このようになり、プロジェクト名のフォルダー内に"dub.json"が制作されました。
4、しかしながら、"dub.json"に"dependencies"が無く、ぼちぼち格闘中です。
  プログラム歴0の初心者には敷居が高いですね^^;
0640633
垢版 |
2016/07/19(火) 19:44:14.42ID:U82S7i4O
↑これ入力←この位置が少しずれていますので、書き直しました。
Package recipe format (sdl/json) [json]:json ←これ入力
0641デフォルトの名無しさん
垢版 |
2016/07/19(火) 19:58:45.99ID:fscdSyYa
いやいやいや プログラム歴0の初心者が dub init 使うってどんな状況よ
最初の一歩から間違ってるとしか
0642デフォルトの名無しさん
垢版 |
2016/07/19(火) 20:05:03.34ID:fscdSyYa
あれ、今は普通のアプリ開発でもビルドツールに dub 使うんだっけ?
やったことないな
0643デフォルトの名無しさん
垢版 |
2016/07/19(火) 20:20:26.23ID:555Vvc50
たしかにD言語ってコマンドラインの文化に慣れてないと厳しいな。ってか大体の言語がそうだが

dependencyは最初はdub.jsonに書いてないけど、手入力したら認識してくれるから、>>636を参考に自分で手入力するといいよ
コマンドラインの文化に慣れてないと違和感感じるかも知れないけど、この手の設定ファイルは最初は何も書かれてないから項目を自分で書いていくのが定石

ってかdubのライブラリ使わないならdependencies 書かなくていいから最初はdependencies 書かなくていいよ
0644633
垢版 |
2016/07/19(火) 21:06:11.43ID:U82S7i4O
>>641
  某イクサゲームをやっていまして、10万円金くじ引いても天なるものが1枚しかでなくてwww
  自分でゲーム作ったほうがいいんじゃね!っと思い立ったのが吉日でして。
>>643
  ゲーム用のライブライ追加してぼちぼちやってみようかと思ったのですが、
  ズッコケすぎて全然前に進みません。^^;
  dmdダウンロードして4日目くらいですがw
  ちなみに、"プログラミング言語D"とゲーム開発関係書籍2冊ほど手元に置いてますけど
  最初の一歩目で迷子になってます、、、。
0645633
垢版 |
2016/07/19(火) 22:42:44.72ID:U82S7i4O
1、"dub.json"に下記を追記しました。
   
   "dependencies": { "dgame": "~>0.6.4" }

2、C:\Users\user>dub build Enterキー

   Neither a package description file, nor source/app.d was found in
   
   ↑このようになります。
   app.dに何のために、どんなソースを書くのかわかりません><
   よろしくお願いします。
0646デフォルトの名無しさん
垢版 |
2016/07/20(水) 07:03:39.83ID:/Ye1vbG1
dlangerの人口減らしたくないし取っ掛かりの部分だけナビゲートしちゃる

dub initによって作られたsource/app.dには
コンソールに文字列を出力するコードが最初から書かれてるから
そっから自分で動かしたいように書き換えるのが通例

dependenciesは https://code.dlang.org/ のリストにあるパッケージが必要な時に書く
これで何言ってんだか分かんなかったらdub.jsonは弄らないで最初のままでおけ
てか dub(ビルドツール)の前にdmd(コンパイラ)の使い方を覚えるほうが先だね

そもそも言語仕様も標準ライブラリ(phobos)も知らん段階だろうから

main.dを新規作成してエディタで開いて
std.stdioをimportしてmain関数内でwriteln関数を使って
HelloWorldをコンソールに出力するコードをmain.dに記述して
コマンド
0647デフォルトの名無しさん
垢版 |
2016/07/20(水) 07:06:09.24ID:/Ye1vbG1
レス本文にダブルクォーテーションが入ると文章途切れるのか

>>646の途切れた部分)
main.dを新規作成してエディタで開いて
std.stdioをimportしてmain関数内でwriteln関数を使って
HelloWorldをコンソールに出力するコードをmain.dに記述して
コマンド dmd main.d でコンパイルするとこからはじめようか

新しいプログラミング言語に触れるなら↑が本来の最初のステップになる
0648633
垢版 |
2016/07/20(水) 09:29:26.81ID:Oo0kZypL
>>646
助言ありがとうございます。
HelloWorldの門は一番最初にくぐりました。
レス文見てたら、dubの使い方を勘違いしてたみたいでした。
最初は任意のライブラリを勝手にダウンロードし、dmdにサインイン。 
その後自由にライブラリが使えるものだと思っていました。
違う方法でライブラリが使える方法を探ってみたいと思います。
レスをくれた皆さんありがとうございました。
0649デフォルトの名無しさん
垢版 |
2016/07/20(水) 13:49:05.59ID:S0wpPWZM
test "hoge D" hage
0650デフォルトの名無しさん
垢版 |
2016/07/21(木) 02:31:14.62ID:+htOPDkp
「D言語は2番目に覚えるべき言語」とか言うけど、「ゲーム作りたい」という動機だと、もっと、かなり順位下がる気がする。
ABA GamesさんからD言語入った身で言えたギリじゃないけど。
短い期間で出力を得たいならJavaScript(かそのトランスパイラ)おすすめ。
コントローラからの入力がまだ標準化されてないかもしれないけど。
というか俺が思ってる某IXAゲームもクライアントサイドはJS+WebGLなのでは?
7〜8年前だったらActionScript推したけどなー。
あ、やる気に冷や水かけるつもりじゃないですよ。言語の習得は平行してできるので、どっちもやるとイイよ!
0651デフォルトの名無しさん
垢版 |
2016/07/21(木) 18:46:26.48ID:Vj/xPVWN
いまならUnityじゃね
0652デフォルトの名無しさん
垢版 |
2016/07/25(月) 00:17:46.47ID:XTQ4vcgC
D言語にも深層学習用のライブラリがあればなあ
0653デフォルトの名無しさん
垢版 |
2016/08/05(金) 01:29:38.10ID:yG1Q1Zfx
DMDScriptってこの先生きのこれるの?
例えばreadme.txtのMain Goalのリストにも載ってない64bit対応とかする目あるのだろうか?
0655デフォルトの名無しさん
垢版 |
2016/08/16(火) 18:52:17.71ID:D9Aqh5ca
Releaseビルドで作られたexeファイルには、開発環境由来の個人情報は含まれますか?
0656デフォルトの名無しさん
垢版 |
2016/08/16(火) 23:45:49.73ID:aXbZPgJ2
hello, worldをダンプしてみたけどPhobosのシンボルが読めるからまあ
D言語が使われているであろうこととか>>655がマゾ豚であることとかがわかる。
幼女>犯罪に使おうとかキモいこと考えてないでさっさとDちゃんの抱き枕相手に腰振る練習してなさいよ!このブタッ!
0657デフォルトの名無しさん
垢版 |
2016/08/17(水) 00:15:35.35ID:lwRSgBSO
>>656
犯罪なんて考えてないです><
ネットで公開したとき、特定につながる情報が入ってないか気になっただけですよ。
あと、マゾ豚でもないです><
0659デフォルトの名無しさん
垢版 |
2016/08/17(水) 19:59:59.49ID:BDOXQSJ7
My Documents以下で開発してて、デバッグ情報にあるフルパスからアカウント名が……って話だな
0661デフォルトの名無しさん
垢版 |
2016/09/12(月) 21:07:12.99ID:g/2ERTf6
templateを使ってループをunrollしたいと思ってるんですけど、うまい方法はないでしょうか?
static ifならぬstatic foreach的なものが欲しいです。
0663デフォルトの名無しさん
垢版 |
2016/09/12(月) 21:59:01.32ID:g/2ERTf6
>>662
レンジの先読みっていうのは、1ループで例えば4要素ずつ回すとかするやつですか?
saveはよくわかりませんでした。

templateでは無理なんですかね?
0664デフォルトの名無しさん
垢版 |
2016/09/13(火) 07:27:24.17ID:kzljWn49
タプルをforeachするときは静的に展開されるよ
import std.stdio;
template T(P...){ alias P T; }
alias MetaArr = T!("a", "b", "c");
void main() {
foreach (v; T!(0, 1, 1, 2)) { writeln(MetaArr[v]); }
//foreach (v; [0, 1, 1, 2]) { writeln(MetaArr[v]); } // error
}
テンプレート再帰を使って便利なやつ(iotaとか)を作るとよし。
std.metaにタプル操作テンプレート群がある
0667デフォルトの名無しさん
垢版 |
2016/09/13(火) 16:52:26.00ID:Sk3FDaZ1
>>664
なるほど、タプルを使うとstatic foreachみたいなことができるんですね。
>>665
型タプルの名称が変わってたんですね。
0670デフォルトの名無しさん
垢版 |
2016/10/08(土) 15:24:34.36ID:lyDMzk0a
質問です
C# なんかだとジェネリクスの変性を指定できて、たとえば Base <- Derived のとき List<Base> <- List<Derived> になる、つまり
List<object> a = new List<string>();
ってできたと思うんですが、こういうのって D言語だとどう書けばいいんでしょうか
opCast を使う?
0671デフォルトの名無しさん
垢版 |
2016/10/10(月) 03:02:58.71ID:XeSbllOL
>>670
テンプレートの範囲を拡大させることで実現する。
しばしばmain直下まで汚染されるが気にしない。

import std.container, std.traits;
void foo(A)(A a) if (is(A : Array!B, B : long)){}
void bar(A)(A a) if (isInstanceOf!(Array, A)){}
void main()
{
auto a = Array!int();
foo(a);
bar(a);
}
0675デフォルトの名無しさん
垢版 |
2016/10/12(水) 13:44:19.71ID:kYS44Rbd
ついでに拾いもの

>ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ

cmd で UTF-8 使える方法 (chcp 65001 について)

http://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty
http://dogmap.jp/2011/11/15/mintty/
mintty
http://tanakh.jp/posts/2011-11-15-windows-terminal.html


色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/
0676デフォルトの名無しさん
垢版 |
2016/10/12(水) 13:46:35.25ID:CGbCriuU
どうみてもスレチ
っつーか板違い
0678デフォルトの名無しさん
垢版 |
2016/10/13(木) 16:55:38.03ID:L+oZkHrx
そういや最近ハマったんだけど
auto x = (int a) => a;
auto y = (int a) => { return a; };
この二つって型が違うのね
初めて知ったわい
0679デフォルトの名無しさん
垢版 |
2016/10/13(木) 18:51:22.75ID:DlV3jQX5
>>678
2つの記法を混同してたのかな
(int a)=>a に対応するのは (int a){return a;}
(int a)=>{return a;} は (int a){return {return a;};}
0684デフォルトの名無しさん
垢版 |
2016/11/01(火) 23:37:35.22ID:wR5ZjNoq
>>683 まじかよ朗報
---
std.datetime.benchmark!func(10_000)[0].to!Duration.writeln;
---
>136 ホシs and 8 hnsecs
∴Windowsはクソ
0685デフォルトの名無しさん
垢版 |
2016/11/01(火) 23:54:18.23ID:872/MYpu
μ(マイクロ)がマルチバイトになってて化けるやつだな
俺も前から変えてほしいと思ってるけど
0686デフォルトの名無しさん
垢版 |
2016/12/03(土) 01:09:21.23ID:999B/Ieu
クリスマスプレゼントにこういうのが欲しい。
struct FatStruct
{
Object obj;
void opAssign(headconst ref FatStruct rvalue) { obj = rvalue.obj; }
}
1. refで修飾された引数専用のオプション修飾子で、
2. mutableな変数にcastなしで代入可能で、
3. 「参照とってるけど、このメソッド内では変更を加えないよ。」ということをcallerに伝える。
ものクレクレ
0687デフォルトの名無しさん
垢版 |
2016/12/04(日) 12:43:36.67ID:ijuOYWzP
なんかRustがやけに元気だけど、D言語って消えていくの?
0688デフォルトの名無しさん
垢版 |
2016/12/04(日) 15:19:42.11ID:Kly2fP6x
線形代数充実したら使ってやってもいい
0692デフォルトの名無しさん
垢版 |
2016/12/04(日) 21:16:16.33ID:0HU6vOnR
mir…
0697デフォルトの名無しさん
垢版 |
2017/01/24(火) 08:07:50.10ID:tjYeiy24
リリースサイクルが合わないから dub repo に移すと言ってた
dub もほぼ公式だから問題あるまい
0698デフォルトの名無しさん
垢版 |
2017/01/24(火) 10:09:07.65ID:9yrS8iWN
にしてもなあ……
0699デフォルトの名無しさん
垢版 |
2017/01/25(水) 01:36:00.78ID:NBMLgLD+
もうちょっとdubで成熟させてからexperimentalにぶち込んでもよかったよね、ってことだと思ってる
■ このスレッドは過去ログ倉庫に格納されています

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