1 :
Win64をやりたい場合はMSVCwo :
2013/01/21(月) 12:39:54.40
新スレ記念にマジレスすると Qt とか Python とか知ってしまうと D いらないんだよね
dusers.dip.jp/ - D言語友の会(日本語フォーラムあり) 403
ひょっとしたら復活するかもしれないので一応そのままにしておいた が、そろそろ一ヶ月たつから見込みは低い 避難所がほしいな
dmd.exe -c -inline -O -release -w -version=Unicode -version=Windows7 -version=WondersBuild -ofwonders\gdiplus.obj wonders\gdiplus.d wonders\gdiplus.d(1147): Warning: min property is deprecated, use min_normal instead wonders\gdiplus.d(6005): Error: class wonders.gdiplus.CachedBitmap identity assignment operator overload is illegal
core.sys.windows.windows 定義の数値型は64bitに対応できてないね もうバグ報告されてるかもしれないけど 英語書けないので誰かよろしく…
LONG_PTRとかは対応してるけど WPARAMとかLPARAMとかLRESULTがuintとかint決め打ちなのが原因みたい
やっぱりC/C++のintとかlongのサイズの型の定義モジュールがいるんだって
cintとかcfloatとかcdouble… あれ?
まずcintを定義するために条件分岐が必要で、 次にDWORDみたいなのをcintを使って定義するために条件分岐が必要で…
別名定義と条件コンパイルで何とかしてくれという方針では
version(Win64) { }
(size_tじゃ)いかんのか?
com関連と64bitが整備されれば Windows用のGUIアプリケーション作るときに視野に入ってくるんだけどな 手が届きそうなのに届かないw
関数の引数に構造体の代わりに alias thisした型を入れたら暗黙的に型変換してくれないかなぁ・・・ opAssignでいけるかと思ったらそんなことなかった
いや無理だろ alias this以外にもメンバあったら死ぬじゃん
bgzlrks
なげーよ
ありがとうございます!
DDTは最新のeclipseに対応していないんだ
DDTステロ!
DMDscriptってコンパイル通し作業行われてないんですか?
ウォルター様は通し作業は有志が動作確認できるようにとわざわざチェックしないでリリースして下さります
ラムダ式の時だけじゃなくてもうすべての場所でreturn省略できたらいいのに
関数型言語とかはそうだな でもあれ手続き型言語でやるとバグの温床だからな
ハゲの温床に見えた俺 そろそろ寝るか
return を廃止してその代わりに 関数の頭に fn みたいなキーワードを必須にするのなら 賛成してやってもいい
なにそのjavascriptの派生言語みたいなそれ やめろよ
それ何てrust
一文なら、という条件付きならいいんじゃね
return忘れても 別の値が返ってとりあえず動いてしまうとか
狙ってなくても戻り値を返してしまうからな 特に関数定義の頭で戻り値の型を明示しなくて良い場合(動的型や型推論付き)は さらにややこしくなる、まあ組めなくはないけどね
そんなこと言ってたらOCamlとかバグの塊でとてもじゃないけど使えないみたいな状況になってるはずなんだけど
ウォルターの人生そのものであるD言語を そう簡単に仕様変更するわけがないだろ!!
OCaml は型チェックが厳しいから。
少なくとも表向きは型のチェックなんてないように思うが それでも型チェックがうるさいと判断するのかね?
OCamlは整数の加算と小数の加算で演算子が変わるほど厳しいじゃん・・・
関数が常に一文なら問題ないんじゃね 必ず戻り値を何か書かないといけないわけで
関数定義をラムダ式を代入でもいけるようにしてほしいわ・・・
enum func = (int a)=>a;
enum f = (int n){ return n+1; }; // 旧 enum f = (int n) => n+1; // lambda 戻り値型の省略なんてしなくていいからreturn省略したい enum f = int(int n){ n+1; }; これでいいじゃない・・
それならセミコロンがないほうがいいな 最後の文にセミコロンが無い時に限りreturnの代わりになる、でどうだ enum f = int(int n){ n+1 };
ラムダ式だけは何か趣味機能な気がする これあると便利な事ってどういう分野なんだ
ラムダ式便利すぎるだろう むしろ使わない方がおかしい
サッパリ想像できない 具体例がほしい
レンジとかアルゴリズム使わない人にはわからないかもね
普通のdelegateリテラルで十分な気がするんだけど
=>の糖衣構文はアルゴリズムに渡す時に素敵すぎるね
記述が短くなるというのは想像以上にいい これは実際に使う場面に行き当たらないと実感するの無理かも
あれだ 推論可能な場面でいちいちautoでもvarでもなく 型名を書かなきゃいけないJavaとかに絶望するのといっしょの感覚かも
どうせ引数の型あんまり省略できないし、delegateとはreturnの有無の差くらいしか無いと思うんだけどなあ・・
便利かどうかなんて主観でしかないんだから互いに「お前がそう思うんならそうなんだろうお前ん中ではな」で終わる話
平行線だったのは結果論だけどなー。 その主観が交わる可能性があった以上、コピペでまとめちゃうのはいくないっすよ
( {...} ) <- こういうのがイヤ
俺は好き
我・乱無駄の名において命ず・消え去れ無礼衆!
// delegateが無い場合
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 == ps;} });
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 != ps;} });
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 < ps;} });
// delegateが使える場合
hoge((Parameter p1, Parameter p2) {return p1 == ps;});
hoge((Parameter p1, Parameter p2) {return p1 != ps;});
hoge((Parameter p1, Parameter p2) {return p1 < ps;});
// ラムダ式が使える場合
hoge((p1, p2) => p1 == ps);
hoge((p1, p2) => p1 != ps);
hoge((p1, p2) => p1 < ps);
>>55 俺は大差があると思う
ヒント:ラムダで引数の型が省略できる場合には関数リテラルでも同じ書き方ができる
結局のところdelegateあるならラムダいらないんじゃね?と言う話 別にあって都合が悪いこともないから消せ!とは言わんけどw
ラムダは構文糖だからいらないと言われても困る autoが消滅して型名を書けと言われたりscope(exit)が消滅してtry-finallyを書けと言われたりしたら俺はDを投げる
ラムダ要らない派とか今まで一人も出てきてないと思うけど
complex型がいつ消えるかどきどきだわ・・・
消えたらC99の複素数関数をABI互換性を保って呼ぶ方法が無くなるのか?
std.complexじゃダメなの?
C99のcomplexはFPUだかSSEだかのレジスタ渡しだろ? ライブラリ定義はstructに詰めた状態だからスタック渡しになってしまわね?
ライブラリ内でアセンブラで書いてあれば別にいいんじゃないの あるいは何らかの最適化に通るのでもいいわけで ABI互換性は困りそうだが
D言語って、 int[100] a, b; a[] += b[]; で勝手にSIMD演算とかいうのやってくれるんですか?
ターゲット環境を明示してなければ勝手にそういうコードを吐くわけ無い 環境を特定するなら素直に core.simdで定義されている配列もどきを使うべし
classのコンストラクタで定義した変数をメンバーにしちゃえる的な機能がほしいなぁ 多分害悪の元なんだろうけど class hoge { this() { int a = 0 as public; } } 見たいにしたらhoge.aが使えるみたいなね! thisが一個のとき限定でいいからさぁ・・・
>>77 どんな意図の機能?
頑張れば既存の機能でやりたいことが解決できるかも
黒魔術ツールopDispatchがあるからなあ ただコンストラクタで書くならメンバでいいだろという気がするが
現在のスコープから参照できるすべてのシンボルを列挙する__traitsが欲しい あとそのシンボルが変数なのかモジュールなのかクラスなのか構造体なのか判別するのもついでに欲しい
C++の特殊化でなら省力のために欲しいかな mixin無ぇーし
顧客が本当に必要だったもの:賢いIDE
IDEとか重いだけだよ!
DDTがeclipse4.2に入らないのが痛い
軽いIDEには需要があるのか
Sublime Textがそんな感じじゃない? プロジェクト機能あるしD対応してるし
言語仕様の追加まで対応出来る賢いIDEをだな
IDEの触手の一端がウォルたんの脳みそに取り付いているだと…!?
IDE(CUI)
Integrated Drive Electronics Integrated Development Environment エンビロンメント?
91 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/01/29(火) 23:58:06.70
>>90 エンヴァイロンメント。
電子辞書を買いましょうね。
マクロまだー?
カタカナ表記につっかかるのはナンセンスだと思うけど
カタカナ表記としてもエンヴァイロンメント、エンバイロンメント以外に存在しない
ディーゲンゴも大五郎も大して変わらんしな
インバイロンメントさんが泣いてる
わーにんぐ・わーにんぐ
エンベロープメント モーリメメント ヤックデカルチュアメント
DPasteのコンパイラが止まってるじゃないかクソッタレー! import std.stdio; void main() { // ポインタの配列 int i = 42; int*[1] src = [&i]; // スライスの代入 int*[1] dest = src[]; // srcとdestの内容が違う! (2.061以降) writeln(src, " == ", dest); } これが2.061の破壊的変更だったら欣喜雀躍するんだが…
>>100 おおっと、さすがにこういうのはすぐ発見されるんですね
Thx
override attribute is deprecated ってどうすりゃいいの?
ああ、withoutか
void f(void delegate(int) dg) {} f((i) { ... }); で推論できるなら class C { this(int i){} } C obj; obj = new(10); とかもできそうだよね
構造体ならそれでいいかも知れんけど それでもやっぱりきもい
>>Error 42: Symbol Undefined _D6object9Exception6__ctorMFNaNbNfAyaAyakC6object9ThrowableZC9Exception (pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable)) ⇒pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable) なんですかこれ・・・ あるし class Exception : Throwable { @safe pure nothrow this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null) { super(msg, file, line, next); } @safe pure nothrow this(string msg, Throwable next, string file = __FILE__, size_t line = __LINE__) { super(msg, file, line, next); } }
2.061 に変えて自前のライブラリの再構築を忘れてたときに そういうエラーを見た気がする
>>107 VisualD使ってるんだけどそれ見てもしかしてと思ってエラーログ確認したら
使用するDMDが2.060のDMD環境指してた・・・
VisualStudioShell起動中に2.060と2.061をディレクトリリネームで切り替えた覚えがあるけど
勝手に設定まで追従しやがったのか・・・
そういえば昔ErrorとExceptionがあったような気がしたんだけど、なんで片方なくなってるの?
なくなってないよ ぜんぜんちがうよ
あれ?ほんとだ・・ 公式のobjectのドキュメントに載ってなかったから無くなったのかと
タプルリテラルってないの?
ない
入るとしたらどんな構文になるんだろうな Pythonみたいにしたらえらいことになりそうだけど
DDTでライブラリパスの追加とかlibファイルの追加ってどこでやるん?
タプル構文か・・・fortranの配列を採用しようじゃないか (/ a, b /)
(|a, b|) (>a, b<) (*a, b*) (a, b) (!a, b!) {|a, b|}
ここでついに<a, b>の出番が
そういえばしばらく前の話だけど、タプルリテラルを (a, b)みたいに書きたいからコンマ演算子廃止しようぜ、 という話がMLに出てたな。
コンマ演算子って実際、使われてるの? Dに限らずCとかでも
ラムダ式と組み合わせて使います
マクロで時々見る。#define f(x) (sideeffect(x), x + 1) とか。書いたやつ死ねとしか思わんが
for文の括弧内の各部に文を複数突っ込むときに使う気がする
for (i = 0, j = 0; i < x && j < y; i++, j++) みたいな
forで複数突っ込みたいのは最後のとこだけだろうから、 ++i, ++jの値がjではなく(i, j)のタプルになっても影響ないな
forの最後でたまに使うから無くなると困る 他にも while ((x = foo()) == y) { } を while (x = foo(), x == y) { } と書く事もなくもない
(x = foo(), x == y)の値がx == yではなく、(x, x == y)のタプルになって空ではないってことで無限ループしても まあ影響ないな
なんか人いるみたいだし、ちょっとスレに張り付いてみる。 いまのDでこれが気になる、とかある?
構造体がテンプレートなら、内部の普通のメンバ関数も@safe pure nothrowを推論して欲しい。 void foo()(){...}ならできるけど
>>129 あー、Jonathanが欲しいといってたやつか。std.rangeとかでいろいろ苦労しているから
実験パッチは作って試してみる予定。ただ、Fwdref問題がいっぱい出てくるかもしれないから
対応するかは半々だなあ。
ちなみに、現状は「テンプレートの直下の関数」のみ推論が行われる。 void foo()() { ... } は template foo() { void foo() { ... } } の構文糖なので推論が効く、という仕組みになっている。
個人的に連想配列の使い勝手が悪い ~で連結したいしmapとかで回したい
>>132 ~での連結はコンパイラ対応の範疇だな。
2つの結合したい連想配列に重複するキーがあるときどういう動作をすべきか、
という所が決まらないと駄目だと思う。
mapでまわすのはPhobosの範疇。しばらく前にそれっぽい話題がMLで出てた気が
するけど、特に話は進まずに終わったと思う…
そういう挙動を実現すること自体に問題はなさそうなので、enhanceをbugzillaに
投稿したら興味ある人が対応してくれるんじゃないかな。
自分は最近コンパイラにかかりっきりなので、正直Phobosまで手を入れる余裕が無い。 他の人のPullReqをレビューするぐらいが精一杯です。
rvalue refってどうなってるの?
>>135 まだセマンティクスがはっきりしていない。現在テンプレート関数で使える
auto refは、厳密には右辺値参照とは違うものなので、これをそのまま
非テンプレート関数にもってくることは出来ない(構文的にも意味論的にも)
Andreiが
http://d.puremagic.com/issues/show_bug.cgi?id=9238 で
Dにおける右辺値をrefで束縛した場合の挙動についてある程度書いてくれている。
興味深いのは、DはC++と違って参照型の変数が存在せず、関数の仮引数と戻り値
にのみrefが出現するため、右辺値を関数引数のrefで束縛しても「本質的には」
問題ない、という所かな。
とはいえ、実際には@systemな関数の内部で、ref引数からアドレスを取って
グローバル変数に束縛するなどのエスケープ問題が絡んでくるので、セマンティクスを
もっと詰めないと実装できない、というのが俺個人の現状認識。
結論:近いうちに状況が動く可能性は低い
そろそろ抜けます。このスレは時々覗いているので 面白そうな質問あったらそれなりに答えるつもりです。では。
乙
連想配列にclear()なりremoveAll()なりが無いのはもはや意味不明なレベル
いや clear あるっしょ・・・あれ、どこに書いてあったっけ?
dupも欲しいな
>>140 object.destroyのaliasでclearがあるけどこれ呼ばれてるんじゃね?
>>141 dup使えたぞ
ドキュメント無さそうだがww
マジダclearできた 替わりにこうしてた・・・ typeof(h) tmp; tmp.swap(h); で、h.dup.swap(h);がコンパイル通らなくて泣いてた
あれ?よく考えたらh.dup.swap(h);意味ないじゃん。何やってんだ俺
dupはあるんだった 何かと勘違いしたわ
ポトペタなRAD今作ってるからGUI厨はちょっと待ってろ
♪〜(・ε・。)ヒューー boost licで頼む
ポトペタとかは比較的どうでもいいんだ まともに保守されてるだけでもぶっちぎりに優れたライブラリになれる
逆に考えるんだ 唯一まともに保守されているから 公式のライブラリとして存在できていると考えるんだ
UDAってCTFEした値も取ってこれるのか 無茶しやがって
シンボルが欲しくなるな
templateは要素がひとつで同名って条件でtemplate名称を省略できるって 公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで 使えちゃうのは合法? template A(T){ class A{} T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの } ※ auto x = new A!(int).A(); ではなく auto x = new A!(int)(); として使用できてしまう。
143 :営利利用に関するLR審議中@詳細は自治スレへ : 2012/04/08(日) 17:55:55.18
>>140-141 メンバ一つに限るっていう条件は 2.058 で外れたとかどこかで見たような
Eponymous Template っていうらしい
Change Log見てもそれっぽいこと書いてないから怖いな・・ ありがとん
156 :
デフォルトの名無しさん :2013/02/08(金) 01:45:26.22
Templateパラメータで渡された型のクラスインスタンスをalias thisする方法あります? struct S(T){ T t; alias t this; } T型が同じファイルに定義されている場合はコンパイル通るけど 別ファイルの場合Tのメンバを呼ぶコードがundefined identifierとなりました
Dで作ったDLLをFreeLibraryするとホスト側が止まる(というか処理が戻ってこない)んですけど・・・
>>156 通ると思うけど…
リンク漏れの Symbol Undefined じゃなくて?
>>157 ソース無いからどうしようもないけど
静的呼び出ししたらどうなるよ?
>>159 今やってみました。静的リンクだと問題なく呼び出せました。
目的は実行時に激しくDLLのロード/アンロードをすることなのでLoadLibrary/FreeLibraryが必要だと思ってます。
DLL側、使用側のソースです→
http://dpaste.dzfl.pl/b47c098b 試しにDMDで作ったものでない(たとえば、SDLの)DLLを読み込ませてみましたが、そっちでは問題なくLoad/Freeできました
なんかDLLの作り方間違えてるのかな・・
>>160 横レス
なぜか最後のwriteln の中で死んでるっぽい
# デバッガが使えればみんな悲しまずに済むのに・・・!
試しにメッセージボックスに変えてみたらイケた
import core.sys.windows.windows;
MessageBoxA(null, "4 end".ptr, "message".ptr, 0);
core.runtimeのloadLibrary/unloadlibraryを呼んだらどうなる? なんかGC関係の追加処理してそうだけど
163 :
デフォルトの名無しさん :2013/02/08(金) 22:22:33.15
呼び出し規約
165 :
デフォルトの名無しさん :2013/02/08(金) 22:40:40.32
>>164 落ちる場所のアセンブリよく読め
スタック巻き戻してretするとこで落ちてる
DLL内の関数の呼び出し規約とは言ってない
166 :
160 :2013/02/08(金) 23:27:18.56
呼び出し規約と聞いてよくわからないままいろいろ試しました。 alias extern(D) void* function(in char*) LoadLibrary_t; alias extern(D) uint function(void*) FreeLibrary_t; void main() { writeln("1 load"); auto p = (cast(LoadLibrary_t)&LoadLibraryA)("plugin.dll"); writeln("2 ", (p is null) ? "error" : "ok"); writeln("3 free"); (cast(FreeLibrary_t)&FreeLibrary)(p); writeln("4 end"); } なんかこんな利用側コードで結局エラーが出なくなりました。 なんでDの呼び出し規約で正しい動きをするのか まったくわけわかんないんですがこれでいいんでしょうか・・・
167 :
160 :2013/02/08(金) 23:38:46.24
動いたように見えただけでなんも動いてなかった・・・適当なこと書いてごめんなさい
2007-10-07 (´・ω・`)
マジか。つまりDMDのDLL作成機能に実用性なし! 通りでD言語で作られたライブラリが一切DLL化されないわけだぜ
なあ、手元で
>>160 を動かしたら、何の問題もなく動いたんだが……
いや
マジマジ。ちゃんと全部出る。一行も変更してない。 1 load 2 ok 3 free 4 end
kankyouwo
xp
7 dame
mamamajika
>>156 のわかった
alias thisするメンバがprivateだとundefined identifierになるぽい
これって動作としては正しい?
privateにしないと外からalias this対象がメンバとして触れちゃうから問題な気が・・
http://ideone.com/kVVl02
>>178 逆に private な alias this はどんな動作になるべきだと考えてるの?
>>178 エスパーだが、こういうことがしたいのではないか
struct S
{
private:
T x;
public:
@property T getX() { return x; }
alias getX this;
}
あれ、clear って deprecated になってるじゃん destroy の方が新しいのか 逆だと思ってたわ
デデデデストローイ
これって破壊的変更なんですかね
>>171 もしかしてDMD以外のコンパイラを使ってないか?
>>185 俺もxpでdmdだが問題出ない
load〜freeを100回ループさせても正常
未だに修正されない理由はこれか!
>>168 にある回避策を試すといいかも
副作用出るかは知らないが
確かに Win7/64 だと
>>168 に引っかかってるぽいけど
同じバイナリが WinXP/32 だと普通に動くな
同一の領域を指すレンジの距離ってどうにか簡単に得られませんか?
1.まず説明する能力を鍛えます
auto range1 = [0, 1, 2, 3]; auto range2 = range1.find(2); assert(distance(range1, range2) == 2); のdistanceみたいな関数ないですか?
import std.algorithm; range1.countUntil(range2);
間違えた auto range1 = [0, 1, 2, 3]; auto range2 = range1.find(2); auto range3 = range1.find(3); assert(distance(range2, range3) == 1); こっちのほうです。
indexOfで場所を取得して差の絶対値を取れば?
ややこしい型名のメンバーをautoで書きたい(;;.;;)
つ (T)
つalias
たまに実行時定数がほしい
github ソースから最新を取ってきたら alias INT = int; の構文がさっそく死んだ…?
2.062
>>201 2.062 では消されていないようだ
てかgithubのブランチが分かれてよくわからなくなってるんだが
>>204 masterが最新だと思っていたら 2.062 よりはるかに古かったぜ…
gitつかいにくw
opAssignが使えなくなった… 代替法あるん? class C{ C opAssign(C c){ return this; } } void main(){ C c = new C; C d; d = c; } Error: class temp.C identity assignment operator overload is illegal
同じ型のopAssignはもともと使えんぞ
まじっか 今までコンパイル通ってたから気付かなかった じゃあみんなディープコピーしたい場合どうしてるん
ポリモが不要なら struct 必要なら mixinとか alias thisで誤魔化す
ウソです ほんとは cloneとかdeepCopy とかいう関数を地道に呼んでます
そ、そう…がんばる
関数の引数の型で「.lengthが定義されている配列であればなんでも」という記法ってありましたっけ
static if (is(typeof(T.init.length))) とかそういうこと?
>>208 classは参照型のセマンティクスを持っているので、自身と同じ型を取るopAssignは定義できない。
一方structは値型のセマンティクスなので、自身と同じ型を取るopAssignでも定義可能。
>>153 >templateは要素がひとつで同名って条件でtemplate名称を省略できるって
>公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで
>使えちゃうのは合法?
>
>template A(T){
> class A{}
> T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの
>}
この用法は合法(TDPLに上の様な場合「メンバsはテンプレートAの外側からは
アクセスできなくなる」と書かれている)。またstd.traitsのテンプレートの多くは
この仕組みを使って細かい実装用のテンプレートを内側に隠している。
ありがとうメーン
githubから最新ソース使ってる人どれくらいいるかな
・新機能はいらないけどバグ修正はほしい -> staging
・PullRequestを出したい -> master を取得して staging/master/hogeFeatureのどれかへ
・最新機能を試したい -> master を取得して hogeFeatureを各自でマージ
こういう認識で合ってる?
masterとstaging のどちらが新しいと一概に言えないっぽいところが悩ましい
http://wiki.dlang.org/Development_and_Release_Process 誰か訳してくれないかな〜(チラッ
>>214 「arr.lengthとarr[i]が定義されてるようなもの」ってことなら、
std.rangeのhasLengthとisRandomAccessRange使えばいいよ
2/22 に 222get ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!!
惜しい・・・。君は実に惜しい逸材だったよ。
226 :
デフォルトの名無しさん :2013/02/22(金) 19:04:12.44
もうすぐ22:22ですね
2/22 22:22 に 222get ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!!
>227 すげえええ 内部でrange関数使ってるからnothrowなのにnothrowじゃない日々ともおさらばだ!
隠していても俺がウスノロだってバレてしまうのかよッ
not ウスノロ you're ウスベニウンコ
234 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/24(日) 00:07:31.36
COBOLからD言語への変換って面白そうだね
実用性ゼロの最悪の選択だ
rubyをDに変換して、さらにJavaで動くように変換したら凄いことになりそう
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry
239 :
デフォルトの名無しさん :2013/02/25(月) 17:58:44.93
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry
なぜDじゃなくてC#なんて比較的ショボい言語を使ったんだ
Dを使った方はまだ極秘で捜査を進めている段階で情報を出すことが出来ない
でもC#のref/outとかプロパティとかはたまに欲しくなるんだ
>>242 Dのref/outやプロパティでは満足できない用途ってこと?
bool flag { get; set; }みたいに1行で書きたいし 呼び出し側にref/outつけたい というような細かいことだったりするんだごめんよ
>>244 なるほど
プロパティは糖衣構文(かコンパイル時関数実行)で対応できそうだけど
呼び出し側のref付は内部構造に関わりそうね
246 :
デフォルトの名無しさん :2013/03/01(金) 00:51:37.24
D言語でANSI Cコンパイラ実装してみた 文字列処理関数のおかげでレキシカルアナライザの構築がスゲー楽だった たぶん全く需要無さそうだけど。
手習いならgithubにでも置いてwikiなりなんなりからリンク張ればいいじゃない
248 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/01(金) 18:59:36.14
>>246 欲しい! githubにでも公開してくだされ
>>248 「見たい」ではなく「欲しい」な時点で程度が伺える。
250 :
デフォルトの名無しさん :2013/03/01(金) 23:58:41.04
>>247 >>248 コード整理して人に見せられるレベルにしてから上げます!
ちなみに最適化処理とか一切無いです。。。。。。
それ以上改造したりメンテしたりする予定がないならさっさと公開しちゃいなよYOU その上で要望があるならまた考えればいい
switch文に0..3みたいにレンジ指定が出来たような気がしたんだけど出来ないな 俺の気のせいかな
case 300: .. case 400: みたいなのは出来るけど 範囲が256より大きいとエラーになる仕様
8ビットレンジって・・・仕様じゃ無くてバグの領域じゃないのw
それはジャンプテーブルの関係じゃ?
そうか D使うのやめるわ
うぉるたん "I worship the Dark Arts."
Dコンパイラの実装に関する手引きみたいな記事ってありませんか? 実装が簡単とか書いてあったので気になったんですが
そんな時代もありました
もう簡単とはとても言えんよな… ああ、うん、C++11実装するよりは簡単じゃね?ぐらい
C++コンパイラの実装がエベレスト登頂するくらいだとしたら オリュンポス山登頂する程度の難易度の低さだと思う
単方向リンクリストはstd.containerにありますが、 双方向リンクリストがないのは何か理由があるのでしょうか? よく使うので、あると便利だと思ったのですが。
なくても間に合うから
265 :
263 :2013/03/09(土) 20:48:36.94
必要なら自分で作れっていうことか・・・
266 :
263 :2013/03/09(土) 21:13:19.31
あ、2.060でstd.containerにDListが追加されてますね。
269 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/11(月) 04:30:27.31
DのLLVM実装が実現しないかな?
LDC
dmdとかrdmdにlibを渡したいんだけどsc.iniじゃなくて -Iオプションみたいに引数でディレクトリパス渡す方法ある? 引数としてlibのパスを直接渡しても pragma(lib, "xx")があるとリンクされないみたいなんだ
環境変数をセットするしかないね
普通にdmdに.libを渡せばリンクしてくれるけどディレクトリだとどうかな -Lでリンカのオプション渡せるから使ってるリンカのオプション調べれば出来るんじゃね
VCのリンカなら「/LIBPATH」 GCCのリンカなら「-L」 でいけるようだ 残念ながらoptlinkには無い
>>273 そんなふうに考えていた時期が俺にもありました
今は バージョンが上がったらライブラリもビルドし直すからと割りきって
windows\lib に直に放り込むことにしている
276 :
271 :2013/03/14(木) 20:25:40.04
オプションでどうにかなるものじゃないのか pragma削る方向で対応してみるよ 答えてくれたみんなありがとさん
GCC4.8のRCが出たとか見かけたけど GDCが組み込まれるという噂はどうなったのかしらん
立ち消えくさいな DMD2G -デファクトスタンダード- として大ヒットするという俺の読みが
279 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/19(火) 18:23:57.38
DでANSI Cコンパイラmurder?
うっさい
Win64でdmdを32で使ってるんだけどOPTLINKでコケる現象遭遇してる人いない? 00428DA3見かけたことある人は多いと思うんだが -gcがまずいのかな…しかしrdmdもoptlinkがコケて動かないし
64bitWin7で使ってるけど全然ない
-g をのけると動くのはよくある。デカすぎる場合かな lib に分割すると動いたりする
Tokyo Auto Salonと書いてあるだろーが
東京オートサロンて場所でやったD言語のキャンペーンじゃないの?
128bit整数型のcentって何の略語?
ラテン語の百、cent
>>285 サーキット走行会 走郎にわろた。そうろうて
>>289 なるほど
じゃあ256bit整数ができたらducentになるのか
なんで100で128bit整数型なの 28はどこいったの
D言語マスコットの口の中に
295 :
デフォルトの名無しさん :2013/03/25(月) 02:02:05.97
100bit整数という変態型もD言語ならあるいは
1k=1024と同じ理屈
1024は1Kiじゃね
>>297 正しくはそうなんだが
過去に1k=1024として使ってたせいで今も慣例としてそう書かれる場面は多いんだから
その辺も含めて同じというか似たような理屈ってことでしょ
誤差2.4%と28%じゃえらい違いだと思うけどw
こまけぇこたぁいいんだよ
kとKの使い分けは実際はかなりいい加減だよ 本当に1024にしたいならKi使った方がいい
そういう話かね
kとKの使い分けは規則として存在するわけじゃないからね あくまで慣例なので実際どこまで正確に使われているかは怪しい Kiは1024以外で使われることは無い
>>303 がいや、今そういう話じゃないんじゃねって指摘してるのに
なんでさらに同じ方向にぶっ込んでくるんだw
そういう話かね
な、なんだって!?
もっとD言語の話をしようぜ コンパイル時うひょー
TDPLクルー ここで言うのも何だが監修のお二人乙です
うひょーでもぎひょーでもなくしょえーときたか
そんなプロジェクトが進行してたのか D友のTDPL訳が面白かったから読んでみたかったんだよな
え?日本語版出るってこと?
あれ?表紙にマスコットちゃん居ないな・・・
ギャラが高額すぎて頼めなかったんだよ
俺の脳内ダービー予想ではこんなのだったが ○2.063 ◎DConf2013 △Bugzilla Issue 10,000 TDPL 日本語訳 ← 出走予定なし
内容についてが見当たらないのだがTDPLの日本語訳なんかな D言語パーフェクトガイドみたいな初心者向けの新規本だったりして
なるほど しかも監修はコミッタ2人か TDPL買ったはいいけど英語苦手で半分も読めなかったので助かる
9rnsr氏とこの人って考えうる限り最高クラスのメンバーだな いやD関係で知ってる日本人3〜4人くらいしかいないけど…
>>319 読めなかったけど黒くてかっこいいのだったし表紙デザインもなんだかモダンな感じだったからうちでは飾ってるよ
何で日本語版は白なんだろう表紙もDじゃなくてCって書いてあるし!
確かにCがあっち向いてるように見えるわ
平積み狙いのホコリ対策?
さーてがんばってTreadmillGC書くぞー
新TDPL稲葉さんは監修してないのか
else static ifのインデントが深くなりすぎてつらい
アクションゲームどうなった?
>>328 作者が発表しないと情報を知る由もないね。
これが実装されたら関数はひとつの引数を受け取り一つを値を返すを地でいける! {} proc({}) { ... } ついでに仮引数の宣言の丸括弧取れるんじゃね?
>>331 パッと見はハッシュリファレンスのほうに見えるけど
{}を()にするとかなりPerlのリストっぽい書き方になるね
本がでると思ったら新しい構文を追加していくぅ
教典派と実利派に分かれて相争う時代へ
本が出そうになったら破壊的変更いっぱいすぅ
内部的には構造体なのかな
DのGCはいつまでマーク&スイープなんて旧石器時代の代物を使い続けるつもりなんだ いいかげん世代別コピーGCかTreadmillGC実装しろよウォルター
旧型が新型との絶望的なスペック差をぶっちぎり勝利するところから得られるカタルシスもあるだろう
最近のdmdのGCはめったにメモリ構造破壊したりしないぜ マジ進んでる
めったにってなんだよ 安全第一保守的GCだろ 開放漏れならわかるけど
バグ数4桁は伊達じゃない
今のdmdってそんなにバグあんの?w
345 :
デフォルトの名無しさん :2013/03/30(土) 18:34:43.86
>>338 スタックフレームとの兼ね合いが大変そうだ
newして配列に入れておいたら知らないうちに破壊されてることとかあったなぁ newしたら即GC.addRoot()で解決したから大した問題じゃない
GCちゃん。。。
某コミッタの人も 「最近のDはいきなりメモリ破壊しないから デバッグマジ簡単wwwマジwww神言語www(大意)」 って言ってたな
配列のreplaceAllみたいなのないですか?
module a; void call(alias fun)(){ fun(); } module b; private void foo(); call!foo(); // なぜ呼べん
アッ!? alias=ってもう消えたの
alias this = の構文を変えるとかいう話はあるけど 多分そういう話じゃなくて master に 2.062までの反映漏れがあるという問題だろうな
D言語パーフェクトガイド日本語版第2版近日発売予定
パーフェクト第二版・・・この感覚
その感覚がD言語
嘘だと言ってよandrei!
びびらせんなwwwww andreiタソおちゃめだな
お久しぶりです。2スレぐらい前にメタセコのローダ書いてた者です。
>>328 すんません。全然すすんでなかったり。。。f(^_^;)
githubに場所借りたのでお知らせします。
あと手持ちのリソースも晒しときますので宣伝させてください。
//github.com/garlic-flavor
o /mqo_loader
UDAで頂点情報を定義するようにしました。
o /KLisp
Lisp-Like言語実装補助。Runtime/CTFEコンパチ!
Yane-Lisp互換の実装がサンプルにあります。
o /amm
Automatic Makefile Maker
D言語のソースからMakefileを自動生成します。
なまあたたかくよろしく!m(_ _)m
gj!!!!!
Dさんが健在だ乙
Streamは何も進展ないの?
>>360 msvcrt.libってどっかで使ってるんですか?
この期にDerelict3の環境整えようと思うんですけどその当たりに絡んでくるものだったりですか?
msvcrt.libはCランタイム
368 :
360 :2013/04/07(日) 03:47:52.42
>>366 msvcrt.libについてはちょっと書こうとおもってました。
2.059から2.062の間に std.stdio.fopen の中身がCの fopen から _wfopen にかわったみたいなんですが、
snn.lib にはいってる _wfopen が日本語に対応してないみたいなんですよ。
で、これまでは SHIFT-JIS に変換して std.stdio.File のコンストラクタに渡してたんですが、
2.062 でそれすると中で呼ばれてる toUTF16z がコケるんで手詰まりだったんです。
で、msvcrt.lib の _wfopen を呼ばせるようにリンクしたら今度は snn.lib とシンボルがかぶってる旨のエラーが出てそのままじゃ使えない。
ってことで、coffimplib -e でまず module definition file を作って中の(_sprintfだったかな?)シンボルをいくつか消して、
さらに implib して作ったのが付属の msvcrt.lib です。Derelict関係ないですね。長文スマソ
日本語対応してねーぞゴルァ! ってうぉるたーたんに言っとけ
>>368 中でtoUTF16zしてるならSJISじゃなくてUTF-8で渡さないとだめなんじゃね?
>>368 あー・・・
D言語をディープに使っていくのは茨の道だということが分かりました
>>368 Windows(FAT32、NTFS)のファイルパスって一部記号が使えないだけの完全UnicodeだからそもそもShift-JIS渡しちゃダメじゃね?
そうか、WinXPが発売されてからもう10年たつんだよな
>>372 ファイルシステム関係なく
W系の関数ならUnicode(UTF16)
それ以外のA系とか何もついてない系はShiftJISを渡す
DのcharはUTF8のことだから、今までShiftJISで動いてたならそれがバグ
>>368 は単純にtoUTF16zにShiftJIS突っ込む形になって死んでるのでは
歳だけ無駄に食ったな
>>313 今の今まで忘れてたけど今日発売だった
ここ見てるような奴らはだいたい買うだろ
俺の記憶が正しければ4/9だったような
大きい書店だと入荷してもう売ってるよ 俺も買ってきた
Amazonさんは11日に届くとおっしゃってた
ISBNコードplz
>>378 いや、それはフライング販売なだけで発売日とは・・・
そうか今日行けば売ってたかもしれないのか・・・
>>380 好きなほうを
ISBN-10 : 4798131105
ISBN-13 : 978-4798131108
翔泳社は8日だと言っている
>>384 しむら日付ー!
ちなみに俺もTDPLって略称に慣れすぎてて
原題で検索かけてあれ尼登録されてねえなーって思ってたクチだったりする。
日本語版買ったらますます原書がインテリなインテリアに
日本語版の方が2.062準拠で新しいからなぁ、原著2版や分野別のD言語利用例本はまだかな
ver1系で離脱して久々に触ろうにもよくわからんのでよい書籍がないか聞こうと思ったら何か発売されていたでござる
390 :
デフォルトの名無しさん :2013/04/09(火) 01:39:56.85
>>393 個人的にはdxlib4dだけど世間一般ではSDLのほうがいいと言われる希ガス
今世紀最大の事件だといっても過言ではない
ありがたや
うおお、本当に例のエラーが出ない 連想配列のlengthが無いとか怒られてリンクできなくなったけどそんなの関係ねぇ!
関係あれよw
>>398 のせいかな
たまに16bitAppがどうの言ってエラーで起動できないことがある
書店でD言語の分厚い本を見かけたので、 久しぶりにこのスレにきました。 早くD言語が広まることを望みます。
厚い本がでたのか
D言語の薄い本とかあったな
Dは広まるより先に安定しろと
最近は破壊的変更も数ヶ月に一度だし安定してきてるよ
過去の誤りに満ちた歴史と比較するのではなく 同時代の実用性の十分な言語と比較せよ
破壊的変更が許容される文化だからAndreiや他の人たちもDに協力してるんだろう 無理に安定させようとすると、つまんなくなってやめちゃう可能性大
普及しないうちにドラスティックな変更をして実験するんだ!
そしてその果実は他の実用的な言語が得るんだ!
(Common) Lispは、言語をフルを扱えない愚民どもがアイディアをつまみにくる言語である -- Erik Naggum これをDに置き換えるとな
動的型付け言語はそこらじゅう実験場だらけだけど、 静的型付け言語の実験場ってD以外になにかある? あったらヲチしたいわ
たらヲ氏ね
rustとか今はいろいろ実験してておもしろい。 今年中に1.0にするらしいから、いつまでこの状態が続くか分からないけど。
Derelict3はSDL2のdllを自分で作らなきゃいかんし ちょっとバージョン古いけどdxlib4dで妥協することにした
Derelict3は正直めんどいのでDerelict2使ってる
>>416 Windows用のSDL2、GLFW3のDLLは配布されてるぞ?
SDL_imageとかmixerとかttfとかないじゃないですかヤダー
そんへんってSDL1のと共通じゃないの?
Dか 何年か前仕様見て感動したけど 今じゃC#でいいわ。C#が欲しい機能みーんな実装してくれた
ワロタ
C++が出てくるあたりにDがあれば話はちがったろうな C#のあとじゃまさに後の祭り。 そもそもD言語って公的スペックあったっけ?所詮同好会言語だろプゲラ
とは言ってもDはC++の不満に基づいて作られてる側面はあるからなあ
C#は.NET依存言語だからなんか嫌だ
mono
Dの唯一最大の弱点がライブラリの貧弱さだと思った今日このごろ やっぱ使用者人口多くないとダメなんかのー
はたしてそうかな
最大の弱点が破壊的変更であり ライブラリを枯死させ 使用者を遠ざけていることはいまさら言うまでもない せめて2年に1度くらいにまとめて メジャーバージョンごとに違う名前をつけてるくらいでないとダメ
そんなD言語いらない
Dの魅力はその破壊的変更でもあるんだな みんな次どうなるか気になるし、作ってる方は好き勝手自分の思うことができる これがなくなったらDは糞つまらないものになるだろう
だから趣味レベルから脱却できないおこちゃま言語 ビジネス的には魅力のかけらもなくてつまらないことこの上ないD言語 D言語 == ダメ言語
破壊的変更はD言語使いにとってはご褒美です
なんか変な人が出てきたな 春だからか
申し訳ないがNHH以外はNG
この時間D言語やってるの俺だけの予感
ポインタを返すdll内の関数を呼ぶときに何かする必要ありますか? 例えば戻り値にGC.addRootが必要?
状況にもよるけどDの外にあるポインタがDのGCに回収されるとまずいんじゃ
DLLが Dで書かれているならDLL内で newを使わずmalloc 呼び出し側が free さもなければDLL側が removeRoot 呼び出し側が addRoot こうじゃないかな
Dでdllを作る場合の質問と思われた・・・ 前衛的過ぎる・・・ Cで書かれたdllで公開された Something* createSomething(); deleteSometing(Something*); を呼び出す場合についてです。 要するにD以外で確保されたメモリの管理についてです。 RAIIでSomethingリソースを管理しようと思うんですが、 D側でpが勝手にGCされないように Something* p = createSomething(); GC.addRoot(p); //☆ : GC.removeRoot(p); //☆ deleteSomething(p); こうする必要あります?
createSomething(); // = malloc deleteSometing(Something*); // = free GC全く関係ない
あ、ポインタに入ってたものが参照されなくなったら開放されちゃうわけじゃないんだ
>>440 > さもなければDLL側が removeRoot
> 呼び出し側が addRoot
これ間違い
DLLとEXEがGCを共有しない場合や、Cから呼ばれる場合に
DLL側がaddRoot・removeRootする
基本的にCのライブラリを使う時にGCを気にする必要はない
1.メモリブロックがGCの管理下にある( malloc と new の違い )
2.参照がいなくなる( GC.addRoot はこれを防ぐ )
3.GCによるメモリ回収
この流れで問題になるのは、
>>444 のDLL内でメモリ確保して外部へ渡すケース
今回やっと理解したw
template A(T...)で受け取った時 staticLength!TとT.lengthってどう違うんですか?
>>447 staticLengthは大昔にあったコンパイラのバグ対策のために使われてた。
今はまったく無意味。T.lengthを使いましょう
わかりました!ありがとうございました!!
なんか話題ないですの?
話題というと、そろそろDさんが踊ってみた動画が欲しい(ぇ
ちょっと前から最前線はTwitterなのかなーって気がしてる。 最近Dの話題ROMるためだけに頑なに持ってなかった垢作っちまったし。 まー似たような奴けっこういそうだがここ。
関数内にテンプレート作れるようになったとか聞いたけどマジか
連想配列をvalueでソートされた形で、keyとvalueのペアを取得するにはどうすればいいですか?
import std.algorithm; import std.range; sort!"a[1]<b[1]"(zip(m.keys, m.values));
>>457 thx
なるほどzipを使うんですね。
>>455 早くも9999 になったぞ
そして栄光の Issue 10000 は
bugzilla don't accept Issue of number 10000
に決まりだ
10000キタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!!!!!!!!!
これが通らないのは何故ですか? auto sum = x => reduce!("a+b")(0, x); Error: variable temp.main.sum type void is inferred from initializer (x) => reduce!("a+b")(0, x), and variables cannot be of type void Error: cannot infer function literal type from _error_
自己解決しました。 auto sum = (int[] x) => reduce!"a+b"(0, x);
それC++14では可能になるんだよな Dにも採用してホスィ・・・
テンプレート地獄でコンパイル速度が遅くなりすぎて辛い
CTFEの内部改善が怒涛の勢いで入ってるから早くはなってる
カリー化かーhaskellとかscalaっぽくていいね
D言語を使い続けるためにモチベーションをあげる言葉をくれさい
D言語のおかげで彼女できました。 彼女はウォルたんで私は四歳でした。 今では私がおじいさん。
任意bit深度画像データから任意bit画像データへの拡大縮小ルーチン書いててモチベ出なくて死ぬ
パレットカラーとかバイトオーダーとかバリエーション多すぎてワロえない…10年ぶりくらいに書いてる
>>470 既に高坂桐乃という嫁がいるので…
ピクセル取る関数と置く関数を書けばいいじゃない
そうそれがすごくめんどくさい、ピクセル単位だと遅いからライン単位で関数を書いてくんだけど フルカラー画像からパレットカラーに転送するときに色空間分割とかなんとか今日は嫁が画面から出てきてくれなくてパワーが足りなくて眠れない
コンパイルオプションでforeachとforeach_reverseを切り替えたいんですが、 下記のようにするとコンパイラに怒られました。 エラーメッセージを見る限りfeはコンパイル時に決定するので出来そうな気がするんですが こういうこと出来ないんでしょうか。 import std.stdio; void main(){ version(none){ string fe = "foreach"; }else{ string fe = "foreach_reverse"; } mixin( fe ~ q{(x; [1, 2, 3]){ writeln(x); } }); } Error: variable fe cannot be read at compile time
enum string fe = "foreach"; コンパイル時なんちゃらをやるための基本
イケタ!ありがとう。
構造体を値とする連想配列に構造体を代入したとき 呼ばれるopAssignのthisのメンバが未初期化状態になっているようです。 かといって初期化されているというのも文脈的に微妙な感じがします。 以下が考えられると思うんですが、これは不具合なのでしょうか、その場合、実際はどうなっているのが正しいのでしょうか。 1.不具合ではない。 2.dmdの不具合。opAssignが呼ばれないのが正しい。 3.dmdの不具合。S.initで初期化された後、opAssignが呼ばれるのが正しい。 4.dmdの不具合。その他。 import std.stdio; struct S{ int n; void opAssign(S rhs){ writeln(n); // 連想配列に突っ込んだときに呼ばれた場合、メンバが未初期化の値になっている stdout.flush(); assert(this == S.init); } } void main(){ S s; S t; s = t; // ok (sはS.init) S[int] a; a[0] = s; // core.exception.AssertError }
※
>>477 の追記です。
不具合でない場合、opAssignが呼ばれたのが未初期化状態のthisに対して行われたものかどうか判断する方法はあるのでしょうか。
連投すみません。
ちなみに
>>477 の影響でこれが落ちます。
import std.stdio;
void main(){
File f;
File[string] a;
a[""] = f;
}
object.Error: Access Violation
連想配列への代入の直前に不定値が入ってしまうという件だな 右辺の評価で例外が発生した時に困るという話を聞いたような
>>477-479 現状の挙動がバグなのは確定。不定値が見えるのは明らかにおかしい。
ただ、どういう挙動が正しいかははっきり決まってなかったと思う。
>>479 はデストラクタの中で落ちてる
ありえないw
>>481 ということは既知の問題でしばらくは修正来なそうですね
連想配列に構造体を格納するときはポインタにしておきます・・・
2.061で構造体のポインタの配列になんかするとポインタがぶっ壊れる問題は 修正されたらしいからポインタなら安心だね
std.stdio.Fileのコンストラクタに日本語のパスを渡すと実行時にエラーが出てしまいます(stdio.d(315): Cannot open file....)。 環境はwindowsです。文字コードの問題だと思うのですが、どうすればいいのでしょうか?
fromMBSzかなんかでstringに変換するんじゃなかったかな。 std.windows.charsetだっけ、うろ覚えですまぬ。
>>486 レスthx
toMBSzでSHIFT-JIS?に変換して、std.conv.toでstringにしてやってみましたが、
今度はutf.d(290): invalid UTF-8 sequenceというエラーが出ました。
Dの標準ライブラリで日本語パスのファイルを扱うのが無理なのか・・・
>>487 元々のパスがSJISなんじゃないか?
UTF-8を渡せ
>>488 path = fromMBSz(path.ptr)
かな
たしかに普通にUTF-8でやっててFileとかでエラーになるの経験無い
>>489 $ cat a.d
import std.stdio;
import std.windows.charset;
void main(){
File f = File(r"あ.txt".ptr.fromMBSz());
}
std.exception.ErrnoException@std\stdio.d(315): Cannot open file `邵コ繝サtxt' in mode `rb' (Invalid argument)
>>490 ソースコードは何の文字コードで保存してる?
fromMBSz じゃなくて toMBSzのはず それにしても File のコンストラクタが string (UTF8) を受け取って Windowsにそのまま渡すってのはよく考えたら Phobosの バグじゃないか
>>491 UTF-8
File f = File(r"あ.txt");でも同じエラーだからむしゃくしゃしてやった
Dさんもiconv使ってたよね
なんかrdmdとdmdでその辺の挙動が違っていらいらしたような記憶がある
つかソース付いてるんだからソース読めばいいじゃない Fileのコンストラクタで受け取ったファイルパスはWindows環境ならtoUTF16zして_wfopenに渡してる だからファイルパスはUTF-8で渡すのが正しい ただこれ最近直った箇所なんでdmdのバージョン確認してみ2.062なら直ってる
2.061 で変更入ってたのか こんな重要な変更をアナウンス無しで入れるんじゃねーよ…
std.file の方は正しく実装されてるみたいだね
FileってScopedが作られてから、試しに作ってみようぜ的な感じで作られた感が否めない
D用のライブラリがC用のライブラリ使ってるってのも変な話だ 普通ネイティブAPI使うだろうに(std.fileのように)
まあ日本語パス使うなってことだ 海外製アプリの常識だべ それよりxyzzyのd-modeはどこいったんだ? emacsのd-mode.lしかみつからん
ユーザーにまでそれを強いることは出来ないから却下
504 :
デフォルトの名無しさん :2013/05/03(金) 11:13:23.20
GWなんだしDでなんかつくろうず
>>502 xyzzyのd-mode、ライセンスがわからないからどこにも置けないんだと思う
再配布オッケーかわからんので、持っていても上げられない
かなりの部分はcc, c-modeを参考にしているみたいだたから、それらを改造した方が早いかも
今日書店行ったらD言語のやたら厚い入門書が売れていてびっくりした。 あれは買うべきなのか。
入門書ってどれ?
TDPL日本語訳のことじゃないの?
お布施として買ったよ。 まだ読み終わっていないけど 「プログラミング言語C++」の路線でより軽快。 どうしてこういう仕様になったのかという背景思想がたくさん書いてあるから読んでいて楽しい。
入門書ではないはずだが やはりD言語パーフェクトガ
>>510 の首に吹き矢が…
一体誰がこんなことを
はぁ、正規表現えろい... captureしたRegexMatchが階層構造になってないとことかえろすぎて精気吸い取られる...
むしろ階層構造になってる言語(ライブラリ)ってあったっけ?
(y, x) = (x, y);でswap出来るとどっかで見た気がするけど全然そんなことなかった
Note: Cannot swap values by tuple assignment. oh
Pythonみたいなってことだな
ああ、pythonで見たのか 確かに >>> (x, y) = (1, 2) >>> (x, y) = (y, x) >>> print x, y 2 1
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。
テンプレートの反変、共変マダー?
int n = 2; writeln(2 ^^ 0.5); // 1.41421 writeln(n ^^ 0.5); // Error: undefined identifier 'std' えっ。
(^ ^;)
再現しないと思ったらシンボルインポートか import std.stdio: writeln; モジュールまたいで衝突するから嫌いだ
指定インポートってなんであんなに仕様違うの?
>>521 実行時の累乗演算はstd.math.powに変換されるので、std.mathをimportしないと
コンパイルに失敗する
なにそのミラクル仕様
勝手に変換するなら勝手にimportしてくれwww
仕様みたいだな だがドキュメントに明記されていない
それアリなら複素数も消えなくてよかったのでは・・
定数時間で中間要素に挿入/削除がしたくてatd.container.DListを使おうと思ったんですけど、 removeに渡すRangeの取り方がない気がします。 何か方法はあるのでしょうか? DList!(int) list, tmp; tmp.insertFront(1); auto range = tmp[]; list ~= range; // A list.remove(range); // AでノードがディープコピーされてるためNG
Visual D 0.3.36キテター
>>530 初めて見たけどすごく用途が限られてるような
真ん中に差し込んでいくツリーイメージで合ってる?
ノードを指定して両端からの追加・削除しかできない
import std.container, std.array, std.stdio;
void main()
{
auto a = DList!(int)( [3] );
auto b = a;
b.insertFront(2);
b.insertBack(4); // b : [ b1 [ a ] b2 ]
auto c = b;
c.insertFront(1);
c.insertBack(5); // c : [ c1 [ b1 [ a ] b2 ] c2 ]
writeln(c.array);
b.remove(b[]);
writeln(c.array); // c : [ c1 c2 ]
}
補足すると 例えば中間要素の挿入・削除をしたいとすると 中間ノード b を基準にその両端に追加・削除することになる 基準になるノードを決められなければ思い通りの操作ができないはず
534 :
530 :2013/05/12(日) 12:19:02.43
>>532-533 なるほど・・・こんな方法があったんですね。
しかし、このリスト使いにくいなぁ。
auto list = DList!(int)([1, 2, 3, 4, 5]);
auto r = find(list[], 4);
list.remove(r); // [4]ではなく[4, 5]が削除されてしまう
特定の要素を検索して削除することもできない。
ところで DConf で D3 の話は出たんだろうな? 当然出たよな? な? な?
VisualD久しぶりだな
537 :
530 :2013/05/12(日) 17:41:45.73
あーだめだ。insertFrontがちゃんとチェーンの付け替えをするのに対し、removeFrontはビューしか変わらないせいで、 > 中間ノード b を基準にその両端に追加・削除することになる これができないですね。 auto a = DList!(int)( [3] ); auto b = a; b.insertFront(2); // a = [2, 3] b = [2, 3] b.removeFront(); // a = [2, 3] b = [3] 未完成品か・・・
もしかしてDって割りと変態言語だったりする・・・?
C++ほどではない
C++にはちょっと負けるかな
.d ファイルを開くときの関連付けってどうしてる? エディタで開くか、RDMDで擬似スクリプト実行するか Winユーザはおおむね前者だと思うけど
ふつーにエディタ
rdmd使いたい場面って限られるからなぁ
improt追尾してくれて便利だよ!
むしろここんとこrdmd経由でしか使ってない 関連付けは普通にエディタだけど。
ローカルインポートの時は関数のメソッド風呼び出しできないんだね・・
と思ったらリロードしたら出来るようになるって!わーい 失礼しました
>>454 Issue 2630 が入ってないということはURLの期間の区切りがおかしいのか?
・unittest の中身を関数の使用例として ddoc ドキュメントに出力する機能
・dmd -unittest -cov=100 -main で単体テストのソースカバレッジ率強制
このへんライブラリ製作者向けの機能
>>543-546 ありがと
RDMD関連付けは特に気にしなくてもいいのかな…今のところは
JavaScriptっぽい
555 :
デフォルトの名無しさん :2013/05/17(金) 23:09:00.01
いつになったら 3 < x && x < 5 を 3 < x < 5 ってかけるようになんだよ IA64で命令数増えちゃうじゃんか
__ltlt(3,x,5) みたいな組み込み関数用意するか
3 < x < 5 がありなら 3 < x < y < 5 もありだな。 「多重比較式」とでも呼ぶべきか
__ltltlt(3,x,y,5) みたいな組み込み関数用意するか
[3,x,y,5].isSorted とかなんとか既存の仕組みで書けるはず 速いかどうかは知らん…いや、遅いw
x = y = 2 かける x + y + 2 かける x ^ y ^ 2 かける x < y < 2 かけない (´・ω・`)
逆に考えるんだ 無いなら俺がそういう言語を作ってブレイクさせてやるぜ、と
そういうのがD言語だと思ったが・・・
ちょっと前に東大のどっかの研究室が作ってたコンパイル時パーサ生成言語がおもしろかった 行列クラスAがあったとすると "t"expを逆行列を求める演算子と定義して B = tA ってつかえたり、 "|"exp"|"を行列式を求める演算子と定義して x = |A| ってつかえたり それなら exp"<"exp"<"exp と定義してやれば上のもできるな多分
>>560 x = yの結果はxとyの値になって
x + yの結果はx+yになって
x ^ yの結果はx^yになるけど
x < yの結果はtrueかfalseやないんね?
>>561 ちなみにPythonはできるのぜ
条件式については比較演算子が真偽値を返す…ってのが一般的だけど 「失敗」で条件式を扱う言語もあるよ その場合、例えばこんな仕様が考えられる x < y < z ならまず x < y が成立しなければ「失敗」成立すれば「y」 y < z が成立しなければ「失敗」成立すれば「z」 「失敗」でないから条件式は成立したとみなされる…みたいなね
566 :
デフォルトの名無しさん :2013/05/18(土) 23:16:15.40
>>565 それならx < yが成功してy == 0ならx < yはゼロになるんじゃないか?
>>566 そうだよ
そういう言語の場合、条件式を必要とする文が見るのは
ゼロか否かでなく、失敗したかどうかになるからそれで問題ないのよ
まあDがそうなるとは思えないから、どうでもいいが
「多重比較式」を英語で言うと compound comparison expression でいいか?
>>565 bool r = 2 < (0 < 5) //単純に大きい方を保持してると成立しない
bool r = 2 > (0 < 5) //単純に小さい方を保持してても成立しない
同階層の比較演算子のみ同一グループの多項演算子として振る舞うとか?
571 :
デフォルトの名無しさん :2013/05/19(日) 10:48:08.16
>>564 漏れもそれで Python に乗り換えた
GUI もサクサク作れるし
実行速度も速いし
C/C++ に慣れてるひとには D よりも Python の方を薦める
Pythonが実行速度速いとか何の冗談だ 画像処理とかで同じコード書いても体感20倍は速度違う PyPyとかCythonとかなら速いのかもしれんがそっちはGUI作るのが不可能(´・ω・`)
C/C++やDとはちょっと用途が違うよね
Pythonでもガチの数値計算の場合は外のプリコンパイルライブラリにぶん投げが普通だしね
時代はnode.jsだぜ
Cの様に高速で、Pythonのように洗礼された言語、そんな言語ないかなぁ・・・・・・ あれ?
Cythonの事か
> Dの様に素敵で、Pythonのように洗礼された言語、そんな言語ないかなぁ・・・・・・ “破壊力の変わらない、ただひとつの言語” Dython
宗教は勘弁
580 :
デフォルトの名無しさん :2013/05/19(日) 17:38:51.41
Dの弱点をすべて克服した拡張言語 ED
肝心なときに起動しないという
D言語の弱点を克服って事は バージョンが上がっても高い互換性を維持しつつ 豊富なライブラリと強力な開発環境があって……って言語あんま関係ねぇな
それなんてC#
「Phobosってよく見たらひどい名前だな」 「いや、でも Deimosよりマシ」 しばらく経って Deimos登場 ってなことがあったのを思い出した
できない。多分 ちなみに dmd2\src\druntime\src\rt\aaA.d に実装がある 要素がいくつになったらテーブル拡張されるかのテーブルなら見られる
>>586 レスthx
適当なタイミングでrehashするしかないか・・・
そういう時こそdcollectionsの出番じゃないだろうか、できるかしらんけど
>>590 std.rangeにあるinterface使えばいいんじゃないかな?
効率落ちそうだけど
593 :
デフォルトの名無しさん :2013/05/22(水) 08:47:25.22
1次元配列の方が高速だお
純粋二次元配列と書いてある方は、純粋な二次次元配列ではなく、ジャグ配列なので参照を経由するから遅いのは当たり前
598 :
デフォルトの名無しさん :2013/05/23(木) 00:38:24.90
>>592 メモリアクセスが糞効率悪いコードだな
それくらいSIMDつかえよ
>>599 emmsが入ってないからその後ろのStopWatchの浮動小数点演算が狂うみたい
しかしさすがにSIMDは速いな
AVXなんかで行列演算系の命令も結構増えてるから最適化すればもっと速くなりそう
core.simd による実装を所望いたす
asm使って書いた方が手っ取り早いと思うのだがなんかいいことあるのかなこれ どの道asm命令知ってないと書けないし
asmだとレジスタの最適化とかコンパイラが手を出せないでしょ
605 :
デフォルトの名無しさん :2013/05/25(土) 01:03:38.95
>>603 vcやgccのintrinsic命令みたいなことをやりたいんだろう
asm文をまたいだレジスタ割り当てとかできないようだけれども
インラインアセンブラで無名レジスタとか使えるようにすればいいのにねー
R64 reg1;
asm{
mov reg1, RAX; // reg1は実行スコープ内で退避不要なレジスタに変換される
}
みたいな
Dの得意な配列演算をSIMDを使ってブーストしよう ってただそれだけだと思う
こういうの見るとGC大丈夫なんか?と反射的に思うけどそういえばXNAだとC#で開発とか言ってるし 実際問題どういう感じなんだろ?
せめて書いてあることを読む努力くらいしよう
アメリカ語なんてよめねーよks
脊髄反射もアレなので頑張って読んでもらった、Google翻訳に GC避けるのめどい GC殺すよ GC使おうとしたら警告出るスイッチをつけたい @nogcとか つまり大丈夫じゃないってことか
処理が止まらないGC実装してくれ
メモリをロックする以上は難しい気がするけど。 トランザクショナルメモリに期待か?
げーむにはつかえなさそうだな
64コア当たり前って時代にさえなれば・・・・・・
並列になろうが同期が必要なら止まるだろう
何スレッドあろうがメモリがロックされたら止まるしかない。
ダブルバッファリングできるんだったら処理自体は低コストになりそうだけど、メモリ量的に厳しいな。
619 :
デフォルトの名無しさん :2013/05/26(日) 01:53:02.03
早くDはTreadmilGCを実装すべき
システムプログラミング言語を名乗るからには @nogc は必須 GCの改善はI/F作られてるんだしやりたきゃやってもいいのよ
newとかのランタイムのメモリ操作使わなきゃGCは走らないんだろ?
配列操作とかクロージャとかもダメだったはず。 まあnewだけでも(オブジェクトまとめて作ってプールしときゃいいんだけど) 結構避けて書くのめんどいしなー。
OS書いたときは scope new しか使わなかったなぁ
2.063
ktkr!
betaに入ってなかったOPTLINKの新しいやつが入ってる!
628 :
デフォルトの名無しさん :2013/05/29(水) 22:14:20.05
新optlinkは何が変わったの?
> 402 :デフォルトの名無しさん:2013/04/14(日) 23:19:45.18
>
>>398 のせいかな
> たまに16bitAppがどうの言ってエラーで起動できないことがある
これその後見かけなくなった。何か他の問題だったんだろう
2.063で試したら連想配列のキーが見つからないみたいなのもなくなった でも Error 168: >64K Global Types とか出る…これは仕方ないように見えるなぁ
optlinkがなんかエラー出た記憶が無いからみんなが何の話してるのか全くわからない・・・
近所の本屋を5件くらい回ったけどいまだに日本語TDPLが見つからない 売り切れすぎだろ…凄い人気だぜ
ああ、凄い人気だ…… 世はまさにD言語時代
Sugeeeeeee
最強言語になれそうなの?これ
GC切れるようにならないとムリ
andreiがGCフリーやってるって言ってたし 密かにGCフリー標準ライブラリも整備されつつあるからいける 多分いけると思う いけるんじゃないかな
そして年月がたち、GCフリーの new phobos が生まれた 人々は歓喜した だが人々はやがて、そのライブラリがひどく使いにくいことに気づいた そして年月がたち、Tango というライブラリが生まれ、人々は満足したという
win7のdmdでコンパイルしたexeファイルを仮想PCのXPに持ってって実行すると、 有効なWin32アプリケーションじゃないとか言われるんだけど、なにこれ? D言語ってXPで実行できないの?
manifest
dmd.2.063
特に何もしなくても動くはず そもそも win7でも動かなかったりして
リンカでサブシステムをNT5.0にするとかそんなんだ
GUIアプリなら↓をつけてくれってのはあるけど、つけないと動かないってほどのものでもない -L/exet:nt/su:windows:4.0
いや、デフォでもっと上のバージョンがついちゃうようになったんだよ、たしか。 なのでXPだと動かないって弾かれる。 うろ覚えだ
mainなしだと警告だけで実行できないファイルが出来る という罠の気がしてならない
650 :
デフォルトの名無しさん :2013/06/03(月) 04:32:07.06
>>641 xpの上でdmdでコンパイルしたらどうなんの
-c と -of つけてビルドしたらまた実行できないEXEが出来た このへんアマアマだな
-cつけてんだからリンクしてないんだよね それ単にexeって拡張子をわざわざ指定してobj吐かせてるんじゃないの?
わろた objファイルすら理解してない人がなんでD言語にたどり着いたんだろ?
そうか obj名を変えるのは別のオプションだと思ってたんだよ まあいいや 拡張子を変えられる機能はいらぬ いらぬのだ
>>653 俺を含む5,6年前の都立大生のはじめて触れるプログラミング言語はDだった
俺は今でもDしか書けない
candydocみたいにドキュメント加工してくれるので これより新しいプロジェクトってどこかにある?
テンプレート構造体 Foo の Foo!S から Foo!T への暗黙変換を定義したい場合はメンバに何を実装したらいいですか? void func(Foo!T val) みたいな関数に Foo!S を明示的に変換しないで渡したいです。
>>659 C++の暗黙の型変換みたいな事はたぶんできない。
funcをいじるか、明示的に変換してからfuncに渡すかしかないと思う。
662 :
デフォルトの名無しさん :2013/06/07(金) 17:00:02.30
win32自体ビルドして一緒にリンクしないとダメなはず 一緒にmakefile入ってるんで、mingw32-makeとか(たぶんDigitalMarsMakeじゃムリ)で lib作ってtest_mainコンパイルする時に一緒に渡してあげればいい。 あと関係ないけどdmdは新しくしたほうがいい。
budとかのビルドツール使うと自動でやってくれるよ
ありがとうございました。
>>662 win32apiのなかにビルド用のbatがあるはず
それ叩けばwin32.libができるからリンクすればOK
要するに「構造体の実態がないんですけど^^;」ってこと
0クリアとかsizeofみたいな単純な初期化がついてるせいかな ころして自分で書いてしまうのがてっとり早かったりするけど
668 :
デフォルトの名無しさん :2013/06/07(金) 22:06:01.38
質問です。 import std.c.windows.windows; だけでも Win32API は使えるみたいですが、 import win32.core; import std.c.windows.windows; とかすると、 二重定義?みたいなエラーになります。 std.c.windows.windows は、いらない子なんでしょうか? なんで標準に余計なものがついてるんでしょう?
標準だとそれしかついてないんじゃね? むしろwin32.coreとか使ったことない
マルチしてるゴミがご迷惑をおかけしておりますが 以後スルーしてやってください
import std.c.windows.windows; は標準ライブラリとかで必要な最低限のやつが適当に書いてあるだけ 中途半端な上に干渉するから邪魔
そのくせ標準ライブラリの中ではそれ使わずに直接宣言しちゃってるという始末
>>668 ソース見るとわかるけど、内部でcore.windowsをpublic importしてる
ランタイムがphobosに依存しないようにするためにそうなってて、どっち使ってもほとんど同じ
どのみちunicode関数が全然ないから自分で宣言してAPI叩いた方がいい
>>673 >unicode関数が全然ない
Version条件指定で、Unicode指定しないからでしょ
>>974 いつのまにphobosでW系関数がつかえるようになったのだ(・Д・;)
676 :
デフォルトの名無しさん :2013/06/08(土) 16:12:41.69
>>663 dmd新しくしたら
test_main.d(145): Error: cannot implicitly convert expression (& WndProc) of typ
e extern (Windows) int function(void* wnd, uint msg, uint wp, int lp) to extern
(Windows) int function(void*, uint, uint, int) nothrow
ってエラーが出るようになりました
なので関数を
extern(Windows) LRESULT WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) nothrow
{
略
}
って書き直したら今度は
test_main.d(106): Error: function test_main.WndProc 'WndProc' is nothrow yet may throw
って言われます
もう嫌です><
try〜catchで囲むとかして、例外が関数の外に飛ばないようにしないと、nothrow付けさせてくれないでしょ
古いコンパイラで事足りてるならそれでいいじゃない まあ WndProcがnothrowに変わってウザいのは同意だけど
ネイティブなC関数(Cライブラリとかの)を宣言するときってnothrowにしとかないと危ない?
D以外へ渡すコールバック関数はnothrowしないと 相手側の都合を考慮しない乱暴な例外の巻き戻しが起こるんじゃないかな
>>674 いつのまにphobosでW系関数がつかえるようになったのだ(・Д・;)
とりあえず win32.lib とやらは使わずに
phobos ? のみ import std.c.windows.windows; だけの方で
W系の関数を自分で extern(Windows) でダラダラ書いていけば
Win32API を使えることは確認できました
しかし激しく面倒なので >671 さんのおっしゃるように phobos ? は無視して
import win32.core; で行くことにしたのですが
今度はコンパイルすら通らなくなってしまいました><
>676 と同じなのですが
>Bindings for the Windows API はこちらのもの
>
http://www.dsource.org/projects/bindings/wiki/WindowsApi >
http://www.dsource.org/projects/bindings/browser/trunk >から
↑
これ最新版ですよね?
dmd 2.063
にしてからは
test_main.d(107): Error: BeginPaint is not nothrow
test_main.d(108): Error: GetClientRect is not nothrow
test_main.d(109): Error: EndPaint is not nothrow
test_main.d(113): Error: PostQuitMessage is not nothrow
test_main.d(117): Error: DefWindowProcW is not nothrow
test_main.d(90): Error: function test_main.WndProc 'WndProc' is nothrow yet may throw
がいっぱい出てきて
余計に面倒になったのですが
Bindings for the Windows API の nothrow になってるやつはまだないんですか?
とりあえずWndProc全体をtry...catchで囲んで例外握りつぶせば?
>>683 逆にwndprocからnothrow外せばいいんじゃね
どのみち例外出たらアプリごと死ぬんだし
extern(Windows) LRESULT WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) nothrow { 略 } とは別に extern(Windows) LRESULT WndProcNoThrow(HWND wnd, UINT msg, WPARAM wp, LPARAM lp); を宣言だけして wc.lpfnWndProc = cast(typeof(WndProcNoThrow)*)&WndProc; したらうまくいきました ほんとうにありがとうございました
ああ 間違いです extern(Windows) LRESULT WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) { 略 } とは別に extern(Windows) LRESULT WndProcNoThrow(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) nothrow; を宣言だけして wc.lpfnWndProc = cast(typeof(WndProcNoThrow)*)&WndProc; したらうまくいきました ほんとうにありがとうございました
馬鹿には無理
dmd2 で質問です lib.exe で 既存の .lib ファイルに .obj を追加すると .bak ファイルが作られてしまうのですが これを抑制するのはどのオプションでしょうか?
OSはなに
C言語超えれるの?
693 :
デフォルトの名無しさん :2013/06/10(月) 04:21:31.96
Dが流行らない理由の一部を垣間見た気がする
質問いいですか?
解決しました ありがとうございました
696 :
デフォルトの名無しさん :2013/06/10(月) 19:02:24.51
Dは弱参照の実装を諦めちゃったのかな・・・ Dを仕事で使いたいけど、踏み出せない IDEがしょぼそうだし・・・
弱参照って、参照カウンタ型GCに関連したものだと思うけど 今のDは参照カウンタ型じゃないよね。要るの?
弱参照って参照もしたいけどGCもされるようにしたいってのだろ どこで勘違いしたんだ
ああ、なるほど 参照カウンタ型だと循環参照を解決できないから要るのだと思ってた
701 :
デフォルトの名無しさん :2013/06/10(月) 23:51:13.80
弱参照がないとキャッシュを実装できない JavaとC#にできて、Dにできないという状況を受け入れるのだろうか?
DのGCが探索しない領域(malloc)に参照を登録しといて、デストラクタで登録削除 という方法は無理なのかな
Dのデストラクタさんは基本的に仕事しない人
だよねぇ GCに回収されるように出来ても、後始末出来ないのじゃ駄目だな
デストラクタが仕事しないのに何か理由ってあるの
GCの気まぐれで起動される=役に立つことがまれ
C#におけるDispose()にあたるモノはないのか?
無理やりメモリ使い切ったらGC始まるんじゃね
mixin template と template で宣言するのは何が違うの?
同じだと思う理由がわからない
mixinしかできなくなるだけで他は同じでしょ?
ふと気になって試してみたけど文字列mixinもできるのな
宣言そのもののために使われるのがmixinで 通常テンプレートは宣言の一部とか関数呼び出しの一部として使われるもの
714 :
デフォルトの名無しさん :2013/06/11(火) 15:33:59.48
http://www.kmonos.net/alang/d/phobos/std_datetime.html このサイトのサンプルで、
import std.datetime;
void main(string[] args){
auto currentTime = Clock.currTime();
auto timeString = currentTime.toISOExtendedString();
auto restoredTime = SysTime.fromISOExtendedString(timeString);
}
をコンパイルしようとすると、
Error: no property 'toISOExtendedString' for type 'SysTime'
Error: no property 'fromISOExtendedString' for type 'SysTime'
Error: SysTime is not an expression
って怒られます。
>>714 ttp://www.kmonos.net/alang/d/changelog.html The deprecated toISOExtendedString and fromISOExtendedString functions
in std.datetime have been removed. Please use toISOExtString and fromISOExtString instead.
The toISOExtendedString and fromISOExtendedString functions
on SysTime, Date, TimeOfDay, and DateTime in std.datetime have been deprecated.
Please use toISOExtString and fromISOExtString instead.
>>714 日本語サイトの更新はだいぶ滞っているので古いコンパイラ(2.052くらい)を使うか
該当する英語ページで確認するのが鉄則
MSDNの日本語版よりまし。
ていうか
>>714 のサイトの内容英語じゃね
どうせ英語のまま掲載するなら
本家サイトにリンクしとけばいいのに
なに無駄なことしてんの
720 :
デフォルトの名無しさん :2013/06/11(火) 16:51:40.74
馬鹿には無理
Dで書くとC/C++で書いてたときに比べてコードが綺麗になる(気がする)ね
てか、最近のC++はどう書いても横長になる。 横幅意識するとautoとtypedefが並びまくる。 プロはどう書いてるんだろう?とか思ってboostのソース開くと 気が遠くなっていつの間にか翌朝になってるorz
boostは割と動けば良かろうな変態的なコードが多いからな
ヘッダの中に無理に押しこむコードが参考になるのか
C++のテンプレートはなあ…ヘッダに押し込まないと使い物にならんのは問題よね
楽をしようと思ってDに手を出してみたけど 率直な感想を言うと期待してたほど楽じゃなかった 確かにC/C++より先進的だしコードも綺麗だし STLやBoost使うよりストレス溜まらないけど まだまだ獣道どころか茨の道って感じがする もっと高速道路みたいなのをイメージしてた まあ環境揃ってくればそうなるんだろう もうちょっと付き合ってみるよ
Dに来るのが10年早かった。
>>715 ありがとうございました。
原因が判らず、import date; して見たり、 import core.time; して見たり、
色々無駄に時間を使ってしまいました。
>>717 そのようですね。
英語苦手ですけど、出来るだけ英語の方見るようにします。
import date; じゃなくて、 import std.date; です。
>>726 ここは、獣道や茨の道を歩むのが好きなひとの集まる板だと思います。
Dの一番の弱点は検索性だと思う。 もう名前からしてググりにくいし、ググると互換のない新旧が混ぜこぜに出てくるし しかも新しい情報ほど数が少ないし、日本語の情報に至っては・・・・・・ どこか一段落した時点でググりやすい名前に変えてほしいよ。
C#「Dとかだっせーよな」 Go「検索しづらいもんな」 F#「実際情報も少ないし」
"D lang"
bindings の sqlite3-d が dmd 2.063 だとコンパイルエラーになるので 野良 sqlite3.d と sqlite3_bindings.d を拾って来てやっと読み書きでけた もしかして bindings って放置プレイ中?
phobos の etc.c.sqlite3 ではイカんのか? どっちも使ったことないけど
え、そんなのあったんだ
公式のいいところはdmdのバージョンが上がっても コンパイルが(基本的には)通ること……。
と思うじゃん?
まあ通らんのがあってもサードパーティと違って 完全放置はされないことくらいは期待できる。
-property導入当初にエラーだったのも次のリリースでは直ってた気がする
そして次のリリースではdeprecated になり その次で新モジュールに置き換わっている
>>743 サードパーティなら完全放置と割り切って
さっさと見切って自分で修正すればいいけど
公式だと対応してくれる気がするのが却って良くない
はっきり言ってDの場合はそれが仇になる
foreachの自動ベクトル化まだー? ループ内のコードをSSE使うインラインアセンブラに書き換えるプリプロセッサ作ってたけどフロントエンドの最実装になって不毛だ
748 :
デフォルトの名無しさん :2013/06/15(土) 00:33:51.79
>>726 が言ってる
C++に比べ、Dが楽じゃない所ってなんだろう?
C++のあのクソさよりもDがクソな点・・・なんだろう?
>期待してたほど楽じゃなかった
他の言語へのヘイトはどっか他のとこで吐こうぜ
話の流れからして今Dへのヘイトを探してるところじゃね
GCがクソって話と人口が過疎って話は昔から
GCの動くタイミング制御できれば何も文句はないんだけどなあ
>>748-749 ライブラリの不備とかバグとか
日本語ドキュメントがいい加減とか
GUIフレームワークのインストールが面倒とか
そもそもまともに使えるGUIフレームワークが 日本語ドキュメントは一人でやるのがそもそも限界だったんやろな… すげぇお世話になったけど最近見てないな
すみません disりたいお年頃なんです
本家の英語サイトでも間違ってるもんなぁ
http://dlang.org/phobos/std_net_curl.html string content = get("dlang.org");
↓このままだと
test_main.d(LINEno): Error: cannot implicitly convert expression (get(cast(const(char)[])"dlang.org", AutoProtocol())) of type char[] to string
src\phobos\std\range.d(611): Error: static assert "Cannot put a const(dchar) into a Appender!(char[])"
src\phobos\std\format.d(2160): instantiated from here: put!(Appender!(char[]), const(dchar))
src\phobos\std\format.d(2207): instantiated from here: formatChar!(Appender!(char[]))
src\phobos\std\typecons.d(581): instantiated from here: formatElement!(Appender!(string), char[], char)
src\phobos\std\net\curl.d(1873): ... (4 instantiations, -v to show) ...
src\phobos\std\net\curl.d(374): instantiated from here: get!(FTP, char)
test_main.d(LINEno): instantiated from here: get!(AutoProtocol, char)
我慢出来るひとはマゾだと思う
一応 string content = cast(string)get("dlang.org"); で解決してます
assumeUniqueかidupしたげてください
馬鹿には無理
string content = cast(immutable)get("dlang.org"); でいけました ほんとうにありがとうございました
char[] content = get("dlang.org"); でよくね?
なるほど、流行らないわけだ
無理して使うことはないよ。
まったくだw
まともに使えるGUIフレームワークが無いのは判りましたが どれが一番マシですか? ここで質問して答えがもらえるのを教えてください
768 :
デフォルトの名無しさん :2013/06/15(土) 16:14:17.52
D言語普及の最大の阻害要因は GUIフレームワークの不出来のせいだと思う
>>767 OS標準と見た目が違うのと超重量DLLとか同梱しまくるのに我慢できる→GtkD
JavaっぽいAPIと実行ファイルが重量級になるのに我慢できる→DWT
肝心の Windows限定と若干の機能不足に我慢できる→DFL を忘れてた
772 :
デフォルトの名無しさん :2013/06/15(土) 16:57:34.64
wxDの評判がよさそうなのでwxDから試してみます
コンパイルできることで一時代を築いたQtDはいまどうなってるんだろう
Dの醍醐味を噛み締められるオリジナルのGUIはまだかっ
775 :
デフォルトの名無しさん :2013/06/15(土) 18:02:39.29
wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead wx\Log.d(57): Error: module stdarg is in file 'std\stdarg.d' which cannot be read やっぱりだめか dmd v2.063 にしたのが間違いだったか
Version D 2.057 Dec 13, 2011 Deprecate typedef
今時 GitHub に移ってないプロジェクトは 氏んだとみなすべきかもしれない
778 :
デフォルトの名無しさん :2013/06/15(土) 18:21:28.19
おまいらこんな中途半端の出来損ないに 良く何年も付き合って来たな ほんとにマゾかも試練
779 :
デフォルトの名無しさん :2013/06/15(土) 18:23:32.99
なんでわざわざこんな僻地荒らしにくるの……
無理して使うことはないよ。
まったくだw
>>779 やったじゃん
頑張って対応してpullを送れば無駄にならない
wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead この二件は typedef を alias に置き換えるだけで解決 wx\Log.d(57): Error: module stdarg is in file 'std\stdarg.d' which cannot be read なぜか上を解決したらこの行は出なくなった ところが今度は wx\DbGrid.d(148): Error: undefined identifier DataSet, did you mean function dataSet? wx\DbGrid.d(201): Error: undefined identifier DataSet, did you mean function dataSet? wx\DbGrid.d(202): Error: undefined identifier DataSet, did you mean function dataSet? wx\DbGrid.d(382): Error: undefined identifier DataRow なんでだろ〜
wx\Log.d(57): Error: module stdarg is in file 'std\stdarg.d' which cannot be read
が出なくなった理由は
>>775 のときの wxd (wxd-016) の source を使うのをやめて捨てて
>>779 (wxd-016-afb) のを fork し直したのが原因だった
何かが違うらしい orz
馬鹿には無理
どうやらそのようです
頑張って対応したお エラー出て解決方法不明のコントロールはlibに追加しないで wxd.lib再構築したらうまくいった 自分で使う分にはこれで良いのでpullは送らずに自己満足しておきます
ウィンドウ閉じるとコンソールに core.exception.InvalidMemoryOperationError って出て終了するな・・・
日記ならblogにでも書いてろよ
こういうのは参考になるんだけどな まあpull request送るのが最適だと思うけど
まず解決しないとpull requestもなにもないような
なんでDのexeってこんなでかくなるんだろ もしかしてwxDってstaticlinkのみ?
wxDは静的リンクでしか使ったことないな
795 :
デフォルトの名無しさん :2013/06/16(日) 08:28:14.18
debug build というオチ?
InvalidMemoryOperationError の原因は多分、 リソースの破棄を自前でやるべきところを忘れているせい
最近D言語に否定的な奴が常駐してるよね 使わなければいいのに どっから来たんだこいつら
火星からの侵略に心を痛める木星人
>>784 >>788 DbGrid.d ていうのはメイクファイルから除外するのが正解っぽい
しかしメイクファイルに該当する定義ファイルが無駄にたくさんあって
対策されてる奴とされてない奴が混じってる これはひどい
>>797 本が出たりFacebookでカンファレンス開催されたり普及の兆しが見え始めたからね
MS・Apple・Googleが揃ってしまった分野でのマイナー製品スレは何故か荒れていく法則(例:ブラウザ)
>>786 みたいな文言の否定は同時期に他のスレでも見たことあるし一部は板に取り憑いた荒らしなんだとは思うよ
Dマスコットのフォルムの美しさに嫉妬しているのであろう
>>796 app.cppにバグがあるという情報が見つかりました
804 :
デフォルトの名無しさん :2013/06/16(日) 19:40:58.69
D言語で作られた役に立つアプリが出てこない理由は やっぱりGUIライブラリなのかな・・・
エンドユーザーの役に立つだけでいいなら既に整ったライブラリ使ってちょっと作るほうが楽ですし
Qtは知らんけど wxは本来C++のフレームワークなのに テンプレやインターフェースに互換性ないから わざわざCのwrapper経由して接続してるのね
DWTいいよ 全部Dで書かれてるからいいよ ちょっとバイナリが3MB超えるくらい安いもの
808 :
デフォルトの名無しさん :2013/06/16(日) 21:54:05.58
DWT って latest release で dmd 1 にしか対応してないのですか
D2とD1の連携ってどうやるんですかね・・
810 :
デフォルトの名無しさん :2013/06/16(日) 22:07:27.32
残念ですが DWT は検討から外させていただきますた
どうして自分で使ってもいないものを他人に薦めるの? 人柱になれということ?
日 人木生
質問です。ある DLL から LoadLibrary するときに、 extern(Windows) UINT function(LPSTR, LPSTR, UINT) HogeFunc; という関数があるとして、テンプレートを使って、 template TProcAddr(T) { T get(HINSTANCE hmodule, string funcname){ T func = cast(T)GetProcAddress(hmodule, funcname.toMBSz()); if(!func) throw new Exception(funcname); return func; } } HogeFunc = TProcAddr!(typeof(HogeFunc)).get(hmodule, "HogeFunc"); と出来ることはわかったのですが、かなり冗長な気がするので、 T getProcAddr(T)(HINSTANCE hmodule, string funcname){ T func = cast(T)GetProcAddress(hmodule, funcname.toMBSz()); if(!func) throw new Exception(funcname); return func; } HogeFunc = getProcAddr(hmodule, "HogeFunc"); と書こうとしたら、コンパイルエラーになりました。 bool SetProcAddress(T)(T *func, HINSTANCE hmodule, string funcname){ *func = cast(T)GetProcAddress(hmodule, funcname.toMBSz()); if(!*func) throw new Exception(funcname); return true; } SetProcAddress(&HogeFunc, hmodule, "HogeFunc"); だと、コンパイル出来ます。 getProcAddrの方法は無理(型情報が確定してても戻り値の型では型推論出来ない?)なのでしょうか? あと、ついでに、 SetProcAddress(HogeFunc, hmodule); または、 HogeFunc = getProcAddr(hmodule); と書ける方法もあったら教えてください。
>>812 いつから使ってないと錯覚していた?
DWTはWindowsだと安定してるけどlinuxは何かしようとするとバグ踏んだりする
DFLは日本人がforkしたやつが十分安定して使えてたけどそれも数ヶ月前の話だから今はわからない
QtDは数年前に使ってたけどかなり不安定でいつの間にかコンパイルもできなくなってた
wxDは何年も前に安定して使えてたけど今やforkしたやつもコンパイルできない
GtkDはGTKが気に食わなくて使ってないけど一番開発頑張ってそう
基本Windowsの話です
なんでコンパイル出来ないものをコミットするんだろうねw
ライブラリ側の変更でコンパイルできなくなるんじゃなく、 コンパイラ側の変更でコンパイルできなくなる つまりコンパイラと一緒に全力疾走しないライブラリは即置いてかれるのがDの世界
ということは ライブラリ側の人は悉く疲れてるんですか
>>814 HogeFuncをref引数とかにしたら型推論効かないかなあ
>>818 最近破壊的変更が少なくてマシになったと聞いた
>>814 一応出来た気がするけど、extern(Windows)を付けたときに動きが変わって慌てた
リンケージで間違うと実行時にワケワカメになるからよく確かめてほしい
extern(Windows)
auto getAddressT(R, P... )( R function(P) fn, HINSTANCE hModule, string func)
{ return cast(typeof(fn)) GetProcAddress(hModule, func); }
auto getAddress(string name)(HINSTANCE hModule)
{ return getAddressT(mixin(name), hModule, name); }
...
auto func = getAddress!"HogeFunc"(hModule);
こんな程度なら黒魔術ではないと思えてしまう自分は普通
dmd.2.063.2
呼び出し規約が理解できてないのはアセンブラを授業で教えないのが問題なの
ありがとうございます 戻り値の型に関してはかなりルーズな言語なんですか
ああ、 auto HogeFunc = getAddress!"HogeFunc"(hModule); と HogeFunc 二回書くのがアレなので、 extern(Windows) auto setAddressT(R, P... )(ref R function(P) fn, HINSTANCE hModule, string func) { return fn = cast(typeof(fn)) GetProcAddress(hModule, func); } auto setAddress(string name)(HINSTANCE hModule) { return setAddressT(mixin(name), hModule, name); } してみたら、 setAddress!"HogeFunc"(hModule); で、うまくいったでござるよ。
extern(C) とか extern(Pascal) とかの関数に代入出来ない orz
元の T* に戻して文字列ミックスインだけ使えばいいんじゃないの
黒魔術を駆使すれば mangle名の解析から リンケージ属性を取得してミックスインできる気がしてきたww
std.traits.functionLinkage
>>827 やってみました。
auto SetProcAddress(string F)(HINSTANCE hmodule){
auto func = cast(typeof(mixin(F)))GetProcAddress(hmodule, F.toMBSz());
if(!func) throw new Exception(F);
return func;
}
SetProcAddress!"HogeFunc"(hmodule);
extern(C) とか extern(Pascal) とか気にせず、コンパイルは通るものの、実行すると、
Access Violation
になります。
たぶん、
>>820 さんのおっしゃってる、
リンケージで間違うと実行時に昆布の状態だと思います。
ああ、チョンボしてました。 auto SetProcAddress(string F)(HINSTANCE hmodule){ mixin(F) = cast(typeof(mixin(F)))GetProcAddress(hmodule, F.toMBSz()); if(!mixin(F)) throw new Exception(F); return mixin(F); } SetProcAddress!"HogeFunc"(hmodule); で、うまくいきました。 ほんとうにありがとうございました。
それは文字列mixinじゃない
文字列mixinだよ
mixin式とmixin文とテンプレートmixin 区別しようね
>>822 入れてみたけど__VERSION__が変わらない件
黒魔術って言葉使うってことは…
わなDの中の人
>>836 条件コンパイルで使うためのもの
今回はバグ修正しかないから変える必要なし
class C{ this(int n){} } auto c = new class C{ this(int n){super(n);} void f(){} }(10); // だめ 無名で継承したクラスのコンストラクタに引数を渡したい場合の書き方ってどうでしたっけ
auto c = (new class C{ this(int n){super(n);} void f(){} })(10);
curses の D 言語版ってどれですか?
あざーっっす
>>842 なにこのなに・・・
auto c = new class(10) C{
this(int n){super(n);}
void f(){}
};
おまいらjsに毒され杉
女子高生と女子大生が見る分には可愛いと思う うるさいから近づきたくないけど
$type test.d import std.stdio; void main() { foreach (i; 0..5) { writeln(i); scope array = new ubyte[500_000_000]; } } $ rdmd test.d 0 1 2 core.exception.OutOfMemoryError これGCさんはどういう仕事してんの?(win7/ubuntu)
俺の頭がおかしいのかと思ってC#さんで同じこと試してみたが5回だろうが500回だろうが確保成功 話のわかるやつだ
>>849-850 俺の頭がおかしくなったのかも知れないけど何でscopeで配列を宣言してるの?
ちなみに2.063.2@Mac(16GB)で何の問題も無く実行出来たぞ
本当にメモリが足りなくてC#は足りなくなった瞬間に古いのを捨ててるだけじゃねえよな
853 :
デフォルトの名無しさん :2013/06/22(土) 12:57:13.27
assumeUniqueしたげてください
>>851 ああごめん
scopeじゃなくても駄目だったんだけど試しにscopeにしてみたのがそのまんまだった
>>852 今は仕様なのか…ライブラリの中とかで確保されたら詰むなぁ、というかstd.zipで詰んだ
まあ処理系の問題ならまともに動かなくても許してもらえるだろう
ありがとうございます
>>854 scope(exit)delete array;
>>855 あれ、普通に効いた
自分のプログラムだとなんか効果が無かったから駄目なのかと思ってた
何か間違えてるっぽいな…
これならなんとかできそうです。ありがとう
deleteじゃなくてdestroy使えって話なかったっけ
こんなページあったんだ
windows7 / dmd2.063.2 です。 File f = File("日本語.txt"); scope(exit) f.close(); を実行すると、 std.exception.ErrnoException@std\stdio.d(325): Cannot open file `日本語.txt' in mode `rb' (Invalid argument) ってなります。 D言語は日本語をサポートしていないのでしょうか?
ソースファイルは utf-8 で保存してあります。
正しくファイル操作が出来る分std.stream.Fileのほうがマシです
fopen系使うのやめろよな・・・マジで
>>863 std.stream.File 試してみました。
>>860 のコードは最小限で、実際は、
foreach(ubyte[] buffer; chunks(f, bufsize)) md5.update(buffer);
みたいな処理が中にあるのですが、
std.stream.File の方を使うと、
Error: constructor std.stdio.chunks.this (File f, uint size) is not callable using argument types (File, const(uint))
ってなります。
たぶん前者の File f と後者の File が違うんでしょうけど、
std.stream.File で chunks(f, size) や File(filename).byChunk(size) 的なことは可能でしょうか?
条件後出しすみません。
>>860 サポートしていません
というかウォルタソは昔から(ry
>>867 auto buffer = new ubyte[bufsize];
size_t n;
while ((n = f.read(buffer)) > 0) md5.update(buffer[0 .. n]);
こんな感じでよければ・・・
日本人コミッタの方々マジがんばれ
Dの情報の賞味期限は極端に短い
やっぱり関わるの止めた方が良いかな?
D言語のサイクルの短さが気になる人ってやっぱC++03とかJava6とか使い続ける人種なのか?
873はいつもの荒らし
気になる人は10年後くらいにまた来てください。
(´・ω・`) / `ヽ. お薬増やしておきますねー __/ ┃)) __i | お大事ぬ / ヽ,,⌒)___(,,ノ\
D言語はソース公開されてるしだめなところは頑張れば自分でなんとか出来るのに どうして何もしないで文句ばっかり言うんだろう どうして他にも言語たくさんあるのになんでわざわざD言語に固執して文句いうの? twitterとかでD言語使えばかっこいいとか変なイメージが付いてるせい? D言語で書きましたって言いたいだけなんじゃないの? そういう人たちには僕らがなぜD言語が好きかは一生理解できないと思う 本当に悲しい
マイナー言語の定めだから気にしても仕方ないし 878のレスはD言語使っている自分から見ても少々気持ち悪い
成果だけ欲しい人には向いてないと思う
>>869 目処が立ちました。ありがとうございます。
関連する内容で2点疑問が出てきました。
File f = new File(filename);
scope(exit) f.close();
とするより、
BufferedFile f = new BufferedFile(filename, FileMode.In, bufsiz);
scope(exit) f.close();
とした方が良い気がしたのですが、後者の方がむしろ遅くなるということはありますか?
あと、別のコンストラクタを使って、
BufferedFile f = new BufferedFile(new File(filename), bufsiz);
scope(exit) f.close();
とも書けるようですが、この場合、new File(filename) で確保した方のオブジェクトは、
明示的に解放しなくても問題無いでしょうか?それとも、
File f = new File(filename);
scope(exit) f.close();
BufferedFile bf = new BufferedFile(f, bufsiz);
scope(exit) bf.close();
みたいな書き方にする必要があるのでしょうか?
CommonType!(int*, ubyte*)ってvoid*になるんじゃないんだね しかもCommonType!(int*, void*)だとint*になるしvoid*ってどう思われてるんだろう
884 :
デフォルトの名無しさん :2013/06/24(月) 22:23:52.60
D言語よりHaskellの方が速いっぽい D言語オワタ\(^o^)/
HaswellよりDのほうが遅いのは常識だろ?
mixinをふんだんに使ったWin32/x11/Be/NSXで動くD用Guiライブラリをわりとガチで作ろうと思う 名前は何がいいだろうか import **.window; みたいな具合になるのであまり長くないと基地
door
guide
暇だったらUTF-8対応のコマンドプロンプト作ってくだしあ
Windows 7 だけどコマンドプロンプト utf8 にして使えてるよ
893 :
デフォルトの名無しさん :2013/06/25(火) 10:56:52.75
おまん子プルンプルン♪じゃ駄目なの?
BNXW passport MPGUIW GUIMIX 貧弱ぅ〜貧弱ぅ〜。 いい名前思いつかないなー。
dyndow
binbow
言語とかライブラリの名前って○○が好きだからってのが結構多いから
なんか好きな物の名前付ければいいんじゃないかな
だからと言って
>>893 みたいなのにすると使う人が減っちゃうから欲望は抑え目にな
おっぱいとかぱんつくらいならセーフかな
898 :
デフォルトの名無しさん :2013/06/25(火) 11:25:52.42
おっぱいポヨンポヨン☆ これでおながいします
import destroyed.windows; 素敵です。
broken windows ってのもあったな
import fuck.off.windows;
だいぶん前にセガ本にあんまりこった名前にすると後世で後悔するから、 ある程度汎用なのがいいよって書いてあった。
import dw;
Mixin for GUI Tool Kit on D => MGTKD GTKが入ってるとアウトかなぁ・・・。
import tkd.*;
import tkg.window;
import MG5;
import DIY;
import GTD.*;
GMD => Gui Manager for D
import 4wd;
import DDT;
import trouble.windows;
import DOS;
import g.c.d;
こういうネタの受け皿になるべきネタスレが ム板にほとんど残っていないのは まことに残念な事であるなあ
import kkd.*;
import mxd;
>>888 2chGLとかだめかな?w
ところでなぜOSXには対応させないんだぜ
せっかくつくるなら直感的に使えつつ長ったらしい記述が要らないライブラリにしてほしい
auto w = new Window("hoge");
w.title = "fuga"; //これで窓のタイトルが変わる
w.pos = [100, 200]; //これで窓の位置が変わる
みたいな具合に使えるといいな
import SOD;
import webgl.d.ts;
なんで荒れてるんだ 誰かファビョったか
module category.scat; public import favorite.eat, favorite.drink;
guid とか guide とか検索し辛いんだよ!
go-ide
928 :
デフォルトの名無しさん :2013/06/25(火) 22:52:14.13
import DGL
wingo
walters.original.tm
duiで
dwm
uimix uix
自分も窓ライブラリ作ってみたいな
具体的にどんな感じがいいだろうか
Dらしく無駄なく書きたいし
HelloWorldか
>>919 みたいな擬似サンプルがほしい
937 :
デフォルトの名無しさん :2013/06/26(水) 23:28:32.11
D言語とC#はどっちが高速ですか?
938 :
デフォルトの名無しさん :2013/06/26(水) 23:32:01.86
D言語とC#はどっちが高速ですか?
既存のコードが動かなくなるまではD言語の方が圧倒的に高速ですね
既存のコードが動かなくなるまではD言語の方が圧倒的に短命ですね
テンプレートの特殊化にテンプレートは使ってはいかんのかな なんかリンクエラーになるんだけど struct Hoge(T) {void hoge() {}} T fuga(T:Hoge!int)() { return T(); } void main() { Hoge!int h; h.hoge(); }
>>942 たぶんバグ
git head では再現しない
ちなみに -inline をつけたら回避できるかも
>>943 あなたが神か
dmd2.063.2では-inlineで回避できた
headで直っているということなので次のリリースをのんびり待ちます
struct S { int[1] a; } void main() { shared S a; S b; b = a; } Error: cannot implicitly convert expression (a) of type shared(S) to S (´・ω・`)
>>945 すまん何がおかしいのかわからん解説しておくれ
ごく正常な動作に見える
struct S { int a; } とかだと通る。 struct S { int[1] a; } とメモリ上は同じなのに・・・ そもそもどっちも通っちゃいけないものなのか?
>>947 struct S { int a; }が通るってことはメンバが全部値渡しの場合はちゃんとsharedから除外されてるのか
で、静的配列も値渡しだからsharedが効くのはおかしいと
なるほど確かに矛盾してるな
MacでDerelict3使うみたいな紹介記事見てから、ubuntuで試してみようかなって思ったんだけど、 テンプレのDerelictの公式からDerelict3のmaster.zip落したんだけどbuidすると途中でエラーになる。 どうも、importのフォルダ名は全部小文字なのに、build中にSDL2だけファイルパス指定に大文字を 使ってるせいでfile not foundな例外が出てるっぽい。検索したら似たような内容のブログ記事もあった。 ダメもとでimport内に大文字の「SDL2」ってフォルダ作ってからbuildしてみたら、なんかbuild成功しちゃう。 でも、実際それを使ってみると動的ライブラリのロード時にエラーでまくりでコンパイルできねぇ。 ちゃんとDerelictUtil と DerelictSDL2 と 本物のSDL2の動的ライブラリリンクしてるんだけど・・・ windows以外でDerelict3使えてるひと居ますか?
Windowsでしか使ったことないんでわからんが、 なんかパッと見Macだとderelict.sdl2.sdl.dの中で実行時にロードするライブラリ名を /usr/local/lib/libSDL2.dylib ... みたいな感じでフルに指定してるっぽいので ロードしくるならそこ直してないのに原因があるかもしれない。 あと自分でライブラリリンクするんじゃなくて、DerelictSDL2Loader.loadが 実行時動的に上記で指定してるライブラリを読むのでその辺も一応。 (まあごめん、Windowsの話だけど)
>>950 おお、サンクス!
>あと自分でライブラリリンクするんじゃなくて〜
そーだよね! これはやばい恥ずかしい書き方してしまった・・・。
もうちょい粘ってみます
ソースコード(sdl.d)読めば分かるけどLinuxの場合はlibSDL2.soを実行ファイルと同じディレクトリか/usr/local/lib以下に置くだけ コンパイルはDerelictSDL2だけをインポートしてlibDerelictUtil.aとlibDerelictSDL2.aだけリンクすれば出来るはず 俺の手元にある去年のDerelict3だとsdl2は小文字でインポートされてるので今年になってからのエンバグっぽい
アンドレイさんが本でDのモジュールと構成フォルダは全部小文字にすべきって言ってたよね
>>952 ありがとう!ガッツリ書かれてましたね
>>949 の問題は
build.d 中でパス指定がSDL2だけ大文字の 「SDL2」 になっているところを
「sdl2」 に勝手に変えてコンパイル→buildしてもOKだったけど不安すぎる・・・
それにやっぱり実際にコード中で
import derelict.sdl2.sdl;
とやるだけでエラーがでますね
だけど、/usr/local/lib に動的ライブラリが存在しようがしまいが
同じエラーログがでるんで、やっぱ俺の指定の仕方が悪いんだろうと思います
もうちょいがんばります
コンパイル可能なのにエラーが出るなら置いてるSDL2ライブラリの可能性もあるよ
libSDL2.soまで小文字にしてるわけじゃないよね?一応
>>958 そこは大丈夫です!
>>957 コンパイルエラーですね
まだD言語のstaticコンストラクタや、エラーの読み方が理解できてないので憶測になりますが
どうもutil.loder周辺が走るくらいのところで「定義されていない参照です」と出るようです
それどころか、他のライブラリで試してみてもSDLの時と同じエラーが出るので
utilの周辺を眺めているところです
うああああああああ、みなさんほんとすみませんでした! わたくしめがlibdl.aへのリンクを忘れていただけのことでした お騒がせとスレ汚しすみませんでした。(何よりライブラリ側疑ってほんともうしわけなかった・・・) 色々と答えてくれた方々ほんとうにありがとうございました
解決してよかった
>>962 ごめんなさい、昨日のうちにレスしようと思ったら
行数制限ひっかかりまくってさるさん食らってました
文字数と行数のせいで見難いと思うけどまとめます
まとめるという作業とは 見難くするのではなく 簡潔に見易く整理し 判りやすくする作業のことである
「Ubuntu 13.04(Raring) 32bit 環境で Derelict3(2013/07/10 時点) を使おうとした」 ・公式リポジトリからmasterを落として dmd(2.063) で build したところエラーが起きる (存在しないディレクトリへのアクセス) ・build/buidl.d 中 の 98行目を次のように書き換えたところビルド可能になった 修正前:enum packSDL2 = Package( "SDL2", srcDerelict ~ "SDL2/" ); 修正後:enum packSDL2 = Package( "SDL2", srcDerelict ~ "sdl2/" ); ・DerelictUtil(libDerelictUtil.a) と DerelictSDL2(libDerelictSDL2.a) をリンクし、 SDL2(libSDL2.so)を適切に配置するもコンパイルエラーが出て泣く ・dl(libdl.so)をリンクすることによりコンパイルに成功する
ありがとう って伝えたくて
DerelictがバインドしてるSFML2は、SFML(C++ゲームエンジン)の C言語版(CSFML)の関数しか使えないみたいだけど、 DSFML(Derelictとは別モノ)はC++のクラスを再現してくれてるのね! SFML自体気になってたからこれを機に使ってみようかしら
DSFMLはCSFMLをDのクラスでラップしてるだけでC++SFMLとは違うよ。 DerelictのSFML2を同じ方法でラップした方が効率が良い
>>968 ほんとだ、てっきり再現してるのかと思ったら色々違う部分があるね
971 :
デフォルトの名無しさん :2013/07/14(日) 10:45:12.99
Derelict3のbuild/build.dの問題、もう修正されてるな
おおほんと、ありがたや
>>968 気になってDSFMLのソース見てたら、
3.141592 とか 180 とかがベタ書きされててなんだか切ない気持ちになった
975 :
デフォルトの名無しさん :2013/07/17(水) 09:52:24.19
おつおつ
友の会の入門講座で const と immutable を勉強してるんだけど メンバ変数のgetterを書くとき、C++では const Foo& getFoo() const { return m_foo; } // Foo m_foo; のconst参照返し (もしくは: Foo getFoo() const { return m_foo; } // 値型のコピーを返し) としてたところを immutable(Foo) getFoo() immutable { return m_foo; } // Foo m_foo = new Foo(); にすればいいってことかな?
プレビューで推敲してたら間違ったまま途中で書き込んでしまった 返り値の型は const(Foo) じゃないとダメだよね・・・?
>>971 神ツール来た?
64bitだとCOFFだから今更な気もするけど…
>>977 constもしくは inout
戻り値は autoでもいい
>>980 ありがと〜
でもごめん全然理解できてなかったみたい。もうちっと見回ってきます
普通にTDPL買った方が良いと思う
const/immutable/sharedはDの機能の中でも特徴的でかなり有用なんだがその分結構ややこしい
class C { private Object obj; const const(Object) get() { return obj; } Object get() { return obj; } } みたいな二重定義しなきゃならないのなんとかならないかな
inoutじゃだめなんだっけ
const const(Object) get() { return obj; } って const Object get() { return const(obj); } の方が自然じゃね?って思うのは、俺がD脳になってないから?
それだと戻り値の型がconst(Object)にならないんじゃ あれ?それともCのインスタンスがconstの時に呼び出せな… ええいややこしいわっ
C++だと
>>984 みたいにする必要があたけど
Dではinoutでいけそうなんだね。なんて快適なんだ
inoutってよくわからなかったけどそういうものだったのか。すばらしい もしかしてconstな要素を持つ変数にRebindableを使わずに再代入する方法もすでにあったりする?
それをするなんてとんでもない
import std.string; class C{ ~this(){ format(""); } } void main(){ C c = new C; } core.exception.InvalidMemoryOperationError これって何とかなりません?
const(Object)* value; auto obj = new Object; value = &obj; auto obj2 = new Object; value = &obj2; さすがポインタだなんともないぜ
代入演算子のときにtypeof(__leftexp)みたいなのがほしいぜ
もしかして:暗黙変換
996 :
デフォルトの名無しさん :2013/07/19(金) 18:19:21.77
大阪府文化財センターHP、サイバー攻撃受け閉鎖
http://www.asahi.com/national/update/0719/OSK201307190030.html 大阪府の外郭団体「府文化財センター」のホームページが不正アクセスで改ざんされ、
17日から閉鎖されていたことがわかった。サイトの閲覧者がウイルスに感染する危険性があったが、
現時点で二次被害は確認されていないという。
同センターによると、17日にサイト管理会社から「サイバー攻撃を受けた」と連絡があった。
勃起不全治療薬の広告が出てくるように改ざんされた。広告は英語表記だったという。
サイトには文化財関連の講演会や刊行物の案内などを掲載。改ざんの被害は5月に続いて2回目で、
同センターは対策をとって再開する方針。担当者は「うちが狙われる理由がわからない」と話している。
D1をつかってるひといますか? FAQよんだらわかるかな?
ケーン・ワカバに聞いてみたら? あいつが一番詳しいんじゃ無いかな
うん
こ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。