D言語 Part34©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>97 C++で統一できるなら、std::function<...> で統一すれば済む問題だろ? DのデリゲードはCの関数ポインタに変換できるのか? 既存のC製ライブラリを使うときはどうするんだ? >DのデリゲートはCの関数ポインタに変換できるのか? Dにも普通の関数ポインタがあるので、そちらを使う まあデリゲートでも(cast(void function())dg.funcptr)とか出来る、もちろんキャプチャした変数は使えなくなるけど 訂正:dg.funcptrは既に関数ポインタなのでキャストは不要 当たり前だな、何を勘違いしてたんだろう キャプチャなんてもんがある辞典でC++は消滅すべき >>100 C++もキャプチャ変数が無ければC関数ポインタとして渡せるから、似たようなものだね。 つまり >>97 は単に無知だったということだな。 >>102 も言葉通りだとナンセンスだが、「キャプチャ変数を明示する必要がある」という意味なら一理ある。 キャプチャ自体はなるほど、と思ったけど キャプチャ周りの書式はもうちょっとどうにかならんかったかなと思う 初見のときはあまりの違和感に頭がしばらくぐよんぐよんした https://issues.dlang.org/show_bug.cgi?id=14213 S氏のバグ報告、これってProxyにtoHash付いたのが原因か getHash(cast(const void*)a)としてるけど、delegateをconst void*にキャストするのがdeprecatedになった constなdelegateとかにいまだに違和感がある 2.067マダァ-? (・∀・ )っ/凵⌒☆チンチン まだ RC も出てないよ 後1,2回ベータが出てからその後のはず vibe.dの問題が解決できるまで2.067のリリースを遅らせるようだ D言語わくわく http://next 2ch.net/tech/1425486862 ↑ ツメル フォーラム見てるとWalterとAndreiに対してヘイトが溜まるなぁ なんだこいつら 別に横暴って訳じゃないけど、なんか他人を見下してる風なんだよな 自分たちと違う意見を持つ人間ってだけで馬鹿にするような返答や皮肉を繰り返してた時はちょっと引いた 特にWalterは何かにつけて「30年間プログラマをやってきた経験」とやらで他人の意見を蹴ったり、一方で都合が悪くなると返事しないので腹立つ >自分たちと違う意見を持つ人間ってだけで馬鹿にするような返答や皮肉を繰り返してた時はちょっと引いた あるある こういう態度からは何も生まれない FacebookがD言語を開発してるみたいな誤解を与えられたの、AAの目論見通りなのかな 実際はちょいと金貰っただけだし、業務ではほぼ使われてないとAAも言ってたし 以前ここで見た気がするけど dmd2.067(win32)でも、windows8.1 64bitで 以下が落ちる --- size_t count; scope(failure) count.writeln; foreach (_; 0 .. 100) { count++; new byte[100_000_000]; } --- 13 core.exception.OutOfMemoryError@(0) GC「それはな…ちゃうねん」 なんかGC作動オプションつけられるようになったっぽいから色々試してみたけど どうやっても落ちるのな PreciseGC にならないとダメ 非アドレスをはじけないから デカいブロックを使用中と誤認したり無駄なスキャンも防げない 自前で malloc/free するか Win64使うか でかいJPEGファイルをロードしたくらいで引っかかる上に 外部ライブラリを使ってるから回避できなくてとても困る やはり時代は@nogcか… いい加減、64bit環境を構築するかー さんくす! 一応 delete で、不要と教えてあげれば落ちないけど GCの意味ないなあとか思っていじってました GC「要らないならいうてやー」 10-20MB以上のデカいブロックだけmalloc/freeするのがいい GCに預けたやつを中途半端に手出しするのもあんまり GCの方がトータルで速いと主張してたのはなんだったんや・・・ つか、GC無しが有り環境に移行するのはまだしも、有りだったのが無しに移行するのって辛いよな D言語からC言語のヘッダファイルを読み込むにはどうしたらよいですか? 具体的にはwindows.hとかを読み込みたいです。 DirectXとかも使いたいのでC++用のCOMのヘッダも読み込みたいです。 D言語はライブラリが少ないし、 マイナー言語なので、ライブラリ提供者から公式なサポートが無いです。 そのため、C/C++用のライブラリをそのまま流用して使いたいです。 ヘッダファイルには、C/C++用のマクロなども定義してあるので、 D言語はC/C++の全機能をサポートする必要があります。 このために、DとC/C++を切り替えるスイッチが必要で、( 例えば extern C++{ } ) 私が知りたいのはこの機能です。 原則: ・C/C++のヘッダを直接読むことはできず変換が必要 ・DMDでWin32アプリを作る場合に限り、C/C++ののライブラリの変換も必要 大抵のライブラリはすでに変換済みのが用意されてるのでそれを使うだけ Win32API -> http://www.dsource.org/projects/bindings/wiki/WindowsApi/ ゲーム用とかなら github/DerelictOrg が充実してる いちおう公式のバインディング集 使ったことないからどのくらいあてになるかは知らない https://github.com/D-Programming-Deimos wxDを使えている人に質問です。windows上でmingwからwxDをコンパイルしようとすると、wxWidgetsのコンパイルまでは成功したのですが 、wxDのコンパイルで以下のようなエラーがでます。 export PATH=/e/D/dmd2/windows/bin:/e/D/dm/bin:$PATH export WXDIR=/e/D/wxWidgets-2.8.12 make dmc -D__DMD__ -mn -g -o+none -D____ -D__WXDEBUG__ -Ie:/D/wxWidgets-2.8.12\inclu de -Ie:/D/wxWidgets-2.8.12\lib\dmc_lib\mswd -w- -I. -WA -DNOPCH -HP90 -Ar -Ae -HP99 -c -oaccel.obj accel.cpp virtual ~name() \ ^ local_events.h(49) : Error: storage class is illegal in this context { \ ^ local_events.h(50) : Error: illegal constructor or destructor or invariant decla ration ProcessEvent(e); \ ^ local_events.h(52) : Error: undefined identifier 'ProcessEvent' } ^ local_events.h(53) : Warning 18: implied return of name at closing '}' does not return value void RegisterDispose(Virtual_Dispose onDispose) { m_onDispose = onDispose; } \ ^ local_events.h(67) : Error: undefined identifier 'm_onDispose', did you mean 'on Dispose'? virtual ~name() { m_onDispose(this); } \ ^ local_events.h(68) : Error: storage class is illegal in this context Fatal error: too many errors --- errorlevel 1 --- errorlevel 1 --- errorlevel 1 dmd 2.067.0, dmd 2.054 wxWidgets-2.8.12 wxd 0.16 dmd 2.067.0, 2.054どちらでもエラー内容は同じでした。何が問題なのでしょうか? 久しぶりにさわったらUFCSとかrangeとかイケてるやん、書いてて気持ちえ〜わ〜 replaceはstringとregexで被ってるのか http://www.kmonos.net/alang/d/overview.html >非仮想メンバ関数。C++では、関数がvirtualになるかどうかは クラスの設計者が前もって決定します。 >メンバ関数をオーバーライドすることにしたのに、基底クラスの方で改造を忘れる… というのは、 >よくある(けれども非常に見つけにくい)コーディングミスです。 >全てのメンバはvirtualにしておき、 オーバーライドが存在しないことをコンパイラが検知して非 virtual に変える、 >というアプローチの方が信頼性があります。 と書いてありますが、実際にどこまでそんな最適化が機能しますかね。 ローカルスコープでnewされたオブジェクトなら簡単に検地できますが、 メソッドの引数で渡されたオブジェクトや、 メンバ変数で保持しているオブジェクトに対して、 オーバーライドが存在しないことを、どこまで検地できるものなのでしょうか。 D言語はモジュール単位でコンパイルするので、 自分のモジュール以外で何が行われるかわからないのでは? 詳しくないのでさっぱりなのだがこっちにも http://www.kmonos.net/alang/d/function.html#virtual-functions >コード生成時にDはクラス階層を全て把握していますので、 >オーバーライドされていない関数への呼び出しは全て最適化されて non-virtual になります。 って自信満々に書いてあるね。 で、なんかそんな話題どっかでみたなあと思って探してみたが http://hibari.2ch.net/test/read.cgi/tech/1293500945/300-303 別に結論出てなかった。 まあ「finalつけると速くなる」なら(今でも同じかは確認してないが) 可能であろうと、少なくとも真面目に実装はしてないんだろうね。 virtual がキーワードとして追加された後しばらくして撤回されたのが最近の出来事 dmdしか使ってない俺にもdmdが最善ではなさそうなことはわかる コンパイルが最速でプロファイルもカバレッジもちゃんと動くdmdが最善でないとな? win32/simd とか win64/seh とか足りないのはあるけど dmdのsimdってまだSSE2までしか対応してないのけ? ポストC++を目指してるんだけど C++自体が使われてないから 俺が思うに、Cとソースレベルの互換を切ったのが不味かったな。 Cのヘッダが読み込めないんじゃ、生産性悪すぎ。 Cのライブラリを使おうと思っても、誰かがこっそりDに移植したのを使うしかない。 そんな怪しげなものは企業じゃ使いにくいわな。 でもプリプロセッサみたいなXXXXXXなもの積んだら元の木阿弥だしなあ C言語にはマクロがあるから難しいだろうね。 マクロとインライン関数とじゃ微妙に動作が違うし。 それを再現するのは難しいし、再現したらしたでDの人たちが怒る 他の言語に比べりゃマシ。 普通はC側からもグルーコードを書かないといけない。 ライブラリ側の改造なしで普通にリンクできるってのは大きいなあ でも、CのライブラリはC++からだと何の改造もなく普通に読み込めるし、 殆どのライブラリはC++から使われること「も」想定して書いてあるし。 ライブラリの公式なサポートがあるってのも大きいかと。 Dの宿敵は完全にC++なわけで、ここからシェア奪うの厳しくね? しかも最近のC++はやたら高性能になってて、Dが圧倒的に優位といえるのは、 GCが有ることぐらいか。しかしDのGCは完全じゃないので、実際には開放できる領域を 見逃すことがあるらしい。>>125-127 しかもメモリを使えば使うほど、切迫していればいるほど、誤認の確率が高くなる。 本当にGCが必要な時ほど、GCが上手く動かなくなるという・・・。これはなんかおかしい。 まー一生C++使ってろって言われそうだが。 京大院卒の元日立社員ですらrust,go,nimとやってきたがDは目次で投げ出すほど難しいらしい 仕様書であるTDPLを入門書と間違えて買ったんだろうな Visual D使ってる人に質問です。 Visual Dって標準ライブラリの予測変換でないんですか? どうせ出てほしい時に出なくて 必要ないときに邪魔なポップアップが出るみたいな お粗末なものにしかならないべ 言語設計レベルからそこまで考慮してないと C#はforeach使うとGCが増えるらしいけど Dはどうなの? Dってどこで学んだらいいんだ dlang.orgしかない? https://gist.github.com/repeatedly/2470712 ここ読んで文法身につけて、 標準ライブラリは公式がそこそこわかりやすいからそれで。 (日本語訳はちょっと古いが、参考には十分なる) んで、わからないことはここか、 最近はtwitterで#dlangのハッシュタグつけて質問するのも流行り。 自分も去年一度質問投げたら、一時間で三人から同じ解答来て震えた。 >>164 ありがとうございました。なんか出てきました。 以前にC++とねんごろになれるうpあったとか見た気がしたけど、あれは幻覚だったのかこの流れ見ると namespaceに対応したり、C++側でインスタンス化されたテンプレートがDから使えるようになったんじゃなかったっけ? C++ヘッダを直接import出来るようにするDコンパイラも開発されてるけど結構実用的ぽい https://github.com/Syniurge/Calypso/blob/master/tests/calypso/libstdc++/vector/vector.d >C++ヘッダを直接import出来るようにするDコンパイラも開発されてるけど結構実用的ぽい あ、それいいね。てかそれしないと普及しないでしょ。互換性は大事。 COMとかもそもまま使えるようになるんかね。 ☆ 日本の核武装は絶対に必須ですわ。☆ http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html ☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が 3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。 私たちの日本国憲法を絶対に改正しましょう。☆ dsource.org もいよいよ廃止に向かう模様 使ってる人ほとんどいないだろうけど ちなみに移住先は?最近D使ってないんでよくわからんけど この言語 親クラスのprivate変数に継承先のクラスがアクセスできるじゃん 継承先のクラスが同一ファイル内にないか? 同一ファイル内のメンバは常にpublicだぜ まじかよ酷いな ファイル=モジュールだからファイル分けるの面倒くさい 同一ファイル内にあるものは自動的にfriendだと思えばC++より便利だな D2はまだ使用が固まってないからとうぶんの間は開発にはD1を使うことになるな 1のことは忘れるんだ……。 2も最近は破壊的変更が少ないし、 どうしても仕様が固まってるものを求めてるなら別の言語のほうがいいよ。 少なくともD1を使っていいことは一つもないと思う。 D1かC++かならまじでC++使えばいいと思うよ 雰囲気っていうか、まあ確かにC++使うならここで宣言する必要はないと思うけど 意外なことにrustの方が言語とAPI仕様の安定化に積極的っぽい 明確なゴールもなくフワフワと手を広げるから収束しないんだよ effectivec++読んだ時点でc++を見限らない奴はセンス無い >>186 それここ1ヶ月くらいのことじゃね? まあでもそういう姿勢を公式に明確にするのはいいことだ PCがオワコンになって一般人はスマホやアップルウォッチしかコンピューターを持たない時代が来るのに Dを始めとするPCアプリ専用言語に未来はあるのか >>190 そもそも、一般人はプログラミングしていない。 >>192 Goで泥アプリ開発できるようになったし、PCから移行するにつれいろんな言語が泥とかアフォン とかでも使えるようになる。 という妄想 Tcpを用いたサーバーアプリケーションを作成しています。 一つのSocketを処理するスレッドをspawnで起動しようとしたのですが、 "Aliases to mutable thread-local data not allowed." というエラーが出てしまいます。 Socketをスレッドのコンテキストとして渡す方法はありますか? enumのメンバの中からランダムに1つ取り出すにはどう書いたらいいですか? import std.stdio, std.traits, std.random; enum E { Hard, Normal, Easy, } auto lv = [ EnumMembers!E ]; lv[ uniform(0, 3) ].writeln(); ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる