新スレ記念にマジレスすると
Qt とか Python とか知ってしまうと
D いらないんだよね
QtはともかくPythonとDは単純には比較出来ないな
ネイティブじゃなくても済む用途では大抵Pythonで足りると思うけど
>>2 の後についてるじゃん・・・
prowikiとwiki.dlangを入れ替えてくれればよかったのに
後 dsource系も全部入れ替えたかった
7 :
デフォルトの名無しさん:2014/03/31(月) 12:18:18.92 ID:D1GO4u2R
vibe.dのソースみると、色んな機構を全部自前で実装してて大変そうだ
汎用的な部分を切り出してライブラリにしてくれないかなぁ
http://sourceforge.jp/magazine/14/04/01/183000 米FacebookがC/C++プリプロセッサ「warp」をオープンソースで公開、高速な処理が特徴
2014年4月1日18:30 末岡洋子
米Facebookの開発者は3月28日、C/C++言語向けのプリプロセッサ「warp」をオープンソース
で公開した。Facebook社内で開発したもので、同社ではGNU cppに代わる高速なプリプロセッサ
として利用しているという。
FacebookがD言語設計者のWalter Bright氏とのコラボレーションにより開発した。
C/C++バイナリ構築のプリプロセス時間を短縮することを目的に設計した。パイプ&フィルター
(pipes-and-filters)スタイルを採用し、コンポーネント化を進めることで高速化を図っている。
大規模なコードベースと多数の依存性がある複雑なプロジェクトにおいて、デバッグおよび
ビルド速度を10〜40%改善したという。
warpはCentOS 6のみで検証済み。今後対応OSを増やしていくとしている。
ビルドにはD言語が必要。ライセンスはBoost Software License 1.0。
warpのGitリポジトリ
https://github.com/facebook/warp
> ビルドにはD言語が必要
www
ビルドには書籍「プログラミング言語D」が必要です。
日付見ろ日付
warpは少し前に完成してたけど
4/1だからと言ってなんでもかんでもAFってわけでもない
14 :
デフォルトの名無しさん:2014/04/04(金) 16:02:43.67 ID:gc2i2IVv
エラーメッセージに表示されるコード片ってどれも脱糖した後なんかな
test.d(11): Error: cannot implicitly convert expression (cast(immutable(char)*)foo()) of type immutable(char)* to string*
RoslynでD#が作り上げられ
逆襲が始まるのでは
D.Net作ればいいやん
C#がネイティブコンパイルできたとしてもCのポジションではないような
Dはシステムに近いコードも書ける長所がある(と思う)
18 :
デフォルトの名無しさん:2014/04/04(金) 17:32:53.11 ID:gc2i2IVv
.Netのオープンソース版はMS謹製じゃないというだけで今までも有ったし、D.Netを開発していた人も居た(その後の経過はお察し)
MS/Windows に寄り添う連中はコミュニティの資産を築いて守るとか興味ないんじゃないかな
(´゚д゚`)
何か勘違いがあるようだな
そもそも始まってすらいない
Dのコミュニティ
convert!("days", "hours")(31) とか dur!"days"(31) みたいな感じで、動作をテンプレート引数にするのは何か利点があるのかな
convert(31, TimeUnit.days, TimeUnit.hours) とか dur(31, TimeUnit.days) みたいなインタフェースもあった方が、
実行時にユーザの入力によって単位が変わるような状況にも簡単に対応できて良いんじゃないの?
テンプレートになってると、使われる可能性のある全ての単位についてインスタンス化しないといけないと思うんだけど
テンプレートにする利点とか、この点について参考になるフォーラムのスレッドとかあったら教えてください
テンプレート使うとしても文字列じゃなくて定数でいいんじゃねぇの?とも思うな
なんで文字列でテンプレート引数なんだろ
実行時に単位が変わり得るから文字列なんじゃね
普通に型渡すと書かれてる分しかインスタンス化されないし
テンプレート引数だけど実行時に変わるの?
と思ったけどコンパイル時にバリバリ変わりうるのか
>>26 テンプレート引数はコンパイル時に決定されないと駄目なので……
それに文字列の場合も書かれた分だけインスタンス化されます
俺の印象だと、Goと立ち位置が被ってるんだけど
ここの住民の皆さんはどう考えますか
応用が若干違うというか、Goはサーバープログラム全般、
Dはゲームに使われてるって感じはするけど
goとは似てないだろ
goはシステムレベル言語を志向してない
被ってるのはrust
かぶってるのはC
そろそろD言語3って本当なの?
2009年ごろは本当と言えたんだがw
D2の立ち上げ方は大失策だったとうぉるたん自身認めている
名前が良くないよね
3Dにするべきだった
なにが失策だったん?
1とか2なんて作るべきじゃなかったって?
:3D
D3は社名だから飛ばしてD4にすべきだな
小さいバージョンアップはアルファベットの添字で区別だな
D4A、D4B、D4C…
いつもたやすく行われるえげつないアップデート
いつもたやすく行われるえげつない仕様変更
いとも
4.0A->4.0Bはかなりえげつないアップデートというか超えられない壁だった
import std.parallelism;
void main() {
auto p = new TaskPool;
}
p.finish() or p.kill()
ねぇ、Dってプロで誰が使ってるの?
結構前にいた、Dで業務で納品するプログラム作った(?)って言ってた人
あの人は少なくともその当時はプロといえたんじゃないかな
プロジェクトのプロダクトであるプロパーなプログラム
懐かしいな納品した人。
BOFももう6年前くらいになるのか
バージョン変わったらソースから書き直すんだろ
引き継いでメンテさせられる方はたまったもんじゃないな
古いコンパイラ使えばいいだけじゃね
ライブラリとかあまり依存させないようにすれば
そのバージョンの開発環境ごと残したりできる
開発環境・実行環境をポータブルに保つなら有用
>>45 フェースブックのバックエンドって話じゃなかったの?
俺が業務で必要になったツールをちょいと作るのに使ってるのはプロが使ってるとは言わない・・・か
よろしい
許可します
>>8 warpって、Windowsに負けたOSと同じ名前じゃん。
ワスプ撃沈
あれ・・前は「内部でGC呼んでるとこがわかるようにする」
みたいのじゃなかったっけ?
勘違いかな
それもやる
これもやる
ってことじゃないかな
なるほど
破壊的変更?
-vgc は既に入ったよ
標準ライブラリが一通り追従しないと実用的じゃないと思うけど
ああーコンパイラスイッチの方は既に入ってるのか・・
-vgc で、GCのメモリ確保をリスト表示
@nogc で、GCのメモリ確保を警告(但しCTFEはOK)
コンパイル時ならGC動かしていいとか熱いわ
コンパイル時のみに特化したテスト用サーバーが要求される日は近いな
そもそもコンパイル時ってGC動くのか?
フォーラムでGC入れると遅くなるよ的な話してるんだけど、つまり今は無いってことだよね
GCを前提としたnew,mallocならガンガン使われてるよ(真顔)
>>67 コンパイル時計算で長さ不定の配列を計算過程に使ったらGCひつようじゃね?
CTFEの仕様知らないけど。
定数を返すようになるはずだから、そこまで持ってくのにはGCいるでしょ。
>>69 Walter曰く、
> I made a build of dmd with a collector in it.
> It destroyed the speed. Took it out.
これがコンパイル速度の秘密か……
「コンパイル時のGC」と「ランタイムのGC」は全くの別物でしょ
あれ?DMDってDMDでかかれてるんだっけ?
C++製だよ
このcollectorってのはBoehmGCだったと思う
一時入ってたよね
コンパイル時の処理は内部構造のツリー操作が基本
操作=部分的な組み換え
スピード狂のうぉるたんがそんなこと許すはずがない
これおかしい
ヌル以降を無視するのが正常だよね?
sc.yutopp.net/entries/535b307543f75e31400007fc
>>76 そうだよ(便乗)
makeの時にD言語へ変換してコンパイルするって話もあるが
github.com/D-Programming-Language/dmd/pull/3410
ゼロターミネートはCのprintfとかの仕様なんで・・・
これはひどい
>>79 そうみたいですねー
単一引数のwritelnだけヌルで表示が終わるのは、
高速化のためにwriteln内部でfprintf使ってるのが原因だったようで…
phobosのC依存がヤバイ
最近ましになったけどまだヤバイ
@nogcの次はnamespaceか
module hoge.kore;
を
namespace hoge.kore:
に書き換える仕事が始まるの?
別にDのモジュールに競合するもんじゃなくて、namespaceが付いてるC++の関数を呼ぶための機能なのかな
> Currently, there is no support in D to call C++ functions in namespaces.
C++の為に新しいキーワードを追加するのは負けっぽい感じがする……
externにnamespaceへの参照を書けるようにだけして、D側ではモジュール使うとかで良いのにね
-vgc @nogc ときて、今度はnamespaceか
C++からの乗り換えキャンペーンでも始まるの?
C++のアクセスなら、SWIGみたいな外部ツール使えないのかな。
使ったことないからよくわからんけど。
extern(C++, namespace)に落ち着いたか
しかしexternごときがD言語側に名前空間を作っちゃうのも、これはこれで気持ち悪いな
確かに、externに引数が並んでるのに違和感あるかな
けど、Dのモジュールの中にnamespaceを閉じ込められるなら
破壊的変更にはならないね(残念)
宣言文じゃないのにシンボルが増えるというのが非常にきもちわるい
92 :
デフォルトの名無しさん:2014/04/29(火) 14:06:42.02 ID:tuCmfcOr
>C++の為に新しいキーワードを追加するのは負けっぽい感じがする……
まさにこれ
pragma でよかったんじゃ
extern もろともなくすべきなんじゃ
わかります
devc/baf ってなんかいいな
デストラクタ廃止ってマジ?
間違ってデストラクタ使う被害者がこれ以上出ないように
廃止するのは賛成
オブジェクトが破棄されるタイミングでやりたい事って案外無いよな
大抵はスコープを抜けるタイミングでやりたい事だもんな
デストラクタの中で何かやってるつもりでも
一度も呼ばれないってことも結構あるし
だいたいscope(exit) hoge.dispose();だからな・・
メモリ管理自分で書くならD使う意味が無い
freeとかdeleteとかと変わらん
「定期的にGC動かすためだけのスレッド」を作ってくれる関数を、
標準ライブラリに用意すれば、デストラクタの使い道も変わるかも
Dの管轄外のリソースを管理するときにデストラクタだけではあまりに心許ない
え、デストラクタなくなるの?
初歩的な質問かもしれんけど
今までは scope hoge = new Hoge; だけでよしなにやってくれたのが
scope(exit) hoge.dispose(); とか、
destroy(hoge); だっけ? とか書かないといかんの面倒に感じるんだが
どういう流れなの?
よしなにやってくれていたという幻想
なん・・だと・・?!
あ、destroy(hoge)は関係なかった・・
フォーラム見ると、デストラクタ廃止に反対してる人は多いみたいね
英語力無いから内容はよく分からんが
クラスってあまり使わない
たしかにクラスなんて面倒くさい、多様な継承を許さないのは未熟者が多いせいだ。
ん〜まあ、scope, try - catch - finary とかもあまり使わないな。
ふんだんにリソースを使っているとにに限って頑張るCG!
だいたい型つけが強い関数なんてあるから cast() で引数を間違うんだ!
そもそも、foreach regnge ってなにさ、renge を効率よく作らなくてはと強迫されているようだ
いつから switch って default 付けないと怒られるようになった!
CTFE なんてあるから、コンパイル時に頑張ろうとしすぎる。
static if って便利なようで便利じゃないじゃんw
一週間たつと自分で書いた OneLiner のコードが読めなくなる。
と思いつつ、d言語を使うのであった。
読める、読めるぞ
縦読みっぽいけどそうじゃないのか
disるのも愛の一つ
disれてないんだよなぁ……
うーん、disというよりあまりD言語を把握できてないだけなんじゃないかなぁ
慣れもあるかもしれないけどね
個人的には、やっぱり標準ライブラリが微妙だと思う
洗練されてない部分がまだ多い
デストラクタをちゃんと呼ぶGCが作れないのは何故?
やってる言語もあるのに
やってる言語なんかねーよ
やってるように見えても、GC中全スレッドを止めるとか変なルールが大量にあるとか微妙なのばっかだ
Obj-CのGCは?
にわかが多いなw
C++最強無敵!!
デストラクタが呼ばれないケースってあるのか?
C++erにはこれをどぞ
sc.yutopp.net/entries/5365c46943f75e3140000da2
>>123 例えばプロセス終了時にアプリがメモリ回収するくらいならOSにやらせる。という戦略もあるそうだ。
そういう時はアプリはターミネートしてOSがページごと破棄するのでデストラクタは呼ばれない。
そして、ハンドル類も回収されない。
それが問題になるとするとアプリがクラッシュしたらゴミが残りまくることになる
アプリクラッシュしたら、ハンドルリークはしてると思うけど、最近のOSは回収してるのかな?
プロセス終了時に回収するだろ
へぇー。そうなんだ。
いつもそれが怖くてOSプログラムはやりたくなかった。
クラッシュするより無限ループの方が怖い
core.exception.InvalidMemoryOperationError が怖い
饅頭こわい
Gui系って今どうなってんすか
wxD使ってる
他は判らないのでスマソ
C++との結合が強化されるなら、QtのDバインディング開発が再開してくれればいいな…
DFLとDWT現役
wxDと同様DLLまみれにならないのがよろし
GPLが大股開きで誘ってる
久しぶりに弄って見ようと思ってVisualDインスコしたけどVSは相変わらず有効期限がどうたら出て使えナス
ググっても特に何も出ないし、自分の環境だけなんかなこれ
Twitterに流れてたんで触ってみたけどtkdもかなりよさげ。
>>136 他のGTKバインディングと遜色ない程度ならいらんな
>>141 VSのアクチベーションしてないんでしょ
Clangは知っててもLLVMは知らなさそう
dmdのソースをDに変換する仕組みができたってマジ?
皆さんデバッガーとか使ってるんですか
GDBがD言語サポートしてるのでそれを
writelnっていうグレートなやつを使ってる
しっかりしたunittestとカバレッジとwritelnがあれば大体足りる
>>148 magicport2 github でぐぐれ
コンパイラがメモリリークで死ぬのは防げそう
string が char* のままとかそういうレベルだしここから先どうすんだろ
155 :
デフォルトの名無しさん:2014/05/11(日) 01:08:34.10 ID:O0lpU4CW
D最近全然更新ないね
156 :
デフォルトの名無しさん:2014/05/11(日) 04:03:01.73 ID:o03oWJtW
何かをやり遂げた後はかなり疲れる
No symbol table is loaded. Use the "file" command.
シンボルテーブルってどうやれば作れるんでしょうか
gdbは32・64Bit両方使ってみたんですがエラー出るんですが。
ちなみに64Bitのgdb使うと
warning: `C:\Windows\SYSTEM32\ntdll.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `C:\Windows\SYSTEM32\wow64.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `C:\Windows\SYSTEM32\wow64win.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `C:\Windows\SYSTEM32\wow64cpu.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: Could not load shared library symbols for WOW64_IMAGE_SECTION.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for WOW64_IMAGE_SECTION.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for NOT_AN_IMAGE.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for NOT_AN_IMAGE.
Do you need "set solib-search-path" or "set sysroot"?
Quit (expect signal SIGINT when the program is resumed)
こんな感じでエラー出ます。
>>158 やりたいことも環境も全くわからん
Win上で DMD/32->GDB をやろうとしてるなら未対応
>>155 2.065の後やりすぎと思うほどどかどか変更が入った
俺の予想ではリリースは来月半ば
いつのまにscope非推奨になったの!??
デストラクタも非推奨になるとすると
C/C++のバインディング系全滅じゃね??
scope変数は色々危なかったから仕方ないね
必要ならstd.typecons.scopedを使えってdlang.orgにも書いてある
クラスのデストラクタが非推奨に、ってのもGCはデストラクタを呼ぶ保証が無いから参照カウンタ使えって話でしょ
しかし、何でもライブラリでやろうってのは気にいらんな
この辺の基礎的な部分は言語組込みの方が色々便利だと思うんだが
コンパイラは小さいにこしたことはない
あえて言えばコンパイルエラーが意味不明になりがちなのが弊害か
invariant() の () がやられたらしい
あれって構文解析の都合で付いてたのかよ…
std.typecons.scopedもスタック上にメモリ取ってくれるのかな?
はい
関数の戻り値の型推論とメンバのオーバーライドは相性悪いみたいだけど
将来対応する予定とかあるのかな・・・ないならfinalにしてほしい
公式のPhobosマニュアルに新しいレイアウトがきてる
デストラクタが非推奨になったらD言語使う意味がなくなるんだが俺…
デス・トラクター 〜死の宣告人〜
5/20 放映
幽霊トラクターがどこまでも追ってくるという内容のB級映画か
クラス、GC、参照カウンタ
来るかもしれないって煽っておきながら結局来ないのか
デストラクタはさすがに D2 では残すんじゃねーの
>>163 static this「奴は我々の中でも一番の小物」
あたしさっきハンガリアンの彼と別れてきたわ
イケてないじゃない
国破れてハンガリア
だっちゅ〜の☆
static thisは()が無いとおかしくね? あれモジュールのコンストラクタだろ
引数なしが明らかなら省いてもいいんじゃね
クラスの方と書き方が変わるのはなー
むしろプロパティとかあるんだから、引数がない関数全般で宣言の()省けてもいいんじゃないか
単なる変数と区別がつかないとかそういうのは、まあどうにかなるだろう
つまり defとかfnとか付けるんですね
既に宣言周りの文法は混雑してるしなぁ
int foo() {} // 関数
int foo()() {} // 関数テンプレート
int foo() = int.init; // 変数テンプレート
int foo(); // 関数プロトタイプ
int foo; // 変数
解りやすい(グルグル目)
あれ、日本語の公式っぽいサイトはとうとう更新とまってたのか
一、二年ぐらい前から止まってなかった?
かなり変更入ってるから、もう古いドキュメントだって警告入れてくれないかな
Error 42: Symbol Undefined _D4dgui4core8geometry4Size6opCallFiiZS4dgui4core8geometry4Size
普通にソースコード内にある構造体なんですけど、これdmdのバージョン落とすとか必要なんでしょうか?
それ普通のリンク漏れじゃないの
何がクソって日本人が関わると閉鎖的になるんだよね
>>187 Githubでpull request送れば良いと思うよ
能力で並グループ、上位グループでそれぞれ固まって並未満は汚物のようにあしらわれる日本の文化は
低脳にも棒グラフの短いほう的需要がある社会の三国人からすると異質に感じるだろうね
たしかに不寛容が過ぎると思うわ
どこの誤爆だ
本家にはv2.061以降の英語原文が置いてあるけど
現状の日本語訳の元になった原文は何処かにないのかなぁ
英語原文同士の差分が作れないと全部目視確認することになりそう
>>188 古いライブラリでエラーが出るなら
まずは同時期のバージョンで試すべき
それで上手くいったら、今度は何がエラーの原因かを突き止めて、
現行版のDMDで動くようにライブラリの改良ですね。
ライブラリの方は2.052くらいだが
まず先にphobos/druntimeのソースから差分を簡単に取れるツールか何か必要と言って
そのまま止まってるんじゃなかったか
連想配列をマルチスレッドで触っててたまに出てくる謎エラーにハマった
考えてみれば当たり前なんだけど言語組み込みの機能だからって油断してたぜ
test
C#のinとoutのようにテンプレート引数に誓約付ける方法ってありますか?
207 :
206:2014/05/24(土) 20:38:51.06 ID:i07McgVg
自己kaiketuしました
getExtどこいったん・・・
209 :
デフォルトの名無しさん:2014/05/25(日) 09:24:46.27 ID:HOw+aPzz
>"Deprecated. It will be removed in October 2012. Please use extension instead."
std.path の常用関数は 2.055 で大量に入れ替えられた
さらに2.056ではRange仕様になる
dflのリストビューでViewに値渡しても反応ないんですが、これワイの環境だけなんやろうか
エラーも何もでないんす
DFLの偉い人はまだこのスレ見てるのかな
>>213 あそこのsetter/getterはまるまるおかしかった気がする
viewのgetterが間違ってる
それ以外は問題なかったと思う
Tkd ver1以上リリースされたのか
218 :
デフォルトの名無しさん:2014/05/29(木) 17:04:46.93 ID:un1psp07
そいつ特級の基地外だから触っちゃだめよ
>>218 それはそいつが変人なだけじゃないか…
生理的に受け付けない気持ち悪さを感じた
えんがちょ
DMC の使い方で質問です
以下のコードを書いてコンパイルとリンクは問題なかったのですが
http://codepad.org/FX2lPUaw 出来上がった exe を実行すると
タイトルバーもタブの表示もどちらも文字化けします
ソースファイル (test_tabctrl.c) は BOM なしの UTF-8 で保存しています
実行したコマンドは
\dm\bin\dmc gdi32.lib comctl32.lib test_tabctrl.c
です
ちなみに BOM 付きの UTF-8 で保存して Visual C++
cl user32.lib gdi32.lib comctl32.lib test_tabctrl.c
なぜか途中で送信されてしまったので続き
Visual C++ でコンパイルとリンクした exe は文字化けしませんでした
何が間違っているのでしょうか?
#質問するスレが間違っているような気もしますが DMC の質問スレが見当たらなかったのですみません
dmcはUNICODEリテラル通らないんじゃなかったか
"Code of the Nerds" Digital Mars C/C++
でぐぐるよろし
タブコントロール流行ってるのか?
dflのListViewもう直接かえたろうと思ったけど前と変わらなかったワロス
auto style = GetWindowLong(hwnd, GWL_STYLE);
switch(style & LVS_TYPEMASK){
case LVS_ICON:
dwView=LVS_SMALLICON;
break;
case LVS_SMALLICON:
dwView=LVS_LIST;
break;
case LVS_LIST:
dwView=LVS_REPORT;
break;
case LVS_REPORT:
dwView=LVS_ICON;
break;
}
wstyle = (style & ~LVS_TYPEMASK) | dwView;
SetWindowLong(hwnd, GWL_STYLE, wstyle);
ボタン押したら順番に変わるようにしたんだけど、これそれぞれちゃんと流れてるから設定は通ってるはずなのに何も変わらんぞなもし
何を間違えてるのか全然わからないお・・・
がんがれ
超がんがれ
hwnd
ログで見たけどハンドル一緒だった
create ::DFL_ListView hwnd::221610
上記関数内
hwnd ::221610
DFLは内部で毎回決め打ちで再設定してたりする所あるから
外部から少し設定変更しただけじゃ設定上書きされてしまうことあるよね
確かに思ったように動かないな
諦めてリストビューを再作成してしまうというのはどうだろうw
誕生したときからクラスもジェネリック型も備えていた言語向けの主要ライブラリがこの出来
なzeどうしてこんなザマになってるんだ
>>235 当然のように viewの使い方書いてないな
D言語の能力をフルに活用できるGUIライブラリが欲しい
D言語はまだ「欲しいと思ったら自分で作る」段階なのです…
その代わり作ろうと思えば何だって作れるさ
Tkdがあるじゃん
あれよりはGtkDの方が良さそう
GTK は糞
そうなん?
「GTKは糞」と書いて回るやつがまだいるのか
最近フォーラムにでてたDlanguiをだれか試して欲しい
Windows版のGtkがアレなのが原因かな
Tkは小物を作るにはいいけど大きくなるとどうあがいても機能不足になる
GTKやQtならそういう心配はないはず
wxWidgetsもかなり充実してる
DFLはちょっと画像加工しようとすると厳しくなる
というわけでDWT使ってる
wxDおすすめ
wxDってまだ保守されてんの?
…あれ、少し前にもこんな流れあったな
D言語のGUIライブラリQ&Aとかあった方が良いかもね
俺には作れないけど
GUI の仕様が安定してても D の仕様がコロコロ変わるのが困る
単なるCからのラッパーなら大した影響はない
dubでそういう奴が "Dependencies:none" とか書いてるのを見たら
殴りたくなるけど
Dに将来性はあるんですか?
将来性のある言語なんてない
結果的に将来性のあった言語ならある
C++に優るもの無し
動けば勝ち
>>244 自分の環境だとDubで引っ張っても普通に動かないなぁ
>>250 どういうこと?
単にCの関数を提供するだけなら依存は要らないと思うんだけど
安かも修正汁
何より先にオープンソースの作法を学ぶ必要がある
せめてリポジトリをforkして作れば
どこを変えたのかすらわからないということにはならず
ライセンス違反も起きにくい
forkしないとPRも出来ないしね
forkしないとPRも出来ない
しね
そういえば昔Dflちょっとだけ触った時ドラッグしたファイルが異次元に消えてたな
wxDおすすめ
wxDってまだ保守されてんの?
githubのwxDに数日前更新入ってるね
>>263 自分の場合、試しにドロップしたファイルが そのソースファイルだったから、
出来たと思ったアプリが、完成と同時に消滅したw
ホントDのリンク関連は地獄だぜ
Phobosと自前のコードでそれぞれリンカを使い分ける必要に迫られてる
gcさんがアプリ終了する前に働いてくれないからcライブラリからメモリリーク警告出まくるんだけどニートなの?
C関係の、メモリ管理をちゃんとお願いしたか?
scope(exit) core.memory.GC.collect();
mainに入れとけば動くかも
なるほど
終了時にいくらメモリリークしたっていいじゃない
どうせOSが回収する
まあそうなんだけど
余計な警告出なくなるだけでもありがたい
毎回出る余計な警告に混じって出てくる重要な警告読み飛ばすもんな
たまにLDC使うと凄く速くてびっくりするな
というかDMDの最適化が糞すぎるのか
関数が、内部で利用してるテンプレートとかインターフェースの実装如何では
pureとか@safeとかnothrowになれるのだが、という時ってどうしてる?
諦めるしかないんかな。
あ、いや、インターフェースは諦めないとダメか。
テンプレートでRange周りとか、要素型の実装次第で修飾変わってくることがわりとあると思うんだけど、
なんか上手い書き方(もしくは将来的に可能になりそうとか)知ってる人いたら教えてください。
@safe, nothrow は外から握りつぶせるはず…あまりオススメしないが
pureは呼び出してる奴に属性をつけるか中身だけをコピーしてくるか
そんなとこじゃない
ずいぶん前から言われてた気がするけどまだ解決してなかったのね
それにしても9rnsr氏は貢献し過ぎである
Dconf2014のスライドは公開されるんだろうか
-profileでビルドすると実行速度が100倍ぐらい(1秒で終わる処理が1分以上)遅くなるんですけど、
こういうものなんでしょうか?
そういうもの
必要な時以外は使っちゃダメ
Gtkd の Windows版を試したらかなりマトモでおどろいた!
Windows版は知らんが、Linuxで使っている限り不自由はしないな。
LDCは前からあるコンパイラだし、記事の内容も色々とおかしいし…
やっぱりか
2.066-b1か
297 :
デフォルトの名無しさん:2014/07/12(土) 00:43:56.30 ID:oQyWP5nz
話題待ちあげ
日本で生まれ、世界が育てたdentsu
kaso
300 :
デフォルトの名無しさん:2014/07/19(土) 00:23:47.12 ID:Bl44Zq8q
何故こんなに衰退したのか
いやほんと。比較論者さえ絡んでこなくなって久しい
世間はc++1yやらswiftやらに盛り上がってるとかなんなんだろうね
新規ユーザを取り込めてるのか怪しいし既存ユーザも使い続けてるのか怪しい
なんか作ろうぜ
海外では比較的に順調っぽいのに日本では流行らないのん
単に2chが衰退しただけじゃ…
RT >302
RT >305
晒すほどの書き込みかなそれ
俺だって時には広告がブラジャーだらけになって慌てることもある
普通だよ普通
2chの勢いがないのはいいとして、D日本語サイトの更新がないのがこまる
悲しいことに_argumentsと_argptrを使って
std.string.formatと同じフォーマットをやらなきゃならないはめになってるんだけど
そもそもこれできるの?無理な気がしてきた
と書いたところでstd.format.doFormatみたいなのを見かけてできる気がしてきた
でもこれドキュメントに載ってないのか。使うと寿命が縮むだろうか
// This stuff has been removed from the docs and is planned for deprecation.
と書かれたのが4年前か
ダメになっても自作で同じインタフェース作れるなら困らない
廃止になってもコピペして使い続けるのは自由
プログラミング言語DのP.212で NVI をサポートしてると書いてあり、
サンプルコードで interface 中に private フィールドが出てくるんだが、
実際に継承して使うとエラーになる。
これは
・本の間違い
・dmdのバグ
のどちらなんだ?
一応ググったら過去ログが引っかかって、当時(2007/7)と変わっていない
ようなので前者かと思うが、正誤表には無かったので気になった。
>>317 interface に private はないと思うよ
TDPLはまだ実装されてない機能も載ってるとか何とか
2.065では動いてるけど
319 :
316:2014/07/20(日) 19:05:32.68 ID:vy4VEVQs
privateにすると非仮想だよね・・・
そうゆうのは抽象クラスでやるもんじゃないのかぁ
そういえばDのNVIはまだ一回も使ったこと無いな
もう実装されてたのか。バグりまくってるけど
protectedでいいじゃない 何がしたいのかわからん
325 :
316:2014/07/21(月) 03:43:58.80 ID:lh3+Iy3N
本にあったけど書いてみて通らなかったからコードをちょっと短くして聞いてみたのよ
そのまま書こうにも実行できるコードじゃなかったし
特に private に拘りがあったわけじゃないんだ
自分の書き方が間違っているだけでコンパイルが通らないなら、
それを聞きたいと思った
他にもこのコードが今実行できないだけで、将来実行できるのかどうかとか
それらが知りたかった 言葉足らずだったスマン
>320
そうだな
これがコンパイル出来るなら interface の private は特別扱いするのかと思った
>321
状態がないなら(ないから)抽象クラスより良いのではないかと思ったんだ
他にクラスを継承したい場合でも interface なら共に継承可能だし
>324
そうします
void foo(lazy Object exp)
in { assert(exp); }
body { }
328 :
デフォルトの名無しさん:2014/07/25(金) 00:04:09.12 ID:cQJQccdW
グロ中尉
こんにちはOcamlをやってたんだですが
いろんな理由があって見限ってD言語に逃げてきました
VisualD最高ですね
GOと競合してるらしいですが、GoはGoogle臭がキツすぎてまともに相手にする企業はいないと思いますね
はあそうですか
GoogleがMSくらいおとなしくなったらC#くらい使われるようになるかもよ
個人的にはいくらなんでも名前がダサすぎると思うんだが…
せめて語尾に!くらいつけようぜ
GoとDが競合してるように見える人、多分プログラマーじゃないよな
そもそもGoは何と競合するんだ?
Androidアプリ用なのか?
まあ理由はともかく、Dを使う人が増えるのはいいこと
私は昔、D言語のことが大好きでした。D言語はよくできたC++のようなものです。
またD1については低水準化したPythonという印象でした。要するにPythonナイズしたCといったところです。
本当にすばらしいのですよ。コードが読みやすいのでアルゴリズムの設計に集中でき、開発スピードが上がります。
それに、必要な時に低水準な処理を制御することができます。
D1の開発系として分離されたD2は、著名なC++プログラマであるアンドレイ・アレキサンドレスクによって革新的な修正を加えられ、
C++に負けないくらい複雑になってしまいました。これはD2の並行処理能力をより高めるためでしたが、コミュニティの一部を失望させることになりました。
D2はもはや簡潔な言語ではなく、テストされていない機能を多く含んだ実験的な言語になってしまったようです。
それでもまだ私はDが好きですが、同じように複雑な言語であるC++が先行して普及していることを考えると、Dを使うべき利点は薄れていると思います。
またGoがDにとって代わったのかな、とも思います。
Dの最初の開発者であるウォルターやアンドレイが、非常にクールな機能を次から次へと実装したとしても、Googleを打ち負かすことはできないのでしょう。
ひょっとしたらあなたも、私と同じようにDを気に入るかもしれません。
でも、Dに輝かしい未来があるようには思えないのです。
今まで通りC++を使い続けるか、より充実したネイティブ並行処理がサポートされているGoに乗り換えるべきでしょう。
Dを使うとしたら、次のようなケースでしょうか。
こんな酷い評をもとにみんなDとGoを並べてるの
競合してないよな
相手にされてないという意味でだけど
マスコットのキモさが競合してるだろ
339 :
329:2014/07/26(土) 23:53:51.31 ID:ThsY5Wcy
Dと競合するためには破壊的変更がないとなあ。
329だけど、2.066-b5 で直ってたっthx!
Dと競合するのはRustでは?
b5は連想配列のgetが盛大にバグってる
2.066βは期待を裏切らなくてよい
342 :
329:2014/07/27(日) 01:29:29.61 ID:fdzY+58f
>>341 まじか。もう入れちまったお
これはヨナベが捗りますなぁ
>>342 string[string]でget()使うとなぜかconst(char)[]が返ってくるみたいなバグだから
コンパイル通ればたぶん大丈夫よん
Dのバージョン切り替えなんてフォルダをリネームするだけっしょ
ダウンロードさえしとけば
昔のバージョンにいつでも戻れるのは良い点
HDDが容量不足になったときに過去のコンパイラを消すだけで10GBくらい稼げる
dmdはいいやつだ
>>343 大丈夫だった!ありがとう!
>>344 バグ回避の為のコード消しちゃったから、そこがメンドくて(^_^)>
349 :
デフォルトの名無しさん:2014/07/28(月) 23:13:03.08 ID:2L1UoTME
>>344 win7のシンボリックリンクは知名度低いといってもPGは知ってなきゃダメだろ
>>350 の環境がWindows+x64+dmdであると仮定して書くんだけど、
1. dmd は-m64でVCのリンカを参照すること。
2. だからx64ではCOFFのライブラリをそのまま使えること。
3. objconvはインポートライブラリに対しては使えないこと。
4. .exeや.dllにはCOFFとかOMFとか関係ないから、objconvに渡しても無意味であること。
などを信じて、俺は幸せなD言語ライフを送っています。
まぁVCやgccで作ったCOFF形式のlibファイルやaファイルを
それでOMFに変換してdmdで(というかOPTLINKで)使おうとしても、
大抵エラー吐くんだけどな。
だからdmdは64bit版を使おう楽だから。
SEHに対応してくれたら本気出す
blockerとは何だったのか
CでReleaseビルドしたlibをリンクするとUTFExceptionで落ちるんだけど
なにかやらないとだめかえ?
356 :
355:2014/07/31(木) 21:56:50.71 ID:4CmHinpe
自己解決した
VisualDのソリューションのパスに日本語が入ってるかららしい・・・
357 :
355:2014/07/31(木) 22:06:55.47 ID:4CmHinpe
勘違いだった。関係無かった・・・
文字列の末尾の0
Unicodeの変換忘れ
GCに乗ったメモリを渡して途中で解放された
そもそもどこで落ちてるのかわからんのかえ
360 :
355:2014/08/01(金) 01:06:46.17 ID:CKCibHp+
自分でコマンドライン書いたらビルドできたからVisualDのバグかなぁ。
ビルド中にVisualDそのものがstd.utf.UTFExceptionのエラーダイアログ出す。
std.utf.utf.dの1109行目らしい。
Releaseビルドされてるlibをリンクするとダメらしい。
つーか、なんでビルド中にDの処理がはしるのかわけわかめ。
libファイルの中身をDで読み込んでるのか?
いみわからんからやめさせられないか。
361 :
デフォルトの名無しさん:2014/08/01(金) 03:03:07.49 ID:Mjd2jJg4
テンプレートとかmixinトカ
float x = float.nan;
assert(x != float.nan);
writeln(x);
実行結果:nan
assertにひっかからないんですけど、どういうことなんでしょうか?
std.math.isNaN
浮動小数点数の比較は闇の入り口やで
>>365 なるほど、演算子で比較しちゃいけないのか。
-inf -0 +0 +inf NaN 計算誤差
こんなの全部いちいちやってらんないぜ!
370 :
デフォルトの名無しさん:2014/08/03(日) 08:49:34.72 ID:bPGWsjSY
Dって未来あるの?
現在も過去もアレなので未来しかない
なるほど
一理ある
未来に生きるとはこのことか
std.xmlの代わりはよ
未来に向かって脱出するとしよう
Derelict3にSDL2含まれてる
そういう話だったのか……?
>>377-379 正直すまんかった
各ソースの中に boost license って書いてあるな
トップからわかるようにしてくれっ中年
383 :
デフォルトの名無しさん:2014/08/09(土) 21:21:35.41 ID:vPLnEWad
ゲームのソースくれさい
10年前のやつでよければ
コンパイルが通るまでにどれくらいかかるのか
D言語の開発陣が未だに弄り続けてるD1があるじゃないか
今でも
>>363のページから10年前のdmdが入手可能
388 :
デフォルトの名無しさん:2014/08/13(水) 00:44:24.02 ID:zdnki/wD
夏休みなのに話題なしとかやばくね?
389 :
デフォルトの名無しさん:2014/08/13(水) 01:16:01.70 ID:1+Vqh2e4
夏休みがある種族にDerはいるのだろうか
企業戦士御用達言語
学生時代にちょっとかぶれて
オトナになったら離れていくものだろ
夏休みになったのに話題が無いよって話なのに
Hara氏のプルリク(
https://github.com/D-Programming-Language/dlang.org/pull/616/files)から2.066のChangelogを拾ってきたよ
# Compiler Changes
- -w now warns about unused return value of a strongly pure nothrow function call.
- -noboundscheck has been deprecated in favor of boundscheck=[on|safeonly|off].
- -vgc was added to list GC allocation code positions in the code.
- -vcolumns was added to display column numbers in error messages.
- -color was added to make console output colored.
# Language Changes
- @nogc attribute was added.
- extern (C++, namespace) was added.
- Operator overloading feature for multi-dimensional slicing was added.
- __traits(getFunctionAttributes) was added.
- Support template parameter deduction with arguments with narrowing conversion.
- Read-Modify-Write operations on shared variables are now deprecated.
- Support uniform construction syntax for built-in scalar types.
# Library Changes
- Duration.get and its wrappers have been deprecated in favor of the new Duration.split.
- Some built-in type properties has been replaced with library functions.
- Associative array keys now require equality instead of order comparison.
日本語でまとめて
英語のまま読む練習しよう、後々絶対に役に立つから
ついに@nogcがきたか
397 :
デフォルトの名無しさん:2014/08/13(水) 17:41:52.44 ID:1+Vqh2e4
#までは読めた
拾ってきたよまで読めた
リンク先を見に行って Files changed を開けば
具体例までちゃんと書いてある
それ書かれるようになったの結構最近だった気がするけど一目でわかっていいよね
やっぱりDのコードは全世界共通語なんだな
>>393 >extern (C++, namespace) was added.
これ凄くないか?
凄いというか怖い
短冊にお願いを書くと叶えてもらえるスレはここですか?
extern (C++, boost.numeric.ublas) void prod() {}
void main()
{
prod();
boost.numeric.prod();
boost.numeric.ublas.prod();
boost.prod();
boost.ublas.prod();
boost.ublas.prod();
numeric.prod();
numeric.ublas.prod();
ublas.prod();
}
C++テンプレートのexternマダー?
まずABIを定義したまえ
あれ、ABIじゃなくて htod みたいな変換で吸収して終わりじゃないのん
>>393 > extern (C++, namespace) was added.
ちょおま クソC++を実装するようなもんだからやらねっていってたじゃねーか!
> @nogc
バグりそう
> Read-Modify-Write operations on shared variables are now deprecated
なんでなん?自分でガードしろってこと?
> -color
Sugeeeeeeeeeeeeeee
shared と __gshared の違いがよく分からなくなってきた
服を着ているのと全裸という大きな違いがある
>>409 > バグりそう
どんな機能を想像してるのか知らんが、
pureとか@safeと同じで@nogcが付いてる部分でGCを使う操作をするとコンパイルエラーになるってだけだ
> なんでなん?自分でガードしろってこと?
atomicOp使えってこと
shared の同期は単体のReadまたはWriteだけで
Read-Modify-Write はアトミックにして対処し
それ以上の処理はsynchronized使えってことなのかな
TLSは内部で完結するけど
こっちもやろうとすると
見えないところでデッドロックまで最悪ありうるのかな
COFFサポートは2.067に入るのかな
何の話かと思ったら既にマージされたのか
内容にかかわらず reject されるという予想だったのだがw
うぉるたんはまだ druntime側の対応がついてないから不十分だと言ってる
…何がたりないんだっけ
2.066
2.066 リリースおめ
Version D 2.066 August 18, 2014
Compiler Changes
1. -w now warns about an unused return value of a strongly pure nothrow function call.
2. -noboundscheck has been deprecated in favor of boundscheck=[on|safeonly|off].
3. -vgc was added to list GC allocation code positions in the code.
4. -vcolumns was added to display column numbers in error messages.
5. -color was added to make console output colored.
Language Changes
1. @nogc attribute was added.
2. extern (C++, namespace) was added.
3. Operator overloading for multi-dimensional slicing was added.
4. __traits(getFunctionAttributes) was added.
5. Support template parameter deduction for arguments with a narrowing conversion.
6. Read-Modify-Write operations on shared variables are now deprecated.
7. Support uniform construction syntax for built-in scalar types.
Library Changes
1. Duration.get and its wrappers have been deprecated in favor of the new Duration.split.
2. Some built-in type properties have been replaced with library functions.
3. Associative array keys now require equality instead of order comparison.
http://dlang.org/changelog.html#list2066
難産だったな
質問です
import std.stdio;
import std.datetime;
int main(string[] args)
{
uint t = 1408960000;
writeln(SysTime(unixTimeToStdTime(t)).toISOExtString());
writeln(SysTime(t * 1000 * 1000 * 10L).toISOExtString());
writeln(SysTime(cast(ulong)t * 1000 * 1000 * 10L).toISOExtString());
return 0;
}
2014-08-25T18:46:40
0001-01-01T09:04:33.514496
0045-08-25T18:46:40
と表示されます
1行目以外が正しい値にならないのはいいのですが、
2行目と3行目の値が全然違うのはそういうもんなんですか?
Cみたいに演算時に整数の拡張は自動では行われないのですか?
>>421 UNIX時間は、原点をUTC西暦1970年1月1日0時とする、秒単位。
一方、SysTimeは、原点をUTC西暦元年1月1日0時とする、ヘクトナノ秒単位(100ns)の(たぶん符号あり)64bit整数
時間の単位を保持した型からは自動変換されるけど、生の数値はそうではないので
適切に変換関数使うなりしないといけないらしい
http://dlang.org/intro-to-datetime.html 自分はstd.datetimeをまだ一度も使ったことのないですが…w
ああやっぱりうまく伝わらなかったみたいです
ヘクトナノ秒(hnsecs)であることとepochが違うことは理解してます
なので1000*1000*10Lを掛けても値が3つ同じにならないのも理解してます
気にしているのは
1行目≠2行目とか1行目≠3行目とかの話ではなくて
2行目≠3行目になっていることです
>>423 挙動から推測すると
2行目はlong型で、100ns単位として扱われている
3行目はulong型で、SysTimeの内部型より大きな数の型で、秒単位として扱われてる
という事みたいね
この辺の仕様がどうなってるのか何所に書かれてるか分からないけど
t * 1000 <- オーバーフロー
cast(ulong)t * 1000 <- セーフ
ここのことじゃろ
気になるならカッコを使えばいい
たぶんそのへんのことは深く考えられてない
Cと違うやんけ! とごねて通じるかどうか…
>気になるならカッコを使えばいい
間違えた
プログラマが明示的に指示すればいい
>>425 トン
writeln(SysTime(t * 1000L * 1000 * 10).toISOExtString());
これなら3行目と同じになったわ
確かにCと違うぞゴルァってのは筋違いですね
でもちょっと違和感
pragma(msg, typeof(t * 1000 * 1000 * 10L));
pragma(msg, typeof(cast(ulong)t * 1000 * 1000 * 10L));
uintからlongへの整数昇格は暗黙でされる
ulongからlongへの降格は明示しないといけない
コンパイル時に定数として評価されずに
実行時に計算してるってことかな
>>428 逆のような気がするんです
D言語では uintは符号なし32bit整数で、longは符号あり64bit整数だよ
pragma(msg, typeof(unixTimeToStdTime(t)));
pragma(msg, typeof(t * 1000 * 1000 * 10L));
pragma(msg, typeof(t * 1000L * 1000 * 10));
pragma(msg, typeof(cast(ulong)t * 1000 * 1000 * 10L));
assert(t * 1000 * 1000 * 10L == t * 1000L * 1000 * 10);
なるほど
すごく勉強になりました
ああ逆ってそういう事か理解しましたすんません
t はコンパイル時に読めないから、実行時にuintのまま計算進めて
t * 1000 * 1000 * 10L ==> 2735144960
t * 1000L * 1000 * 10 ==> 14089600000000000
assert(1000 * 1000 * 10L == 1000L * 1000 * 10); // success
assert(t * 1000 * 1000 * 10L == t * 1000L * 1000 * 10); // failure
後半はあきらかに定数なのでコンパイル時にlongとして見てくれてれば
どっちでも問題なくなる気がするんだけど
実行時に逐次計算する仕様になってるのは
いろいろ事情があってのことだと思うので
Dはそういうものだと理解しておきます
434 :
デフォルトの名無しさん:2014/08/25(月) 20:12:02.24 ID:G47y4NKn
定数部分を ( ) で括るとlongになるね
*が左結合なので
gccなんかには演算子の優先順位を無視して最適化するオプションもあるけど
あくまで最適化なので、型を変えるような真似まではしないと思
>>435 uint t = 1408960000;
writeln(SysTime(1000 * 1000 * 10L * t).toISOExtString()); // safe
writeln(SysTime(1000L * 1000 * 10 * t).toISOExtString()); // safe
writeln(SysTime(unixTimeToStdTime(t)).toISOExtString()); // right
writeln(SysTime(t * 1000 * 1000 * 10L).toISOExtString()); // overflow
writeln(SysTime(t * 1000L * 1000 * 10).toISOExtString()); // safe
writeln(SysTime(cast(ulong)t * 1000 * 1000 * 10L).toISOExtString()); // safe
assert(1000 * 1000 * 10L == 1000L * 1000 * 10); // success
assert(1000 * 1000 * 10L * t == t * 1000L * 1000 * 10); // success
assert(t * 1000 * 1000 * 10L == t * 1000L * 1000 * 10); // failure
ほんとうにありがとうございました
writeln(SysTime(1000 * 1000 * 10 * t).toISOExtString()); // overflow
Cでも同じだっけ
Cって64bitに暗黙キャストとかされたっけ?
コンテキストの左辺が64bitだったら一応最終結果だけ暗黙変換はされるだろうけど
計算途中ではされない気がするんだけど
>>436 ねーよ。-ffloat-store か何かを勘違いしてるだろ。
あと、優先順位は計算順じゃない。カッコで優先させても、
a + b + (c + d) という式で、a + b と c + d の、どちらを先に計算するかは
決まらない。
>>440 -fno-protect-parensの説明読んでみろ
次は2.066.1か
.1 リリースは regression修正やで
2.065.1はどこ行った…
次の目玉はパッケージ・モジュール周りの古代バグ退治になるんじゃないかな
mono-d更新したらxamarinでプロジェクトが読み込めなくなったわ
ふざけんな
D言語プラグインが無効になってただけだった
ふざけんな
公式フォーラムがサツバツとしておる……
闘争こそが言語を進化させるのだ!
Dで書いてるとC++でも良くね?ってシーンに出くわす
450 :
デフォルトの名無しさん:2014/09/01(月) 15:22:18.01 ID:MLXyucsm
じゃあC++でもいいのでは
D is retired
452 :
デフォルトの名無しさん:2014/09/01(月) 19:21:20.80 ID:HFXNgtth
>>452 必要ない。滅ぶなら滅びればいい。
抗う必要もない。0か1かだ。
政治系の単語で常時検索でもかけてんのか
>>449 話戻すけど、以前にdmdのソース読んだ時に感じたな。
D言語の理念が反映されてるC++は結構イケるな、と。
D言語の理念を反映し似非GCを搭載したC++
458 :
デフォルトの名無しさん:2014/09/02(火) 02:30:35.86 ID:wdU1cIJ3
auto hoge = new Hoge(fuga);
scope(exit) delete hoge;
これって絶対デストラクタ呼ばれる?
459 :
デフォルトの名無しさん:2014/09/02(火) 04:10:30.46 ID:0CNFOIhV
>>458 呼ばれるはず。でもなんか、「終了処理は~thisに書かずに普通の関数に書いて、scope(exit)でそっち呼びましょう。」みたいな記事見たことある気がする。
ま、StorageClassのscope使ってるけどおれは。
明示的にdeleteしたりscope変数(あるいはstd.typecons.scoped)にするなら大丈夫でしょ
GCに任せる場合はタイミングを制御できないから普通の関数でやれってことだと思う
複数の参照がある場合、deleteすると大変なことになるし
なるほど今思いついたけど
class Cをprivateにしながら
alias scoped!Cを公開するモジュールを書けば良いのか
alias C = scoped!C_;
auto c = C("foo");
構造体っぽく使えて良さそう
>>455 何か前も似たようなことがあったな
Dの受け入れ先の話で「民主党に売りつけようぜ」ってレスの直後に
政治コピペが貼られてたの
政治コピペは昔からbotだよ
郵政民営化選挙の時の板関係ないAA爆撃とか酷かった
>>462 C++やってた人にとって直感的で良さそうですね
467 :
デフォルトの名無しさん:2014/09/05(金) 23:17:34.18 ID:Mt1E1+r6
dubってdmd専用なんですかね
というかdmdとgdcどっちを使うべきなんだろう
win なら dmd
*nix なら ldc
あれ、ldcってデバッガ使えたっけ?
win以外でD使う理由薄いな
winはネイティブはC++しか実質ないようなもんなんだぜ
>>466 immutableってDが最初だったのな。
>>467 DMD,LDC,GDCの全てに対応してるよ
> というかdmdとgdcどっちを使うべきなんだろう
DMDは最新の機能が使えるけど、最適化が悲惨
LDC,GDCは少しバージョンが古いけど並の最適化をしてくれる
ldc,gdcはgccbuiltinが使える
473 :
デフォルトの名無しさん:2014/09/06(土) 11:28:13.71 ID:tjxWMme1
D言語でjavascriptみたいなdomでhtmlを読み込むのどーやるの?
DのコンパイラでLLVMの中間言語ゲロってくれるのはないの?
477 :
デフォルトの名無しさん:2014/09/06(土) 13:00:39.91 ID:qpbrw9LU
かわいい
480 :
デフォルトの名無しさん:2014/09/06(土) 16:06:06.84 ID:YILH6ewV
こんなおっさん達のレスでもかわいいのに
Dのマスコットときたら・・・おっと誰か来たようだ
なんでや!マスコットかわいいやろ!
あれ?アイツの名前なんだっけ?
plan9
グロ中尉
一番下BETA思い出した
Dの悪口言うとD言語erの集団が例のポーズで迫ってくるぞとかいうつぶやきを見たことあるけど
ポーズ要素がある分D-manの圧勝だな
D言語のマスコットがD-manならC言語のマスコットは・・・
グロ中尉
491 :
デフォルトの名無しさん:2014/09/07(日) 18:13:57.86 ID:wfr3bgBU
じゃあ改訂すればいいじゃん
>>490 直してくれるんだったら、向こうの人たちも大喜びだよ。
あそこはWikipediaに比べたら過疎ってるからね。
>>491>>492 全体的に駄目な感じだから、相当書き直す必要があるんだよな
それに出来の良さそうなD言語の解説はネット上にいくつもあるから、モチベーションがなぁ
暇な人がやってくれんかね
にわかDerの俺としてはぜひ頑張ってもらいたい
いろいろ解説してくれてるところあるけど古かったりまだ未完だったりなんだよなあ
>>493 書き直すと言わずに、別に1から作り直してもいいんだし、
Wikibooksの英語版から翻訳して書き直すという方法もあるよ。
ただし、Wikipedia系統のサイトなので著作権と履歴関係は要注意ではある。
執筆者なりのユーモアなのか皮肉みたいなのがきかせてあるけどこういうのって入れなきゃダメなの?
>>496 入れる必要はないと思う。
実用的でわかりやすい方がより多くの人に好まれるはず。
日本語のDの解説って何故か「変数とは」「関数とは」とかから始まるのが多いね
ライブラリの使い方の解説がもっと欲しい
499 :
デフォルトの名無しさん:2014/09/10(水) 18:32:25.93 ID:dgDp4zwn
いつからライブラリがあると錯覚してた?
海外のを探してみても、D言語自体に関する解説ばかりなんだなー
Phobosの解説ってけっこう有用だと思うんだが、需要がないのか
Phobosのソースのunittestも見てあげてね
逆引きwiki を編集する権利をやろう
504 :
デフォルトの名無しさん:2014/09/10(水) 20:37:29.58 ID:D+hJ4kZ1
自分もPhobosの使い方知りたいときはunittest見てるなあ
プログラマの共通言語はプログラミング言語
文字列でswitchするコード、実行時にバイナリサーチ掛けられてるのか……
ハッシュかなんかで比較してるのかと思ってた
むかしD言語はシステム管理ツールを作るのによいって触れ込みだったけど
何を作れば便利になるのか思いつかないまま早数年
メモリリークの心配が少ないから
デーモンとか安心して作れるという幻想
D言語製のデーモンはいくつか稼働させてるなぁ
>>500 需要はあるはずだけど、書ける余力がある人が少ないんだと思うよ。
511 :
デフォルトの名無しさん:2014/09/13(土) 07:09:22.85 ID:av6vptcA
言語仕様をどんどん変えていく××××や××はみんな実用的だと思ってるのに
それらより控え目な(今のところ)仕様変更しかしてないDが(2014年現在)、仕様が不安定で非実用的だ〜とか言われる
>>512 XXXXのほうは、基本機構作るのに10年単位かかってるんだからベースは安定している。
XXのほうはXXXXXXがベースだから基本は安定している。
たぶん別の言語をイメージしてるな……
あら、C++には1字足りなかった。Orz
C#のほうは確かデルファイがベース。
うーむ、会話とはこうも難しいものか。。。
伏せ字にしなけりゃ難しくならなかったはずだろw
ruby と js
あうち。Orz
ユーザ数の違いじゃね
ユーザの多い言語が破壊的変更をしたところで非実用的とは言われない
マイナーバージョンでちまちま断続的に破壊的変更入れてるから外から見ると永遠のβ版に見える
RAD言語とシステムプログラミングゲンゴの違いだよ
マイナーバージョンというか、単にD2の66個目の(バグ修正限定ではない)リリースってだけだからな
まあ、リリースの仕方が悪いのはあるよね
開発リポジトリのある時点での単なるスナップショットに、リリース直前までのバグ修正を乗せただけという……
jsってDほど破壊的変更あるか?
そんなことしたらbreak the webって怒られると思うが
言語が変わっても実装系が悪さしなければ問題ない
それに もともと HTMLはユルさが売り
>言語が変わっても実装系が悪さしなければ問題ない
JavaScriptで実際に問題になってるのは、むしろ実装の変更なんだけどね
ブラウザの話なら
サイト側は変わらない一方
インストールされたブラウザがどんどん勝手にアップグレードされるという致命的な問題はあるな
勝手にアップロードされるOSもあるけどな
そりゃウイルスが悪さしてるんだべ
OS アップロードしてどうするω
GPLだから余裕
D言語erの知能が伺えるスレ
割れか?
日本でのD言語の盛り上がりは過ぎたけど、海外では着々と広まってる感じ
COBOLやFORTRANより上かよすげぇな
536 :
デフォルトの名無しさん:2014/09/21(日) 10:22:27.11 ID:Rse853Cr
COBOLやFORTRANの人らはネットに出て来ないからな
20位のラインが少し上がったような…なんか集計方法が変わったのか
その規則はダメダメ
小文字1単語だとキーワードとぶつかることが多いから大文字を使う
with(Enum) 使うときも不便だし
少し前に phobos に提出された lexer モジュールが全部小文字に書き直しを命じられてるのを見て
かなりムカついた
トークン名がキーワードと丸かぶりになってて全滅、頭悪すぎ
キーワードとぶつかったらアンダーバーを後に付けろ、ってルールを使わせる為の規則だな
かといって、メンバ名が大文字スタートなのも気持ち悪いから自分はその規則通りにやってるけど
541 :
デフォルトの名無しさん:2014/09/25(木) 06:49:51.37 ID:7DgNS8tq
Javaみたいで恰好悪いしね
>トークン名がキーワードと丸かぶりになってて全滅、頭悪すぎ
と
>キーワードとぶつかったらアンダーバーを後に付けろ、ってルールを使わせる為の規則だな
をあわせて考えると
メンバ名ごとにアンダーバーがあったりなかったりで無意味に不揃いになるか
被る可能性のある識別子群すべてを事前察知してアンダーバーつけておくことになるか
って感じになりそうだけどどうなんだろう
Phobosだとこうなってるね
enum FunctionAttribute : uint
{
none = 0,
pure_ = 1 << 0,
nothrow_ = 1 << 1,
ref_ = 1 << 2,
property = 1 << 3,
trusted = 1 << 4,
safe = 1 << 5,
nogc = 1 << 6,
system = 1 << 7,
const_ = 1 << 8,
immutable_ = 1 << 9,
inout_ = 1 << 10,
shared_ = 1 << 11,
}
仕様変更で safe とか trusted とか property とか予約語にされそう
その前に一度属性システムの見直しが入るはず
適当なサフィックス付けるのはダメなん?
コンパイラがサフィックスに対するチェックしてくれるならそれでも良いけど
気持ち悪がられそう
慣れてさえしまえば小文字中心でタイプも効率的になるから多産向けなスタイルだな
enum値はenum型のインスタンスと捉えれば小文字もそう不自然ではない
識別子に大文字を使う言語は生産性が低い……?
550 :
デフォルトの名無しさん:2014/09/27(土) 00:34:54.89 ID:ZCazcpui
D言語の欠点は、やはりWindowsではUTF-8では使い勝手が悪いことだな。
D言語専用のWindowsコマンドプロンプトを作ってフリーで公開してくれたらこの欠点も克服できるな。
俺が言うD言語専用のWindowsコマンドプロンプトとは、プログラムの実行中は文字コードUTF-8で標準出力を
して、終了してコマンドの入力行は、UTF-16リトルエンディアンで標準出力をするコマンドプロンプトだ。
つまり、プログラムの実行結果の表示も、コマンドの入力行のカレントディレクトリの表示も、日本語
文字を化けさせずに正常に表示する特殊なコマンドプロンプトのことだ。
コンソールのストリームには、現在のコンソールの文字コードに合わせたTextIOラッパーを被せて欲しいなあ。標準で。
Python3だと、ラッパー差し替えたり、ラッパーを迂回してバイナリデータを流し込む事もできて便利なんだけど
Hello,World の表示は簡単だけど、「こんにちは世界」の表示でつまずくのなんとかしないと…
>>550 実際やってみるとUnicodeとシステムエンコードが混ざって出てきて
まずそこから直す羽目になる
nkfか何かを間にかませて 一行毎に処理させるべき
windowsの文字コードであれなのってd言語の欠点じゃなくね
Windowsってコンソールの文字コードを切り替える手段すら無いのか…よく使ってられるな
いや、確か手段はあったよな?
システムの文字コードが固定されてるのが原因か
981 デフォルトの名無しさん [sage] 2014/04/15(火) 13:13:11.98 ID:q9fQ+t/g Be:
ネットにはデマ情報がいっぱい残ってるので
正しい情報をメモ
cmd.exe
UTF-8
chcp 65001
cmd.exe のショートカット リンク先 %SystemRoot%\system32\cmd.exe /c start "UTF-8" cmd
このショートカットを起動してプロパティからフォントの設定(※ボールドフォントにチェックを入れる)
レジストリ \\HKEY_CURRENT_USER\Console\UTF-8 に
FaceName REG_SZ 適当
FontWeight REG_DWORD 0x0190
FontSize REG_DWORD 0x00120000
CodePage REG_DWORD 65001
http://nazochu.blogspot.jp/2011/08/blog-post_26.html
557 :
デフォルトの名無しさん:2014/09/27(土) 10:32:51.43 ID:Tol0KhbM
それでも時々文字化けしたり
コンソール上にゴミが残ったり
UTF-8 で入力ができなかったり
cmd.exe はバグだらけ
置き換えられるのないかな
mintty あたりが有望?
Windowsに限らず、POSIXでもLANGがUTF-8以外の人にも使い勝手は悪いぞ……
ただ、D言語がサボってる間にOSのほうがほぼUTF-8で統一されちゃったというだけで
言語仕様が内部文字列がUTF-8と決めている以上は
あらゆる入出力(ターミナル、ファイル名、ファイルの中身、環境変数、コマンドライン引数、etc)の際にUTF-8ではない環境に対応するのは
標準ライブラリたるPhobosでやるべきで、それをサボってるわけだから言語の欠陥だよ
「今は」UTF-8ではない環境がWindowsぐらいしか残ってないなんてのは言い訳にならん、D言語が登場した時期はそうでもなかったし
上にもあるけどPythonやJavaなんかはちゃんとやってくれてる
OCamlなんかもサボってる系(文字列Latin-1なのに何も変換してない)
余計な変換するくらいなら
なにもしないってのが一番良い
という意見もある
>>560 それはCSIな連中の言うことで、C/C++やRubyの言うことだ
文字列を具体的にコレと決めている言語の言うことではない
D言語の登場した時期の状況がどう関係してるのかは自分にはちょっと分からないけど、確かに現状はよろしくないな
フォーラムでは話題にならないし困ってる人自体は少ないみたいだが
SJISだけならともかくロケール読んで適切な変換を、とか考えだすとPhobosとランタイムにそれなりに手を加えなくちゃいけない
>あらゆる入出力
Windowsはよく知らんが、cmd.exeでの入出力がSJISってだけで、ファイル名とか環境変数はUnicodeで扱ってなかったっけ?
あと、ファイルの中身のエンコーディングは環境によって決まる訳じゃないのでどうしようもない気がする
>>562 D言語が登場した2000年前後は、LinuxでもまだEUC-JPな環境も多かったからね、向こうだとLatin-1や9も使われてただろう
LANG=UTF_8前提というのはちょっと横暴だった、時代が追いついたからいいけど
>>563 PhobosもWなAPIを呼んでくれてる部分はちゃんと動くよ、そうじゃない部分も残ってるし
このちゃんと変換してくれてる部分と無変換な部分が「混じってる」状態が一番タチ悪いとも言えるけど
ファイルの中身は、Fileのコンストラクタにオプションを追加して、デフォルトは環境による(WindowsではSJIS)がUTF-8強制もできる、ぐらいでいいと思う
(それこそPythonやJavaは任意の文字コードを変換できるけど)
バイナリはrawRead/rawWrite使えば無変換、ということでいいし
あとstdin/stdoutは中でisattyしてコンソールの時はRead/WriteConsoleOutputWを使うぐらいはしないと
File構造体を弄るのは無理だろうなぁ
seekとかとの整合性が壊れるんじゃないか
CのFILEじゃあるまいしそれくらいできるんじゃないの?
変換が必要なのはファイルじゃなくてストリーム
そうでなければバイナリのまま好きにするがよいよいよい
>>565 ところが、VisualC++のwfopenにはUTF-8やUTF-16のファイルを開くオプションがある
dmdが使ってるDigitalMars C++のランタイムは知らん
classで定義されたクラスはscopedでスタック上に生成できるけど
structで宣言された構造体ってヒープ上に生成できないんですか?
できればrawポインタは使いたくなくて、言語仕様やAPIでラップして欲しいのですが
言ってる意味がよく分からないけど
new じゃダメなの?
D言語を「C言語の後継」って紹介してる人が居たけどなんだったんだろう
静的メタプロからしてC++だよな、参照とガベコレはC#かJavaか。
しかし多重継承は残して欲しかった。テンプレートmixinだと、
元から多重継承意識して実装クラス記述するか、あと付けなら移譲用の
mixin書かないといけないよね
std.typecons.Typedef、標準型の場合はtoHash()くらい積むようにしてほしい
自分で書けばいいんだけど釈然としない
うげげ、Typedefってswitchにも使えないのか
なんじゃこりゃ、使い物にならんやんけ
>>575 おお、まさに今対応中のところだったんですねThx
switchは整数型と文字列だけと言わずopCmp()とopEquals()があれば使えてもよさそうなもんですね
D言語のことだからそのうちしれっと対応するんだろうけど
577 :
575:2014/10/04(土) 21:36:48.22 ID:UDl9+1nO
>>576 あ、俺中の人じゃないんです。簡単に書けそうだったから書いただけ。期待させてすまぬ。
まあでも、そのうちしれっと実装されるでしょう。D言語だし。
Githubで開発してるから誰でもパッチ送れるよ
只でさえコミュニティが小さいんだし、折角作ったパッチを入れないのは勿体ない
> ウチのプログラマーがD言語のバグが致命的(メモリ管理できないというか命令文がない)ということで
ネタとして適当なことを触れ回るのは辞めてほしい
「命令文」とかいう意味不明な語を使ってる時点でお察しではあるのだが...
> D言語、たぶん、作者がコーディングに夢中でドキュメントが追いついていないと思う、、、あと開発期間が長過ぎて、ドキュメントを書いても、
> すぐバージョンアップで意味が無くなるので、余計にドキュメントが書けないループに陥っているんじゃないかな、、、。
イメージだけで語るのが流行ってるのかな。
それは人の業だ
面白いからもっと言及して欲しい
言語を使わない人間が言語のネガティヴキャンペーンをして言語を使う人が減る謎現象を台風現象と名付けよう
日本語ドキュメントを公式だと思い込んでるんじゃね
アホが何か凄いことをやっているように見せかける為にD言語に言及したり使ったりしてるのが気に入らないので、
D言語が簡潔簡単安全な言語であるという事実を早く広めたい
588 :
デフォルトの名無しさん:2014/10/11(土) 11:59:29.58 ID:WAdfmHXI
1)縦横のそれぞれの列に1〜6の数字が1つずつ入ります(ここは数独と同じ)
2)マス目にあらかじめ入っている(数字)は太線で囲まれたブロックに入る数字の合計を表しています
3)太線で囲まれたブロックの中には同じ数字が入ることもあります
┏━━┳━━┳━━┳━━┯━━┳━━┓
┃(3) ┃(4) ┃(13)┃(5) │ ┃(8) ┃
┠──┣━━┫──┣━━┳━━┫──┨
┃ ┃(7) ┃ ┃(1) ┃(7) ┃ ┃
┣━━┫──┃──┣━━┫──┣━━┫
┃(11)┃ ┃ ┃(7) ┃ ┃(6) ┃
┠──┣━━┻━━┫──┣━━┻━━┫
┃ ┃(6) │ ┃ ┃(6) │ ┃
┣━━┻━━┳━━┻━━╋━━┳━━┫
┃(9) │ ┃(6) │ ┃(4) ┃(3) ┃
┣━━┳━━┻━━┳━━┻━━┫──┨
┃(4) ┃(5) │ ┃(11)│ ┃ ┃
┗━━┻━━┷━━┻━━┷━━┻━━┛
これを解くプログラムをD言語でおながいします
(たぶんずれるので等幅フォントのエディタにコピペで見てください)
ちなみにhaskelのひとは一週間で解いてくれました
( ´_ゝ`) フーン
プログラミング言語関係なくね?
haskelとか書いてるとhaskellのひとに怒られるよ
その図じゃ太線で囲まれたブロックの中に同じ数字が入るのはあり得なくね
import std.stdio;
void main(){
writeln("146235");
writeln("254163");
writeln("523416");
writeln("615324");
writeln("361542");
writeln("432651");
}
Visual D 0.3.39
目玉は mago debugger x64対応くらいか
依存症って結局パチンコでもネットでも過食でもなんでも当てはまるな
前にその画像見た時にも思ったけど、それじゃD言語の特徴ってCTFEだけみたいな…
「D言語のことしか考えられなくなります」の絵がキモい
599 :
デフォルトの名無しさん:2014/10/15(水) 18:59:37.72 ID:fpvoAGYt
基本的に他の言語の良いところを集めまくった「ぼくのかんがえたさいきょうのげんご」なので
特徴って言われるとなかなか思いつかない
破壊的変更が入りまくるってのが特徴か?
依存症になると「他の言語はコンパイラが安定しすぎて俺が不安になる!」みたいな
コンパイラのせいに出来るのはD言語だけ(キリっ)
D言語は時代の波に飲み込まれた
さすがにオワコン
,' /
i .l
. | 、
、.\ ヽ
、 \ . ヽ ._
丶. ‐ _
` ‐ _ (´・ω,(´・ω・)
(ー(,, O┬O
())'J_))
「俺たち終わっちゃったのかなぁ」
「まだはじまっちゃいねぇよ」
プログラミング言語をコンテンツ呼ばわりする人って・・・
数年前はコンパイラとの闘いが熱かったのに最近は安定しすぎてる
冷戦
未だにマルチコアにも対応しないマルチスレッドしかないOCamlやってた俺からすりゃ
破壊的だろうがガンガン更新された方がマシ
OCamlは少し保守的すぎる
事情があるんだろうけど
>>603 コンパイラかも知れんぞ!…まあ、それならD言語でなくdmdとかか
OSのカーネルや言語処理系は最もコード密度が高い分野。一度もソース読んだ事の無い人にとっては
理解不能な世界。組み込み用のmrubyやJavaScriptですら公開されてるソース読んですぐ理解出来る代物ではない。
だれがどのように保守するかは大きな問題。カーネルや開発者の高齢化問題も発生する。
経済が破綻すればオープンソースは資金調達や人員の確保問題で保守がどうなるか不明なところがある。
そうなると伝統的プロプライエタリなOSや言語が長期的には有利かもしれない。
オープンソースって言葉の意味が分かってないなら無理して使うなよ
何年か前に書いたソースを修正しようと思ったら、std.dateが読み込めないってエラーが出ました。
std.datetimeで書き直すほどの修正でもないのですが、コンパイラのバージョンを古いのに戻すぐらいしか方法はないのでしょうか?
std.date→std.datetimeの移行がさくっと出来ないってそれ自分で書いたソースじゃないでしょ
どっちでも良いけど消えた標準ライブラリを最新Verでどうやって使う気なのか
一体どんな返答期待して質問したんだろうか
614 :
デフォルトの名無しさん:2014/10/20(月) 00:07:00.21 ID:8ZypDjIK
同じディレクトリにdate.py
>>612 4,5年前に書いたソースで全然覚えてないのです。
あと、std.datetimeをあまり把握しきれてないのも書き直すのを避けたくなく理由です。
>>613 まぁ書き直すか古いverに戻す以外にないですよね。
>>614 .py?python?
wrapperとか作れないのかな
4,5年前のコードがstd.datetimeの修正だけで済むとは考えづらいけど
最新のD言語か別の言語で書き直したら
コンパイラとライブラリ一式をソースとセットで確保していつでも使えるようにしておく
それしかない
ソースにコンパイラのバージョン書いておくのが習慣になった
そもそも4、5年前のソースを最新のdmdで通そうと考えるのが何か間違ってるような
Cは20年前のソースでも通るぞ
623 :
デフォルトの名無しさん:2014/10/20(月) 19:45:24.13 ID:pgUgZ3hw
scで見ると番号ずれるのかと思ったがそうでもないんだな
ちゃんと補正されてるとは
たぶん
>>614はdate.dはBoost Licenseだし過去のソースをそのまま取ってくれば
そのまま使えるじゃんって言いかけた途中で蛇に食われたんだと思う
かつてのstd/date.dが今のdmdでコンパイルできるかは謎
ひょっとするとstd.dateのコードをdate.dごと最新のdmd用にするかstd.datetime仕様に置き換えてくれるスクリプトかも知れんぞ
D言語erはたまに変態クラス居るから
microsecondじゃなくてpicosecondなのかこれ
microsecの下は nanosecじゃろ
ライブラリでサポートしてるのは hect-nano = 0.1microsec まで
そこまで対応してるOSがあるかは知らん
picosecond 計測できる CPU あったら欲しい
.NETのDateTime.Ticksは100ナノ秒単位だそうだしそこらが限界か
Monoでもそうなのかな
お前のメモリ速度は何色だ〜〜?
基盤は緑ですがなにか。
「速さ」の色を問うとは実に哲学的だな。あるいは文学的か。
流石D言語er
元ネタが血の色だからでしょ
続けるのにはエネルギーが必要だが
終わるのに理由はいらない
DFL2はD2専用みたいだね。D1/D2両対応に疲れたんでしょ
競合も多い分野だからな
やる気無くなる気持ちは判る
DのGUIツールキットライブラリって競合多いかな…?
更新止まっちゃったのは多いけど
言語問わず競合が多い、って意味ならごめん
>>634 それ既存のフォークでもなくオリジナルソースとの差分もわからない
オープンソースのしきたりがわかってなくてダメダメ むしろ邪魔
static this() {
loadAppSettingsFile();
}
↑スレッド100個立ち上げるプログラムの中で発見されたコード
641 :
デフォルトの名無しさん:2014/10/25(土) 13:43:56.46 ID:uUg9y0Q/
ゾッとした
だ、大丈夫初回起動だからファイル無いから
この件というか自分のコードで無意識にこんなことやっちゃいそうってとこがぞっとするわ…
もしかしたらloadAppSettingsFileの中でメインスレッド以外弾くようにしてあるかもしれない・・・?
静的ライブラリの中で無邪気にやってる可能性はかなり高いのではないか
D1のGUIライブラリをD2に移植した時にDLL初期化がGUI処理以外のスレッドで走りまくったことなら
static if文の中で、型Tがメンバ関数f()を持っているかどうかを判定するにはどう書けばいいですか?
わかんないけど static if(T.classinfo.getMembers("f").length) とかじゃね?
static if (is(typeof(T.f) == function))
650 :
647:2014/10/27(月) 23:37:09.99 ID:ej98PbkV
>>649の方法でできました。
メンバ関数がtemplateの場合はどうすればいいのでしょうか?
そのまま応用すると関数を呼び出すところでエラーが出ます。
static if (is(typeof(T.f!(X)) == function)) {
t.f(x); // コンパイルエラー
t.f!(X)(x); // コンパイルエラー
}
651 :
647:2014/10/28(火) 00:36:52.60 ID:ZhBusCc1
自己解決しました。
static if (is(typeof(t.f(x)))) {
t.f(x);
}
D言語のGUIライブラリに求めるものってなんかある?
俺はマルチプラットフォーム・Dネイティブくらいなんたが
た?
ウィジェット・ツールキットみたいなのを想定した話なんだろうか。
最低限ポインタを直接触らなくてすめば嬉しいな。
Dネイティブとかやめてくれ
マイナーなツールキットのイモUIに腹を立てたことは無いのか?
それってGTKのこと?
ネイティブのUI機能ではなくスタイルシート的な機能で見た目を合わせるタイプがいいな
JavaのSwingのやり方だがパフォーマンスは安定してた
QtDってどうなったんだろ?
最終更新日が1年以上前…
wxDも似たようなもんか
GtkDとDWTは比較的元気そう
もっともDWTはdubに対応する気が無いみたいだけど
>>659 DWTの中の人はdubに入れてーなってメーリングリストで言ってたんだけど
gitのsubmoduleを使ってるせいでそのままじゃ対応できないそうな
> Absolutely, I just need to figure out a good way to do it.
これをどう解釈したのか気になる……
全くだ、それをするのに良い方法を私は理解したいだけだ。
それだけ見たら、
それにしても、形にして送り出すためにどうすればいいのか。
と俺は読むかな。俺の英語力ひどいもんだけど。
全くだ、それをするのに良い方法を私は理解する必要があるだけだ。
Dubサポートしたいけど、各OS用のワークアラウンドとDWT共通パッケージが切れててそれがdubは拾ってくれねーぞ。なんかアイディアない?
っていってるのかな?
"figure"の意味が分かってて"figure out"という熟語を知らないなんてことが
見たか!それが俺の英語力だ!!Orz
670 :
デフォルトの名無しさん:2014/11/02(日) 02:07:01.77 ID:Ns/yRHdS
メンテナー;
避けては通れないのは、dubを使用するための良い方法を理解する必要が有ることだね
---
こんな感じだと思う
Find out = discover some information.
Figure out is usually used when we are in the process of making a decision or
trying to arrange something.
To figure something out means you have to think to solve it.
For example: You figure out a math problem. You don't find it out.
You figure out how to solve a puzzle. You don't find it out.
こういうことらしい
マジレスですまんが、
>>662は「もちろん、あとはうまくやる方法を見つけ次第な」ってことだよな
Yes/Noを聞く問いかけにはまずYes/Noで答えなさいと先生いつも言ってるでしょ
だが俺は質問を質問で返すぜ
auto r1 = filter!("a == 1")(arr1);
auto r2 = filter!("a == 2")(arr2);
auto r = [r1, r2]; // ここでエラー
foreach (e; r){ ... }
どう書けばいいですか?
std.range.chain()
>>676 chainは1つの配列になってしまうので、目的のものと違ってしまいます。
欲しいのHoge[]じゃなくてHoge[][]なのです。
auto r = std.typecons.tuple(r1, r2);
foreach (e; r){ ... }
>>678 なるほど、タプルを使えばいいんですね。
thx
r1とr2の型が違う事わかってなくね?
ちなみにstd.array.array()でレンジの評価をすればHoge[]型にできる
array()だと一度filter()が全評価されちゃうからなぁ
しまったその辺含めて質問を質問で返せばよかったのか
タプルで、各要素に文字列のインデックスを付けられるようにして欲しいなぁ
std.typeconsのリファレンスの初っ端の例に書いてあるやつじゃないの?
alias Coord = Tuple!(float, "x", float, "y", float, "z");
これを、
c.z = 1;
だけじゃなく、
c["z"] = 1;
でも使えたら嬉しいな、ということです
文字列の添字も使えるように、って書けば良かったか
そりゃTupleでやるべきじゃないな
フィールドの型が違ったらどうすんだ
Variant[string] c;
c["z"] = 1;
こうかな
Variantって今どれくらい使い物になるんだろう
dmd.2.066.1 出てたんだな
サイトの更新にちょっと手間かかってるんじゃ〜ってゆってた
regression対応だけのはずなのに微妙に機能の先食いまでしてる
いってた
そろそろTDPLの改訂版とか出したほうが良いんじゃないかね
通らなくなったコードは(多分)無いから大丈夫なんだろうか?
DMDがTDPLに書かれている機能を全てサポートしてからでも遅くない
カタテマの新作のシューティングが出てた
今更かい、D言語erって案外ゲーム層とかぶってないんだね
つってもあれ、結局Luaなんじゃなかった?
D#
int[] arr;
int x;
...
auto arr2 = filter!("a == x")(arr); // エラー
predでxが使えないんですけど、どう書けばいいんでしょうか?
auto arr2 = filter!((a) => a == x)(arr);
ラムだっちゃ
699 :
デフォルトの名無しさん:2014/11/16(日) 03:07:04.35 ID:R/FFjtcr
ケケ
みんなMonodevelopじゃないのか?
IDEもだいぶよくなってるという噂だからそろそろ使ってみようかなと思いつつ
テキストエディタを開く吉宗であった
男は黙ってVim
そういえばdubがあるからテキストエディタでもビルドがラクなのか
Visual D ってデバッグは出来るのかね?
何ヶ月前か前触った時は結構出来てたよ
>>705 VSのデバッガも使えるし
D専用の mago debugger も使える
マジかよ-gc売ってくる
709 :
575:2014/11/18(火) 04:16:46.66 ID:kAiH58gO
>>573 えらい亀であれなんだけど、
>>578 に背中を押されてプルリク送ってたのがこの度めでたくマージされました。
おまいらありがとう!俺のコードよ末長くお幸せに!
乙
まだ婚約指輪もらっただけだから油断はできない
式を挙げて成田まで戻ってきたくらいでないと
いい話だなぁ
努力が報われるならやる気だって出ますよ
nothrow @trustedとか付いてる辺り今風だな
713 :
573:2014/11/18(火) 19:20:47.02 ID:cDYRs+r1
>>709 ありがとうありがとう
俺も今度何か気づいたら英語を恐れずなんかしてみることにします
オンラインコンパイラとかオンラインジャッジの類、どうして古いDMDを使うんだろう……
みんなDを導入した当初は最新版だったんだけどね・・・
「Dのバージョン」を見れば脱落したのがいつかわかるよ
1年に何回もバージョンアップするとは思ってないのさ
知ってたら多分手を出さないさ
ちなみに gdcも2.065行ってるしそろそろ2.066も出てくるんじゃないかな
年に数回バージョンの変わる処理系なんて珍しくはないと思うが
DはC/C++より安全な言語ですが
仕様に破壊的変更を加えます
他の言語と違って現状に満足せず改良を続ける積極的な言語
とポジティブに考えていこう
いつも間髪を入れず同じパターンで刹那に突っ込みが入るのもこのスレの魅力
いつも間髪を入れず同じパターンで刹那に突っ込みが入るのもこのスレの魅力
このスレの方々にとってRustはどういった印象ですか?
ネイティブコード、オブジェクト指向、型の安全性、関数型言語の特徴、強力なパターンマッチなど、
D言語と似た点と独自の機能もあり、おもしろそうですが
今後のD言語の開発に影響を受けるのか、ライバルとして互いに張り合うのか、
言語同士の競争という面でも興味がありますが
間髪を入れずに同レスを繰り返すのも魅力ですね。判ります。
実行ファイルサイズという点では現在圧倒的にDの勝ち
GC有りかつ巨大過ぎるstd.datetimeという癌を抱え込んですらDの方がコンパクト
言語仕様だけ見ればRustの方が良さげなんだけど、あっちはなんか基本的なところで設計を間違ってる気がする
最近はかなり保守的なので、破壊的変更ネタはいまいちだな
>>726 >巨大過ぎるstd.datetimeという癌を抱え込んですらDの方がコンパクト
そりゃ、datetimeの殆んどはテスト用コードだから
Phobosはreleaseビルドされてるのでサイズにはまったく影響しない
試しにunittestを全部消してみたら、algorithmと同じくらいの大きさになったよ……
>>728 それを言ったらalgorithmなんてほとんどテンプレートでそれこそサイズに影響しないじゃないか……
と思ってar -xしてみたらdatetimeもそんなでかくなかったw
昔はもっと巨大だった気がするんだが、すまん
自分のは単純にソースコード量の話
std.datetimeのコードが1.4MBで、そのうち約1MBがunittestなんだよ
Rustは最近green threadのランタイムを捨て去ったので、
バイナリサイズは結構小さくなったんじゃないかな。
あと、標準ライブラリ含め、ライブラリは基本静的リンクされるから
バイナリサイズ大きくなりがちではある。
静的リンクされるなんて、(Javaとか除けば)OSにランタイム付けてもらえる処理系以外は全部そうでしょ
その制限の中で言語仕様からリンカまで一体となって使わないものをリンクしない仕組みが発達してきたのに
Rustはその辺全然利用できてない感がない?ライブラリのフォーマットからして.rlibなんて作ってるし
機能を削って一時的に小さくなっても、そんなのまた増えるよ
lisperですねわかります
int[][3] vertices =[
[1,2,3],
[2,2,3],
[3,2,3],
];
bool search(int[3] v)
{
return v[0] > 1;
};
auto result = vertices.filter!(search);
なんでこれ通らんの?
[3]を[]にすりゃ通るけど
固定長配列は構造体と同じで値型なんです
int[3][] vertices =[
静的配列はレンジじゃないから
vertices[].filterみたいにスライスするとok
C++をこの世から消し去ってくれるのなら
DでもRustでもいいから頑張って欲しい
Goは面白みがないから遠慮したい
DMDでCOFF吐けるようになったんだー
って感心してPhobosをビルドしようとしたけどコケた
stdio.dの中で、dmdかつwin32の場合、自動的にDMのCランタイムを
前提にしちゃってるのが問題なのかな…?
問題でした。あとprocess.dでも同じようなことが起こった。
恐る恐るその部分を修正したら何とかコンパイルは通ったみたい。
D言語には依存性解決するビルドツールとかないの?
互換性なにそれみたいな言語だし機能しないか
> 互換性なにそれみたいな言語だし機能しないか
大きめのD言語製ライブラリとか見てても、ちょっと古めのコンパイラに合わせとけば問題はほとんど無さそう
警告やdeprecationもあるし、version文とかで分岐しないといけない場合があるだろうけど
rdmd(ビルド&実行)
dub(人気だが目的にかなうか不明)
dsss,bud(D1時代に活躍)
あとDMD自体が依存性の出力を吐けるから加工すれば使えるんじゃないか
をるたんGJ
いいね
ウォルタソ2ちゃん読んでるのかω
うぉるたんが言い出しっぺで盛り上がってるからちょっぴり期待してたけど
微妙に斜め上に行ったな
うぉるたーって日本語使いこなしてるのか
>>747のundeadを使ってみたんですけど、リンク時にSymbol Undefinedが出ます。
importするだけじゃだめなんでしょうか?
だめです
importは、Cでヘッダをincludeするのと同じ
Undeadはdubのパッケージを提供してるのでdubを使うか、あるいはrdmdを使えば自動で必要なものをコンパイルしてくれる
乱数を1〜2回程度しか使わないアプリケーションで(起動と終了は割りと頻繁に繰り返される)、
std.randomのuniformをデフォのまま使ってたら、体感的に偏りを感じました。
乱数1つ取り出すごとにシードを設定してるようなものなので、悪い使い方ですよね。
こういうアプリケーションの場合、どのようにすれば良い乱数が使えるのでしょうか?
ジェネレーターの状態をどっかに保存して続きからというのが模範解答だろうけど
細かいこと気にしないなら/dev/randomでもそのまま使っとけばいいんじゃなかろうか
>>760 なるほど。
ジェネレーターを保存する方向で考えてみます。
memcached
static if ( is(typeof(foo)) ) { }
else static assert( "foo is wrong" );
D言語AdventCalendar、去年より人が減ってる……
仕方ない
javascript大人気
??
全体的にレベル高すぎて俺レベルじゃ書けそうな事が何もない
現在のD言語って、RAIIはどうなっていますか?
構造体のインスタンスがスコープを抜けたときに、デストラクタが必ず呼び出される事を期待してもいいですか?
scope(exit)じゃ駄目なん?
スタック上に確保してるのなら(newを使わずに構造体を作ってるなら)、確実にデストラクタが呼ばれる
死ぬほど頑張って@nogcを使い倒せばそんな心配から解放される…!
>>769 例外安全というわけじゃなくて、C++のように使えたら便利だと思いまして。
>>770 なるほど。スタックというのが条件なんですね。
そりゃヒープに確保した構造体がスコープ抜けただけで解放されちゃ困るだろ
classは通常でヒープで、Scoped(T)でスタックだが、
通常でスタックのstructをnewってできるのか?Heaped(T)みたいなのあるの?
構造体は普通にnew出来る
ああなるほど、普通にT*に入れるってことね。サンクス
Scopedってスタック確保されるんだっけ?
スタックでのメモリ管理を模してるだけじゃなくて?
スタックに確保される
静的配列をキャストして使うシンプルな仕組みだったw
D言語ユーザ、やけにロシア人が多いのは何か理由があるのかな
他のOSSではよく見かける中国人が少ないのも気になる
ロシア人というか東欧が多いんじゃないか?
Andreiたんがルーマニアだから
783 :
デフォルトの名無しさん:2014/12/12(金) 16:09:23.42 ID:z5EZhpJA
チャウチェスク
数年前にC++0xで話題になったコンセプトチェックみたいなことをやりたいんですけど、
シンプルに書く方法はないでしょうか?
static if (is(typeof(t.f())))
みたいに書くのは読みづらいし、f()の関数内にシンタックスエラーがあった場合、
f()がなかった物として扱われるのも不満です。
俺だったら普通f()のunittestも書くけど、
そういう話じゃない気もする
>>785 参考になります。
しかしTMPだから当然といえば当然ですけど、難しいコードですね。
>>786 コンセプトチェックが使われてるライブラリを、利用者が何も知らずに使った時に罠になると思うんですよね。
>>785の3つ目の方法も、エラーメッセージは綺麗だけど、コードは結構トリッキーに感じます。
あ、785で貼った例は間違ってるな
関数をテンプレートにしないと
>>746 だいぶ空きが埋まったと思ったら時空のねじ曲がりまで起きてるw
QiitaのAdvent Calendarではよくあること
だから君たちも時空を捻じ曲げても良いんだよ?
初日から止めていくスタイル
792 :
デフォルトの名無しさん:2014/12/16(火) 19:47:26.29 ID:Ds44nHOO
lvalueOfとかいつの間に・・・
struct Hoge{
int[] arr;
}
void main(){
Hoge hoge;
int[] arr = hoge.arr; // ここでrefが欲しい
}
関数の引数やforeachではrefが使えますけど、関数の中でrefのようなことはできないのでしょうか?
795 :
794:2014/12/18(木) 23:43:43.93 ID:/iB1Gd/A
自己解決。ref関数でいけました。
Dって結局さ、大規模開発向けの機能が豊富なのに、
大規模開発だと使われないから悲しいことになってるんじゃないかな
まだ発展途上にある言語だから仕方がない。
あと10年待て。
DでもRustでもいいからとっととGoを駆逐してくれ
出来ればRustだとありがたいけど
×大規模開発に使われないから悲しい
○大規模開発に使ってる人達はD1を使い続けてるからもっと悲しい
開発にも関わるようなコアなD言語erをいっぱい雇ってる某社は、未だにD1を使ってるらしいね
移行できないくらいの規模のコードベースって事なんだろうけど、悲しい
未だにD1て…
Microsoft様とか、Apple様とか、Oracleさん程度の資金力で援助してもらえれば
もっと普及するんだろうけどなー、と無意味な妄想に浸ってしまう
Facebook様はどうや?
普及したらD言語の特徴であった破壊的変更が無くなってしまう
普及されたら互換性を維持する必要が出てくるんだぜ?
普及版のDと
発展途上版のDに別れれば良いだけな気がする
warning/deprecationを出しとけば破壊的変更じゃないんですよぉ、的な感じなので昔より大分マシ
警告なしでぶっ壊れたらBugzillaに報告すると良い
auto t = tuple(1, 1.2, "foo");
auto a, b, c = t;
みたいな書き方で多重代入できればいいのに。
あと文字列リテラルでの式展開も導入して欲しい。
Pythonのタプルいいよね…
確かに普及版で基礎開発しているのはちと世間受け悪いかもな。
しかし、バージョンを二つに分けられるようなリソースがあるか、というと厳しそうだしな
D2ってprivate constructorって非対応なの?
class A`
Dのprivateはモジュール外private
なるほどね、 あざっす
814 :
デフォルトの名無しさん:2014/12/23(火) 23:36:27.47 ID:xkazkLmW
import std.stdio;
void main()
{
int a,b;
(a, b) = (1, 2);
writefln("%d %d", a, b);
}
0 2
なんでですのん?
(a, b) は b を返し、(1, 2) は 2を返すから?
単なるカンマ演算子に何の夢を見ているのか
左辺でカンマ演算子が使えたのかー
ワロタ
Perlから来た人かな
あの言語は値の交換なんかをそう書くから
PythonやRubyの人なら、そこに括弧は付けないだろうし…
左辺でカンマ演算子が使えるというよりもカンマ演算子が左辺値を返せるって感じ?
tieとかないの
あるでしょ
TypeTupleに代入できるんだな、知らなかった
http://forum.dlang.org/thread/[email protected] import std.stdio;
import std.typecons;
void main()
{
int a,b;
TypeTuple!(a, b) = tuple(1, 2);
writefln("%d %d", a, b); // => 1 2
// 値の交換にも使える
TypeTuple!(b, a) = tuple(a, b);
writefln("%d %d", a, b); // => 2 1
}
先生…面倒くさいです
糖衣構文用意して下さい…
そういえば前タプルのリテラル作ろうとしたけど、
構造体のリテラルと被ってるから却下されたみたいな話を聞いたような
文字列mixinがあれば全て解決
> Note: Cannot swap values by tuple assignment.
が残念なんだよなあ
{a, b} = {b, a} より swap(a, b) の方が分かりやすくないか
まあ、{a, b} = {b, a+1}みたいな感じで変形できたりして良いのかな
カンマ演算子ってCから引き継ぐ必要があったのかな?
害悪の源のような気がしてならない。
カンマ演算子を廃止する話も出てたが、影響が大きいからなぁ
forとかで何の気なしに使ってたりするだろ
Cのマクロを直訳したりするときに無いと困ったりはするけど……
式中文の機能ってあったっけ?あるならカンマ演算子は廃止してもいいと思う
gccのこういうやつ
a = __extension__ { func(); b }; //値はb
Dでは代わりに、関数リテラルの即時呼び出しを使うのが一般的らしい
a = { func(); return b; }(); // インライン化されて a = (func(), b); と等価になる(仕様上は)
C言語のコードをそのままコピペした時に変なバグを出したくないって理由で
switchのbreakすらも廃止できないのでお察しください
あれ、でも八進数リテラル
コンパイラにスイッチ付けて、C式かそうじゃないかを切り替えられるようにしてくれれば…
#pragma strict
個人的にはCの進化系・高機能化って路線はC++がやってるんだから
DにはCとの兼ね合いなんて気にせず
「Cとは別の言語」しての路線を進んで欲しいかなあと思う
838 :
デフォルトの名無しさん:2014/12/25(木) 07:48:39.10 ID:qKZrZOHg
C/C++ と同じなら C/C++ 使うわ
>C/C++ と同じなら
いやいや、既にまったく違う言語なのに、breakだのカンマだのといったものを残しとく必要はあるのかって話だよ
仮定法だろ
breakは、switchでなくその外側のループを抜けたいってCの時から何度でも思ってたしなあ
goto 恐怖症を克服すればどうということはない
ラベル付きのbreakというのがあってな
outer:
while (true) {
auto s = "E";
switch (s) {
case "E":
break outer;
default:
break;
}
}
ラベルgotoが使えるから問題ないよね、っていうのは違うと思うんだ…
単純に手間とか見栄えとか考えても、やっぱりbreak必須はなぁ
そういう意味で
>>837と同意見ではあるんだけど、
「C言語のソースをそのままコピペした時、同じように動くか、コンパイルできないかにしたい」
って考え方も理解できるものがある。
あるんだけど、その挙動はCモードとかそういうの作ればいいんじゃないのとかも思う。
古いD言語コードをコピペすると(あるいは混ざってることに気づかなかったら)、エラーなしに変な動作をする訳か
古いDコードを新しいコンパイラで動かそうとする方が間違いなんだ(暴言)
D言語はライブラリが少ないと言われるけど、具体的に何が求められてるんだろう
MIME
longjump「お ま た せ」
巨大なメモリ領域が回収されないことさえなんとかしてくれればGCはなんでもいいのだ
今のDのGCって単純なマーク&スウィープなの?
そうだよ
855 :
デフォルトの名無しさん:2014/12/29(月) 09:45:39.75 ID:nfqiosik
D3はよ
D2の次のマイルストーンがメモリ管理の改善(GCやscope/refあたり)に定まってきたので、この辺がどうにかなるまでD3はお預けかなぁ
scopeといえば、標準ライブラリで引数にscope付けてるの時々見るけどどういう意味?
何か前にも同じ話題がスレで出てたような気もするけど見つからない
外部(別の関数のscopeでない引数とか、グローバル変数)に参照が絶対に渡されないっていう意味だよ
これを一歩踏み出すとコンパイルエラーしてくれる
つまり、scope引数に渡した値はその直後に削除処理しても実行時エラーが出ることはない
素早いお答えどうも
どっかで何かが参照持ってるかも、って恐れを無くしてくれるわけね
pureは付けられないけどこの引数は大丈夫、みたいな時に使うのかな
Dで、Cみたいにランタイム依存のないバイナリって吐けるの?
例えばこんなプログラムで。
---
extern(C) void func(){
uint a = 10;
return a;
}
コードの部分ひどいミスしてた。すまん。
正しいのこれだった。
extern(C) uint func(){
uint a = 10;
return a;
}
DMD2.067からは"-betterC"(笑)というコンパイラスイッチでランタイムが取り除ける
現状ではランタイムはくっついて来るけど、他の言語から呼ぶ場合は明示的に起動(rt_init)しないと動かないので気にしなくていい
これでD言語でLチカできるな
864 :
デフォルトの名無しさん:2014/12/30(火) 08:48:03.44 ID:JWtJz6A1
いままでできなかったの?
GDC/LDCならできたんじゃないかな
Lチキに見えた
↑ 全部Ddocで書いたらしい……
871 :
【猫】 :2015/01/01(木) 11:37:39.94 ID:Z/g5TCdZ
ハッD(ピー)ニューイヤー
今年も良いD言語ライフが送れますように
>>862 俺の訳わからん質問に答えてくれてありがとう!
今年のD
お前らあけおめ
876 :
デフォルトの名無しさん:2015/01/03(土) 13:20:45.88 ID:duDbuP4G
こ
Visual D 0.3.40
本人だけに Win32 COFF 対応を先取りで取り込んでいる
C/C++ をプロジェクトに入れられるというのは需要あるのかな
オオアリ
オオアリクイ
オオアリクイクイアリ
D言語公式フォーラム、2ch並に煽りまくる人がいて地獄っぽい
はて記憶に無いな
おまわりさん
こいつです
DUBのは、トップページへのリンクが良いかもね
wxDとかQtDとかはどうなったんでしょう…?
DWTはその中に入ってないけど一応生き残ってるんじゃないんですかね
クロスプラットフォームな汎用ウィジェットツールキットはGtkくらいしかないのか。
何か重そうなのと、「ダサい」って言う人が多いからあんまり手を出したくないというか…
贅沢言える身分じゃないけどさ。
ウィンドウズだけで良いならDFLが安定そうだけど。
>>888 DlangUIっていうのサンプル実行してみたらそこそこ使えそうだった
独自UIが変なのと日本語入力が変なことを除けば
ネイティブで単独の実行ファイルを作れるdwtがいいんだけどコードがJavaっぽくなるのが…
クロスプラットフォームにこだわらずに画像がらみで複雑なことしないならDFLいいよね
GTKというか、Windows版GTKが色々と駄目なんだよね
Qtの方がWindowsサポートは上だろうけど、QtDはもう……
DFL2ができたからか?
895 :
デフォルトの名無しさん:2015/01/07(水) 09:00:55.87 ID:7s8hjn62
GTK は糞
おっと、GNOME3の悪口はそこまでだ
どっからGNOMEが出てきた
もしかして1つのプロジェクトの中で、std.datetimeとundead.dateの両方を使うとバグる?
getUTCtime()が返す時間の単位が変わった気がする。
前に
https://issues.dlang.org/show_bug.cgi?id=9094 を見て納得しかかったけど
やっぱりGCで100MBのメモリを一度確保したら永遠に解放してくれないのはおかしい…
Druntimeのgc.dの動作追ってみたらスコープ出た後でも使用済みとマークされてて解放してくれないみたいだし
いつの間にかdeleteしても残るようになってるしなんだこれ
void main() {
foreach (i; 0..1000) new byte[100_000_000]; // 32bitでコンパイルして実行すると10回目くらいで死ぬ
}
GNU/Linux環境で-m32付けてコンパイルしてみたら正しく解放された
たぶんWalterの説明にあるような32bit環境での問題は関係なくて、OS依存のバグを踏んだんじゃないか
Win32 で試してみたら 2.066で目に見えて挙動が変わってるな
それまではGCが動く時と動かない時で同じバイナリでも大幅なブレがあるのに対し
2.066 では安定して同じ回数でコケる
これならそのうち改善されるだろうw
>>900 試行ありがとうございます
win7 64bit(8GB)か8.1(64bit)+dmd 2.066(32bit)では上のコードでだめだった
linux mint 17.1(64bit)の仮想マシンが手もとにあったからdmd -m32で試してみたらOKだった
new byte[500_000_000];にしてみたら落ちた
…うーん?
new byte[500_000_000]にすると落ちたり落ちなかったりだなー
同じバイナリでも、調子が良いとOutOfMemoryErrorが出なかったり、逆に5~8回目ぐらいで落ちる感じ @Linux
ちょっと前まで32bitにしかコンパイルできなかった言語が、32bitと相性悪いとは……
よかった、時刻が変になるライブラリはいなかったんだ
誰かDconf観戦してきてくれよ
あとで動画見れば十分よ
その場にいないと解らない雰囲気とかそういう風なアレがあったりするんじゃないですかね?(適当)
そういう風なアレは誰かが観戦してきてくれて観戦記書いてくれても伝わらなくね?
つまりすごく興奮した感じでレポート書けばいいんですね?
912 :
デフォルトの名無しさん:2015/01/17(土) 09:17:04.41 ID:5tFTyduT
opApplyを持った構造体をRangeとして扱えないんです?
一行目との整合性を考えてなかった
s/Generator/レンジとして使えるGenerator/
>>911 Python と CoffeeScript すげー
速度を気にしなければワンライナーなんだがなぁ
>>911でbashのプログラム見たばっかりだったから気がつかなかった
わ、ワンライナーじゃないか
new Generator!int({foreach(i;structWithOpApply)yield(i);}).map!(a => a*a)
改行しなければどれだけ長くてもワンライナーと言い張ってOK?
セミコロンが入るとワンライナーって言い難いんじゃないか、とは思う
しかしそもそもシステムレベルの言語でワンライナーを望むのが間違いなんだ
標準ライブラリに変な機能がどれだけあるかの勝負という気もする
new Generator!int(() => structWithOpApply.each!yield).map!(a => a*a)
こないだ入ったstd.algorithm.eachがforeachの代わりになるぜ
最近新しく言語に入った機能を広めてくれる伝道師がいなくて寂しい
そーいや inout const って何が違うんだ?
素晴らしい、まるでLL言語のようだ
でもstd.algorithmってちょっとばかし肥大化しすぎじゃ無いですかね…?
あとsortとかmapとかで、副作用無しのコピーしてから処理して返す奴とか欲しいな…
渡す前にコピーすればいいんじゃ?