1 名前:デフォルトの名無しさん [2008/02/10(日) 15:06:12 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://dsource.org/ (dsource) ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語) ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) ■ IDE ttp://dronten.googlepages.com/dscite (DSciTE) ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks) ttp://www.dprogramming.com/entice.php (Entice Designer) ttp://www.dsource.org/projects/descent (Descent) ttp://www.dsource.org/projects/poseidon (Poseidon)
2 名前:デフォルトの名無しさん [2008/02/10(日) 15:07:24 ] ■過去スレ Part16 pc11.2ch.net/test/read.cgi/tech/1195394435/ Part15 pc11.2ch.net/test/read.cgi/tech/1191582990/ Part14 pc11.2ch.net/test/read.cgi/tech/1184807424/ Part13 pc11.2ch.net/test/read.cgi/tech/1177499924/ Part12 pc11.2ch.net/test/read.cgi/tech/1171037394/ Part11 pc10.2ch.net/test/read.cgi/tech/1165621441/ Part10 pc8.2ch.net/test/read.cgi/tech/1158013550/ Part 9 pc8.2ch.net/test/read.cgi/tech/1146656260/ Part 8 pc8.2ch.net/test/read.cgi/tech/1137068104/ Part 7 pc8.2ch.net/test/read.cgi/tech/1122912733/ Part 6 pc8.2ch.net/test/read.cgi/tech/1109933426/
3 名前:デフォルトの名無しさん [2008/02/10(日) 15:07:51 ] ■ 過去スレ2 Part 5 pc5.2ch.net/test/read.cgi/tech/1102785854/ Part 4 pc5.2ch.net/test/read.cgi/tech/1091185216/ Part 3 pc5.2ch.net/test/read.cgi/tech/1079068715/ Part 2 f3.aaacafe.ne.jp/~null/cache/1079280501.html Part 1 pc5.2ch.net/tech/kako/1003/10036/1003674814.html
4 名前:デフォルトの名無しさん [2008/02/10(日) 15:09:00 ] ■関連スレ D言語なら俺に聞け pc11.2ch.net/test/read.cgi/tech/1108172110/ D言語を広めるスレ pc11.2ch.net/test/read.cgi/tech/1175432606/ D言語は多分コケると思っている人の数→ pc11.2ch.net/test/read.cgi/tech/1136288019/ 【次世代言語】D言語でOSを作ろう【Monaの移植?】 pc11.2ch.net/test/read.cgi/tech/1128794438/ バイナリをゲロる言語の魅力って何? pc11.2ch.net/test/read.cgi/tech/1160869311/ その他リンク 【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22 pc11.2ch.net/test/read.cgi/tech/1168166588/ eclipseってそんなに良いか?【エクリプス】 pc11.2ch.net/test/read.cgi/tech/1099300344/ 統合開発環境Eclipseプラグイン開発QA pc11.2ch.net/test/read.cgi/tech/1081517094/ "Code of the Nerds" Digital Mars C/C++ pc11.2ch.net/test/read.cgi/tech/1044210976/
5 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:13:29 ] >>1 乙!!
6 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:03:19 ] 乙
7 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:06:04 ] うは乙ww めちゃめちゃ補完されてるな ABA Gamesが入ってないのが不思議なくらいだ
8 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:01:50 ] >>1 芝のゲーム面白いね。俺はちょっと作れない。待つのがだめなんで。 >>7 最近はC#+XNAいってるぽい。
9 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:12:56 ] _2ch[1202623572][1].otsu
10 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:22:31 ] _2ch.write(["board_id": "tech", "thread_id": "1202623572", "content": ">>1 乙", "mail": "sage"]);
11 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 19:31:23 ] >>前スレ969 今はそんな泥臭いことしなくてもchar[]とかはscanされないよ Chamgelog: D 1.001: 型情報を使う GC 参照 www.kmonos.net/alang/d/1.0/changelog.html#new1_001 あとそのページは想像で書かれたと思しき間違いが多くてあまり当てにならない。 たとえば当時std.gc.disable()は実装が空だったので対策にならない、とかね。 GC知りたきゃソース嫁(正直ソレもどうかと思うが)
12 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:30:50 ] D言語終了のおしらせときまして、久々に飛んできました。 Microsoftは他をつぶすのは本当に得意ですね・・・ >>1 芝ゲー入れて、ABA games入れないとかどんだけwww
13 名前:デフォルトの名無しさん [2008/02/10(日) 21:59:26 ] >>11 GCは小ざかしいテクニック使わずにハンズフリーであるべきだよなあ。 C++風に完全に自分で管理するバージョンとか、 昨年のD言語フォーラムの例にあったフリーリスト使いまわし(配列のスライス返しとかで非常にうまくいくようで)とか、 いろいろあってもいいと思うけどね。
14 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:36:41 ] 必要性を感じないから誰も作ってないだけじゃないかね。 phobosのGC部分をすっかり入れ替えてしまえば、何とでもなる筈だけど。
15 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:56:47 ] ごく少数のプログラムで各自持ってきたGCが使われるだけなのと、 ほぼすべてのプログラムで処理系お仕着せGCのみ自動的に使われるのと、 どっちが現実的にマシになるか、って判断をするとして 後者を選んだのがDだ、ってことだね。 GC停止できるしmalloc類も使えるしnewのオーバーライドできるしautoもあるし、 で実用上も問題ない感じか。
16 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:05:33 ] 一時代を支えたセコイ技術をいつまでも信奉してしまうのは要素を変えながら度々繰り返されてきたことだからねぇ。
17 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:15:14 ] 2.011がまだウォルタソの脳内にとどまっているので おまいらは話題がないのですね
18 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:50:45 ] てーかD言語とDMDってをるたんが一人で開発してるの?
19 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 09:09:41 ] 芝は最近見つけたから記憶にあたらしかった。 ABAは……ごめんなさい、すっかりわすれてたorz
20 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:44:11 ] もうコンパイル通らないよね、たぶん。
21 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:52:19 ] テキストファイルから最後の50行だけを抜き出す方法で一番オーバーヘッドが少ない方法ってなんだろう。 今はstd.file.readでいったんファイルを全部読み込んで改行文字の個数を調べているが、 もう少し良い方法がないものか。
22 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:15:49 ] 全部読み込むのは明らかに無駄だろう。 少しずつ読み込んで改行数えればいい。
23 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:17:47 ] リングバッファに突っ込むとか
24 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:18:08 ] 一気に末尾まで移動して逆に辿っていくとかは?
25 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:24:27 ] 一行の文字数を見積もっておおよそ50行分を末尾から読み込み 足りなければどんどん前に進んでいけばおkっていうかD関係ねえwww
26 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 15:31:08 ] ところで、 version(Tango) { } else { } を、 version(!Tango) { } とか書けるようにならないかなあ。
27 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 15:40:56 ] できるならversion_notとかになりそう
28 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:35:42 ] だれか2007/02/17あたりにこのスレに貼られてた std/thread.dの修正ファイル持ってない?
29 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:40:02 ] >>28 ttp://f17.aaa.livedoor.jp/~labamba/?BugTrack%2F26 のバグを修正したものらしいけど、既にバグ修正終わってるよ。 ttp://d.puremagic.com/issues/show_bug.cgi?id=645 > Fixed dmd 1.023 and 2.007
30 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 21:36:26 ] >>29 ほんとだ で、ちょっといろいろテストしてみたんだが新しいバグを見つけた Thread.start()内の state = TS.RUNNING; hdl = _beginthreadex(null, cast(uint)stacksize, &threadstart, cast(void*)this, 0, &id);
31 名前:30 mailto:sage [2008/02/11(月) 21:41:42 ] 途中で送ってしまった state = TS.RUNNING; とスレッド作成の間にGCとかでpauseAll()が呼ばれると、 stateはRUNNINGなのにスレッドハンドルが入ってないためにpause()で例外が起きてデッドロックした 上記の二行を synchronized(Thread.classinfo) で保護したら大丈夫だった それとstart()のなかの synchronized (Thread.classinfo) allThreads[idx] = null; って synchronized (Thread.classinfo){ allThreads[idx] = null; nthreads--; } の間違いじゃね? あと Thread.setPriority()ってNORMALにも設定できるようにするべきだと思う
32 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:02:53 ] それ以前にWindows版の std.thread はスレッドハンドルを CloseHandle してないからな。 生成可能なスレッド数も4000までなんて制限ありそうなつくりっぽかったし。 std.thread 見て tango 使う決心した。
33 名前:32 mailto:sage [2008/02/12(火) 00:13:56 ] ソース見たら同時に実行可能なスレッド数が1024までだった。
34 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:50:05 ] >>30 29を見ると、修正パッチが投稿されるまで、をるたん11ヶ月もバグ放置してる。 こちらから修正パッチ投稿しないと、なおしてくれないのかも
35 名前:30 mailto:sage [2008/02/12(火) 00:57:35 ] あともう一個、waitでタイムアウトになったスレッドのstateがFINISHになってしまい、 GCでpauseAllが呼ばれてもそのスレッドが停止されないままGCが実行されてしまう というわけで誰か英語できる人パッチ投稿してもらえないだろうか ttp://www.csync.net/service/file/view.cgi?id=1202744810 Linuxのほうは良くわからないので弄ってない
36 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 10:06:30 ] >>35 投げてきた d.puremagic.com/issues/show_bug.cgi?id=1828
37 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 11:18:50 ] >>36 30じゃないけど、テラ乙 あといつもお世話になってます
38 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 11:36:16 ] www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) だれか貼れよw XNAいじってんだな
39 名前:30 mailto:sage [2008/02/12(火) 11:39:51 ] >>36 ありがとうございます 英語勉強しとこうλ....
40 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 13:46:46 ] >>39 英語って文法知ってるだけじゃ書けないよね。 さらにプログラムの話になってくると普通にはない用語とか言い回しとかあるし、どこで勉強すればいいのやら;
41 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:15:58 ] >>40 それこそ、DのニュースグループやらBugzillaやらを毎日読んでみればいいんじゃね? digitalmars.D.announce辺りなら流量もそんな多くないし、 ほとんど "すげー" とか "乙" だけみたいな短いレスが多いから、 楽に読み始められると思う。
42 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:31:19 ] インターネットで良く使われる英語の略語 kb.iu.edu/data/adkc.html Virtual Entity of Relevant Acronyms olympus.het.brown.edu/cgi-bin/info2www? (vera)Top 学校では教えてくれないバッドノウハウ英語 0xcc.net/blog/archives/cat_24.html 用語集 www.kmonos.net/alang/d/2.0/glossary.html
43 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:48:31 ] 学術論文とか技術英語のほうが単純な構文で楽なんだけどね
44 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 15:02:03 ] 「楽なんだけど」……続きがあるわけだ。
45 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 15:29:53 ] Changelogのための英文テンプレート集 d.hatena.ne.jp/pyopyopyo/20070920/p1 Using Bugzilla www.bugzilla.org/docs/2.20/html/using.html
46 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:18:59 ] phobosをどっかのレポジトリに入れてもらって みんなで気楽に修正できるようにならんかなー をるたんはコンパイラで忙しいみたいだし、 みんなでやればphobosの完成度も飛躍的に向上すると思うんだが
47 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:19:06 ] >>43 禿げ同 そっちの方が断然楽 短い口語的な英語はノリが分からなさ過ぎる
48 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:26:53 ] >>46 公式だったかは忘れた。 ttp://dsource.org/projects/phobos
49 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:29:09 ] 今のphobosはSVNで管理されてるわけだが たまにウォルターとアンドレイ以外の名前でコミットされてるよね あれのメンテナになるには直接掛け合わないといかんのかね
50 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:50:07 ] synchronized {}とsynchronized (o) {}って何が違うの?
51 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:50:18 ] >>49 48のページの Login → Register で登録して、ログインするのかな?
52 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:10:12 ] >>50 www.kmonos.net/alang/d/2.0/statement.html#SynchronizedStatement oが同じもの同士は同時実行されないんじゃないの?
53 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:18:01 ] >>50 synchronized {} == synchronized(this){}
54 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:37:26 ] >>53 それは間違いだろう synchronizedだけだとそのスコープ内のみ保護される
55 名前:53 mailto:sage [2008/02/12(火) 17:58:33 ] あーそうか。その通りだ。スマソ
56 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:31:46 ] >>50 ・全国で同時に一人だけ、貯金を引き出せる。 ・全国で同時に一人だけ、同じ口座番号から貯金を引き出せる。 この2つ、待ち時間がどう違うかを考える。
57 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:16:25 ] 文字列にコードを埋め込みたいんだけど、なにかいい方法ないかな? たとえば、下の1)を2)にしたい。 1) "a == ${a}, a/2 == ${a/2}" 2) format("a == %s, a/2 == %s", a, a/2)
58 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:37:13 ] CTFEで文字列を処理してmixinすればいいだけじゃないの?
59 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:28:58 ] >>57 これで良くね? 未テスト注意。 string myprint(string code){ return "format(\"" ~ code.replace("${", "\",").replace("}", ",\"") ~ "\")"; } void main(){ mixin(myprint("a == ${a}, a/2 == ${a/2}")); }
60 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:32:40 ] scopeの効能ってアクセス保護だけ?
61 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:37:12 ] いくらGCが働くと言っても80MBもメモリを使ってるのを見ると精神衛生上良くないな。 なんとかならんもんか。
62 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:48:18 ] >>60 どのscopeのことだい? 変数に指定するscopeストレージクラスなら、変数の書き換えを抑制し、 変数がスコープアウトするときに、変数の指すオブジェクトをdeleteする。 仕様上は。
63 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:53:02 ] >>61 定期的にGC走らせてやればいいんじゃないか? GUIアプリケーションならユーザの入力がないときとか。
64 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:04:53 ] >>63 fullCollect(); これを使えば良いのかな? これを処理する関数が終わったところに書いてみたけどタスクマネージャーから見てわかるような開放はしてくれなかった。
65 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:20:10 ] std.gcのなかで >>void minimize(); >>物理メモリの使用量を最小にします。 って言うの見つけた。試してないけど。
66 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:23:33 ] >>64 fullCollectの後minimizeかな。phobosのGCはこれ実装してないけど。 tangoのほうはつい数日前に実装されたっぽい。
67 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:23:53 ] >>62 回答どうもです。 scope の書きかたって scope クラス インスタンス = new クラス; で良いんですよね。 今作成中のプログラムで↑で書くと OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. D:\Programs\ProgLang\D\dmd\bin\..\lib\phobos.lib(winsock) Offset 25A8BH RecordType 00C3 Error 1: Previous Definition Different : _htons@4 --- errorlevel 1 とリンカがエラーを吐きます。 ためしに今作ってみた↓だと問題なくコンパイル、リンクが出来たのですが。。。 import std.stdio; void main(){ for (int i = 0; i < 5; i++){ scope win w = new win(); w.wl("test"); } } class win{ void wl(char[] s){ writefln(s); } }
68 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:27:03 ] >>64 fullCollect()でもminimize()でも一度増えたメモリ使用量は減ってない気がするな これってこういうもんなの?それともバグか何か? >>66 と思ったら実装されてないのかよ。。。
69 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:33:16 ] >>66 うわっ 実装されてなかったのか… どおりで何も起こらないわけだ。
70 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:35:02 ] >>67 んー、それはリンカエラーだからscopeとは関係なさそうだ WS2_32.LIBリンクするのやめてみたら。
71 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:39:00 ] fullCollect()は参照されてないもののデストラクタを呼ぶ minimize()は参照されてないところのメモリを開放する って感じか。でminimize()は未実装と
72 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:42:58 ] >>70 リンクしないとプログラム動きません。。。
73 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:50:31 ] class A{ this(){ writefln("A:constructer"); } ~this(){ writefln("A:destructer"); } } void main() { scope A a = new A(); a = null; } こうするとデストラクタが呼ばれないんだけどこういうもの?
74 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:54:36 ] >>73 それずいぶん前にもここで見た気がするんだが、まだ直ってないのか
75 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:55:53 ] >>73 そういうもの。スコープの最後でdestructorを呼ぶから。
76 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:01:57 ] >>74 コードが不正だって結論じゃなかったっけ……と思ったけど > scope への初期化以外の代入も禁じられています。 > Rationale: これらの制限は、 もっともな理由が見つかれば将来的には緩和されるかもしれません。 なんて書いてあるな。緩和された? ……これは緩和せんでもいいような。
77 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:04:21 ] >>75 スコープの外れた時点で入ってるもののデストラクタを呼ぶってのはわかるんだけども、 scope A a = new A(); って感じに変数宣言と同時に代入したもののデストラクタが二度と呼ばれなくなるっぽい scope A a; a = new A("a"); a = new A("b"); こんな感じにわけると"b"の方のデストラクタがスコープ外れたときに呼ばれて ""
78 名前:77 mailto:sage [2008/02/13(水) 01:05:57 ] 途中で送ってしもうた scope A a; a = new A("a"); a = new A("b"); こんな感じにわけると"b"の方のデストラクタがスコープ外れたときに呼ばれて "a"のほうはプログラム終了時にちゃんとデストラクタが呼ばれた
79 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:07:14 ] >>75 a = null; を無くすと、デストラクタが呼ばれるんだが・・・。
80 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:08:40 ] >>76 なるほど そしたらコンパイルエラー出してくれればいいのにな
81 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:10:54 ] >>79 ?
82 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:16:27 ] デストラクタが呼ばれないことがあるのはきついな。
83 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:26:27 ] どう考えてもコンパイラのバグだろ。
84 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:49:03 ] >>76 緩和されてなくて、scope変数の中身を変えるコードの時点で未定義動作だろね。 エラーが出ないのは前からなんだけど、scopeはfinal扱いにすりゃいいんじゃないかと思う。 …って、もしかして変数宣言のfinal属性って仕様は消滅してる? constな伝播性のない定数的扱いで使いがありそうだったのに。 どっかで話があった、「宣言時やコンストラクタ以降でも構わない、 一度だけ代入する変数」って概念を与える属性として復活してくれりゃいいなあ。
85 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:51:50 ] finalはなかった事になりました。
86 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:38:51 ] finalは最初からなかったです
87 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:41:57 ] finalは生きてるよ、enumの心の中で。
88 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:42:15 ] え?いつの間に final なくなったの? それ2.0の話?
89 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:57:09 ] TangoのConduitsの辺りを読んでみようと思って久しぶりにマニュアル見てみたら ttp://www.dsource.org/projects/tango/wiki/Manual これ分散コンピューティング用のライブラリか? ttp://www.dsource.org/projects/tango/wiki/ChapterClustering なんかすっげーのを入れる気なんだな
90 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 08:21:30 ] まじか
91 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:51:47 ] >>71 phobosには実装されないんでしょうか…。
92 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:02:14 ] なんかphobosの整備はをるたんの中で優先度最低っぽいから……
93 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:35:56 ] TangoがDの命名規約守ってくれればをるたんもTango任すんじゃないのかなあ
94 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:36:47 ] std.randomがクラスじゃなくて構造体で実装されてるのはなんで?
95 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:38:45 ] 値型で十分だからじゃないかな
96 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:39:06 ] 軽いからでしょ。
97 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:51:12 ] 早いw いや、十分だし実際値型で実装できてるんだけども。 UniformDistributionとかで使うから各エンジンのインターフェースは揃えてるわけで、こういうのって継承でやるのが普通だよね? まあ軽いのかもしれないが、わざわざ値型を選択する理由になるのかなーとか思っていた。結構違うもんなのかね。サンクス。
98 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:52:23 ] 乱数は速度が要求される事もあるし、 仮想関数の呼び出しコストを嫌ったんじゃね。
99 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:01:52 ] たかだか関数一つでクラス化されたら、使うのが面倒くさくなる。。。
100 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:39:27 ] 面倒くささは一緒だろう。
101 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:18:56 ] 構造体にインターフェースを適用させようぜ的な話があった気がするんだけど、どこで沸いた話だっけ。
102 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:23:10 ] カンファレンスのスライドじゃなかったか
103 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:39:32 ] もう関数はタプル返せるようになった?
104 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 08:52:09 ] 返せないときがあったの?
105 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 08:59:35 ] 104は未来人か何かか
106 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:24:03 ] 104はあたしの所に来なさい、以上。
107 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 12:55:09 ] "Learn to Tango with D" がアマゾンから届いた。 索引は欲しかったな...
108 名前:104 mailto:sage [2008/02/14(木) 13:07:03 ] Tuple!(uint,"w", uint,"h") size(); こういうことじゃなくて?なんか勘違いしてたらごめん
109 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 13:52:15 ] std.typeconsのタプルという名前の汎用構造体型じゃなくて、 template Tuple(T...){ alias T Tuple; }の方のタプルだよ。
110 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:49:27 ] typeconsなんてあったんだ今知ったです
111 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:11:16 ] tangoでGCを切って、GCコードを含めずコンパイルする方法ってどこかに載ってる?
112 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:23:17 ] そんなことしたらそもそもTango自体が使えなくなるんじゃないか?
113 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:31:52 ] >112 そういえばそうだな。 フックさせるDLLはGC切りたくて、gcstub.objリンクする方法試してみたけど上手くいかなかった。 というかそもそもgcstub.objがtango+dmdのセットに入ってなかったからphobosの方から取ってきてた。 tangoは使えなくなるんだし、別にtangoセットのdmd使う必要もないな。...試してくる。
114 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:49:06 ] /⌒ヽ / ´_ゝ`)すいません、ちょっと場所お借りしますよ・・・ | / | /| | // | | U .U D言語BOF オープンソースカンファレンス2008 Tokyo/Spring www.ospn.jp/osc2008-spring/ サイトにて参加登録が始まりました。 空きがあれば当日参加できますが、申込数に応じて部屋(の大きさ)が変わるらしいので登録お願いします。
115 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:58:16 ] import std.c.stdio; void main(){ printf("Hello"); } を dmd main.d -c dmd main.obj gcstb.obj ってしたら、exeが出来たんだけど、実行しても何も表示されない。
116 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:22:23 ] エントリポイントがないから。 extern(C) int main(int argc, char* argv) { main(); return 0; }
117 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:33:14 ] >>116 を追加したらちゃんと表示された。サンクス。 ってことはGCのコード外すとDプログラムの前処理や後処理のコードも消えるってことか。 Dのプログラムはどこにエントリポイントがあるのかと思ってたけど、そんなところにあったのか。
118 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:44:48 ] gcstubリンクすると連想配列使えないとかforeach使えないとか、 様々な悪夢が起きるからやめたほうがいいと思うよ。
119 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:45:21 ] >>117 エントリポイントはphobosが持ってる。
120 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:03:11 ] www.kmonos.net/alang/wnd/topics/winapi.ja.html この辺を参考にしてwin32プログラムに挑戦してるんですが、 以下のプログラムを実行すると、強制終了してしまいます。 これって何が悪いんでしょうか。 import win32.core, std.string; extern (Windows) int WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { format("%d", 2); return 0; } コンパイラはDMD v2.010です。
121 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:19:43 ] GCとか初期化する前にformat読んだからじゃない? www.kmonos.net/alang/d/2.0/windows.html
122 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:31:54 ] できました!ありがとうございます。 自分でWinMainを書くと、phobos側でやってくれたGCの初期化処理が行われないんですね。 納得です。
123 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:47:40 ] 自分でWinMainってなんの為に書くの? 公式だと書いてるけどわなDには「書く必要はない」ってあるし。引数が欲しいから?
124 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 05:41:03 ] >>123 あ、そこら辺俺も知りたい。 普通の言語で、エントリポイントは何をしてからmainに回ってくるのか、mainの前にいくつ経由してくるのか、 WinMain/DllMainだとどう違うとか。それで、D言語だと他のと違ってこれをする。とか。 エントリポイントあたりを解説してるサイトとかないかな。 あと自分で調べたこともちょっとメモ。間違ってたら指摘ください。 GC切ったプログラムに挑戦してる中で、DllMain()で自分で呼んでる_minit()/_moduleCdtor()/_moduleUnitTests()/_moduleDtor()が何をしてるか知りたくてソース見てきた(Phobos)んだけど、 _minit()はModuleInfoって奴をD言語形式に変換してる。おそらく_moduleCdtorとか呼ぶ準備。アセンブリでたった数行だった。 _moduleCtorはコンストラクタ実行らしい。ソース読んでも良く分からなかったけど、コンストラクタ/デストラクタ/単体テストの準備をしてたと思う。あと中でnewが使われてたから、GC切った環境でこれ呼ぶと落ちる。 残りの二つはおそらく_moduleCtorの準備したデータにアクセスしてる。_moduleDtorはデストラクタ実行。_moduleUnitTestsは単体テスト実行。他のことはしてないっぽい。 というわけで今はモジュールコンストラクタも単体テストも書かず、↑の関数一つも呼ばずにDLL作ってます。
125 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 06:39:29 ] >>123 Win32APIの勉強をするにあたって、 wisdom.sakura.ne.jp/system/winapi/win32/index.html ここを参考にしてるからです。 形式を合わせただけなので、WinMainを自分で書いたことに特に意味はありません。
126 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 09:53:56 ] ちょっと解説してみようか。 たとえばCのスタートアップでは、コンソールハンドル(stdinとかね)のopen、 例外機構を持つ言語ならそのセットアップ等、プログラムを実行するために必要な準備をしてから、 ユーザープログラムの開始点を呼び出す。 もちろん、後処理(開いているハンドルのcloseとかatexitの関数実行など)も含まれている。 DMDの場合、Dとしてのスタートアップの前に、DMCのスタートアップがあるのが少しややこしいところ。 DMCのスタートアップ→DMDのスタートアップ→ユーザープログラムという三段構えになっている。 DMCでは、ソース中に含まれるmain、WinMain、DllMain等を判別し、 それに応じた(DMCの)スタートアップを自動的にリンクするようになっている。 この仕組みをDMDから使用した場合、Phobosに含まれるextern(C)のmainがDMCからみたmainということになり、 そちらが呼び出されることによって、Dのスタートアップが実行されるという仕組みになっている (DMCからは、いわゆるextern(D)な関数の変名規則は未知なので、Dのソースコードのmainは、DMCからmainとして認識されない)。 ライブラリのリンク優先度は低いので、先にWinMain等が見つかると、 そちらのスタートアップが使用されるため、Phobos内のextern(C)のmainは呼び出されず、 Dのスタートアップは実行されない。 WinMain等で手動でスタートアップの関数を書かなければいけないのは、この仕組みのため。
127 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:47:29 ] 構造体のポインタにwithしてもパラメータ呼び出せるようにならないかなー
128 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:48:59 ] 言葉間違えすぎわらったです パラメータじゃないメンバー
129 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 20:52:19 ] >>127 *付けて with(*p) とかにすると大丈夫みたいだよ。
130 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 21:50:32 ] >>129 う、うぃずぴー・・・
131 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 05:07:57 ] 最近このスレ寂しいな。 ところで、Cスタイル可変個引数関数を使おうとしたんだけど、 extern(C) void foo( int a, ... ){ void* p = _argptr; } って感じで_argptrを使おうとすると、 Error: undefined identifier _argptr とエラーが出た。多分バグかと。 とりあえずC言語で可変個引数のメモリ配置とか調べてみると 単純に引数が順番に置かれてるだけだった。 だから解決策として、 void* p = cast(byte*)&a + int.sizeof; って自分で求めてこれを_argptrとして使ったら今のところ上手くいってる。これって既出? あとついでにDスタイルの可変個引数のメモリ配置も調べてみたんだけど、どうやらCスタイルと一緒っぽい。
132 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 06:42:17 ] Tango XML now in trunk! dsource.org/projects/tango/forums/topic/393 超期待
133 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 08:44:31 ] >132 おぉーこれは…… ってかTangoってなぜあのへんてこな構文なのか誰か教えてorz
134 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 09:17:40 ] >>133 どのあたりが変? 実はphobosあまり知らずにtangoから入ったからあまり使いにくさを感じない。 結構すっきりしてて使いやすいと思う。 確かにモジュール名が大文字始まりなのは最初は変だと思ったけれども。
135 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 09:28:18 ] 2.0の対応予定無いのかなあ。 モジュール名のこととか、なんかもうちょい足並みが揃って欲しい。
136 名前:133 mailto:sage [2008/02/18(月) 09:55:02 ] Cout("Hello")(" ")("World").newline; ttp://www.dsource.org/projects/tango/wiki/TutSimpleIO とか、とにかく \n が .newline ってのが馴れないんだよね。
137 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 09:59:55 ] あー、それは確かに驚いたけど、そんな書き方自分は使わないからあんまり気にならないかなw というかいつもStdout使ってる。あれ?Coutってもしかして\n使えない?
138 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 10:18:05 ] >>131 そういや仕様書のCスタイル可変個引数の例文の方でも、 Cのリンケージと言いつつextern(C)しない_argptrのコード例しか 載ってないんだよな。 2.010で再現した。バグだろね。たぶんスレでは初出。
139 名前:131 mailto:sage [2008/02/18(月) 10:22:47 ] あ、バージョン書き忘れてた。自分のはDMD1.026です。 ちなみにぐぐってみると www.digitalmars.com/d/archives/digitalmars/D/What_happened_to_argptr_47894.html なんてのがあった。 2007/2 ...もう一年前だな(遠い目
140 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 19:15:32 ] >>132 まだ candidate だけど phobos にもこんなのがきているわけだが。 dsource.org/projects/phobos/browser/candidate/phobos/std/xml.d
141 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 19:38:04 ] 1年でそんなに変わるもんじゃないですね
142 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:06:32 ] ここで聞くか、win32apiのところで聞くか迷ったけどここで。 ウインドウを左クリックしたら、メニューを出すプロシージャを書いたんだけど ちゃんと”終了”というメニューが出てこない。(何か短いメニューのようなものが出る) どこが悪いんでしょう。 wndは項目がクリックされたらメッセージを送るウインドウのハンドルです。 case WM_LBUTTONDOWN: POINT nowPoint; GetCursorPos(&nowPoint); SetForegroundWindow(wnd); hMenu = CreateMenu(); AppendMenu(hMenu, MF_ENABLED | MF_STRING, 1, cast(wchar[])("終了")); TrackPopupMenuEx( hMenu, TPM_RIGHTALIGN | TPM_BOTTOMALIGN, nowPoint.x, nowPoint.y, wnd, null ); break;
143 名前:デフォルトの名無しさん [2008/02/19(火) 01:19:20 ] cast(wchar[])じゃなくてcast(wchar*)とか?
144 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:07:31 ] >142 CreateMenu() じゃなくて CreatePopupMenu() じゃないでしょうか。
145 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 04:31:46 ] >>142 cast(wchar[])でも問題無いが、cast(wchar*)を使うべき。 cast(wchar[])"終了"と書くと文字列が配列として作られるから、長さ情報とかも生成される。 cast(wchar*)"終了"と書くと文字列へのポインタとして作られるだけで、配列の情報は生成されない。
146 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 05:37:00 ] "終了\0"w.ptrが一番カッコいい気がするのは俺だけ?
147 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 05:40:10 ] いや、お前だけじゃないw でも毎回そう書くのは面倒だけどな。
148 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:00:55 ] >>140 Phobosいろいろ修正されてるんだな
149 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:23:39 ] >>144 それでした。 ありがとうございます。 >>143 >>145 わかりました。windowsapiに渡すときはそうすることにします。
150 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:25:39 ] >>146 ゴルフ的な理由で俺はこう書いてる。 &*"終了"w
151 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:57:30 ] 関連質問かもしれないんですけど、 cast(wchar*)"ほげ" って末尾にナル文字は含まれてるんですか?
152 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:45:45 ] そういうケースの場合自動的にNULL終端になったと思います。
153 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 13:24:01 ] D言語用のまともなDirectInputのポーティングってないんでしょうか? 調べても古いのしか出てこなくて。
154 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:19:27 ] >>151-152 文字列リテラルはゼロ終端が保証されてる。
155 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:45:13 ] real x = real.nan; assert( x == real.nan ); なぜこれが通らないんだ… @ DMD 1.026
156 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:01:02 ] nanとの比較は常に成り立たないんじゃなかったかな。 std.math.isnanを使うべし。
157 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:04:41 ] >>156 サンクス! なんかわかりにくいなぁ…
158 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:11:05 ] ttp://www.kmonos.net/alang/d/1.0/expression.html >どちらか一方でも NaN であれば、 == はfalse、!=はtrueになります。 とあるような
159 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:12:48 ] >>155 assert( x !<>= real.nan ); ttp://www.kmonos.net/alang/d/1.0/expression.html isnanのほうがきれいだな
160 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:00:09 ] ja.wikipedia.org/wiki/NaN 浮動小数自体の仕様だよ
161 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:58:58 ] > 1は何乗しても1だが、NaN乗しても1と言えるのか (;´Д`)
162 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:03:39 ] >>161 誰がうまいこと(ry
163 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:08:50 ] >>151 www.kmonos.net/alang/d/2.0/interfaceToC.html printf() の呼び出し
164 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:33:12 ] >>162 wikipediaの中にあんな一文があると どうしても声出して笑っちまうよな。 ちくしょう。油断してた。
165 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:41:51 ] 0を何乗しても0だが、何を0乗しても1 では0を0乗したら0か、それとも1か? という話と同じ匂いがするな
166 名前:デフォルトの名無しさん [2008/02/19(火) 20:45:17 ] 【技術】マイクロソフト、新開発言語「D」を開発中[08/02/07] news24.2ch.net/test/read.cgi/bizplus/1202379742/
167 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:48:40 ] Java潰しにやっきになってたときと同じ匂いがするの
168 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:49:44 ] >>165 3! = 6 2! = 2 1! = 1 0! = 1 ?
169 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:58:41 ] >>168 0! = 1 はいちおう数学的に証明できますから
170 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:00:29 ] 証明というか定義の問題のような
171 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:03:23 ] 0^0 0/0 どちらも未定義なの?
172 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:11:05 ] lim[x→+0] 0^x = 0 lim[x→0] x^0 = 1 lim[x→0] x^x = 1 あるえー?
173 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:19:39 ] lim[x→-0] 0^x = ?
174 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:25:09 ] lim[x→0] x^x って 0 じゃね?
175 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:29:53 ] 0.00001^0.00001=0.9998848773724686...
176 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:37:37 ] 数学板でも0^0が1か0かの論争よくやってるね。
177 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:52:36 ] テンソルの次は0^0かよ・・・w
178 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:08:18 ] >>132 ,140 なんかこういうの出てくると、いよいよ作りかけの俺製XMLライブラリを世に出しがたい雰囲気になってきた。
179 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:15:25 ] n=0のとき lim[x→0] n^x = ? n<0のとき lim[x→0] n^x = ?
180 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:16:43 ] >>131 バグじゃなくて仕様でしょ。 _argptr は _arguments から計算されるけど、extern(C) だと _arguments が渡されない。 つまり _argptr が使えない。
181 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:25:22 ] >>180 www.kmonos.net/alang/d/2.0/function.html > Cスタイル可変個引数関数 (中略) > Cスタイル可変個引数関数は、Cの可変個引数関数の呼び出し規約と一致していて、 > printf のような Cのライブラリ関数を呼び出すのに利用できます。 > 可変個引数関数の中では、 特別なローカル変数 _argptr が使えます。
182 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:27:18 ] >>180 仕様書に_argptrが使えるって書いてあるから、 「バグじゃねえの」って話になってるんでしょ。 まあ、普通にstd.c.stdarg使うえばいいんだろうけどね。
183 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:31:53 ] >>182 tangoだとstdargがまだ未実装みたいだった。 Phobosも使い方が良く分からない。 Cでも可変個引数は使ったことなかったから知らないんだけど、とりあえずCの解説サイトに載ってるように書いても使えなかった。
184 名前:183 mailto:sage [2008/02/19(火) 22:38:02 ] すまん、 >tangoだとstdargがまだ未実装みたいだった。 の行は無視してくれ。多分全然関係ないところで勘違いしてる。
185 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:39:19 ] クロスプラットフォームなGUIを使いたいんだけど、wxDがいいのかな? でももう更新されてないみたいだし、D->wxD->wxC->wxWidgetって中継が多いけど、実行速度は大丈夫なのかとか気にしてるんだが。
186 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:34:12 ] % ウォルター曰く A whole lotta library improvements. www.digitalmars.com/d/1.0/changelog.html ftp.digitalmars.com/dmd.1.027.zip www.digitalmars.com/d/2.0/changelog.html ftp.digitalmars.com/dmd.2.011.zip I had planned on doing struct destructors for this update, but they are not done yet.
187 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:38:05 ] Version D 2.011 Feb 18, 2008 New/Changed Features * std.typecons: fixed code bloat issue; added Tuple.toString; added function tuple(); fixed unlisted bug in enumValuesImpl. * std.process: added function shell(). * std.math: minor change in approxEqual. * std.contracts: added functions pointsTo() * std.numeric: minor unittest fixes. * std.bitmanip: fixed code bloat issue, reintroduced FloatRep and DoubleRep. * std.conv: minor simplification of implementation. * std.regexp: added reference to ECMA standard in the documentation. * std.getopt: changed return type from bool to void, error is signaled by use of exceptions. * std.functional: added unaryFun, binaryFun, adjoin. * std.string: updated documentation, changed code to compile with warnings enabled. * std.traits: changed FieldTypeTuple; added RepresentationType Tuple, hasAliasing; fixed bug 1826; added call to flush() from within write; fixed unlisted bug in lines(). * std.algorithm: added map, reduce, filter, inPlace, move, swap, overwriteAdjacent, find, findRange, findBoyerMoore, findAdjacent, findAmong, findAmongSorted, canFind, canFindAmong, canFindAmongSorted, count, equal, overlap, min, max, mismatch, EditOp, none, substitute, insert, remove, levenshteinDistance, levenshteinDistanceAndPath, copy, copyIf, iterSwap, swapRanges, reverse, rotate, SwapStrategy, Unstable, Semistable, Stable, eliminate, partition, nthElement, sort, schwartzSort, partialSort, isSorted, makeIndex, schwartzMakeIndex, lowerBound, upperBound, equalRange, canFindSorted. * std.thread: fixed so it compiles with warnings enabled. * std.file: made getSize() faster under Linux. * std.random: fixed so it compiles with warnings enabled; improved function uniform so it deduces type generated from its arguments. * std.format: added fixes to make formatting work with const data. * std.path: minor documentation changes.
188 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:38:55 ] # Added std.xml # Added std.complex # Added std.iterator # Added std.c.linux.tipc # Added std.c.linux.termios # Added nothrow keyword # Re-enabled auto interfaces. # Now allow static arrays to be lvalues. # Now allows implicit casting of null to/from const/invariant. # Now allows implicit casting of StructLiterals if each of its arguments can be implicitly cast. # Now allows implicit casting of structs to/from const/invariant if each of its fields can be. # Added pragma startaddress. # .tupleof can now access private fields of a struct/class
189 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:39:47 ] Bugs Fixed * Fixed D/66406 Remaining const niggles #1 - Custom POD types * Fixed display of ddoc template parameters that were aliased * Fixed bug in std.file.readln() for Windows in translated mode * Bugzilla 1072: CTFE: crash on for loop with blank increment * Bugzilla 1435: DDoc: Don't apply DDOC_PSYMBOL everywhere * Bugzilla 1815: foreach with interval does not increment pointers correctly * Bugzilla 1825: local instantiation and function nesting * Bugzilla 1837: Make dmd stop flooding the console: prints content of passed parameter file * Bugzilla 1842: Useless linker command line output during compilation on Linux
190 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:45:44 ] Version D 1.027 Feb 18, 2008 New/Changed Features * Re-enabled auto interfaces. Bugs Fixed * Fixed display of ddoc template parameters that were aliased * Bugzilla 1072: CTFE: crash on for loop with blank increment * Bugzilla 1435: DDoc: Don't apply DDOC_PSYMBOL everywhere * Bugzilla 1815: foreach with interval does not increment pointers correctly * Bugzilla 1825: local instantiation and function nesting * Bugzilla 1837: Make dmd stop flooding the console: prints content of passed parameter file * Bugzilla 1842: Useless linker command line output during compilation on Linux
191 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 05:29:34 ] 作者はりきってるな
192 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 06:24:51 ] ちょ、すごい量だなw
193 名前:デフォルトの名無しさん [2008/02/20(水) 06:28:32 ] MSがD言語作り始めたから対抗してるんだな
194 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 07:58:43 ] ライブラリ強化期間? tangoの立ち位置がよくわからなくなってき……
195 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 08:19:29 ] assert( x == x );こうすればisnanできるんじゃね?
196 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 08:58:39 ] 同時に使用できないなんてことはさっさとやめて TangoはC++に対するboostのような道を模索した方がいいと思う
197 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 08:59:11 ] D言語ってC言語出来るんならすぐ使えるの?
198 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 09:26:22 ] 文法はちょっと違うけど、Cの標準関数もそのまま使えるから簡単。
199 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:51:44 ] ver1で本家dmd、phobosを使っています。 "windows.h for D"を使いたいのですがエラーが出てワケワカランです。 パスの通ってるとこにライブラリなどを配置して private import win32.ansi.windows; こんな感じでインポートして >dmd hoge.d win32a.lib こんな感じでコンパイルすると (ry)\winbase.d(50): Error: identifier 'HANDLE' is not defined (ry)\winbase.d(50): Error: HANDLE is used as a type (ry)\winbase.d(50): variable win32.winbase.INVALID_HANDLE_VALUE voids have no value (ry)\winbase.d(62): Error: identifier 'STATUS_WAIT_0' is not defined こんなのがずらずらと出ます。 なにかが足りないのでしょうか? PlatformSDKをDに対応するように変換してどうのこうのという作業をしていないのですが、 それが原因でしょうか?win32a.libでは足りない?まさかHANDLEを定義しろと?
200 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 11:11:21 ] こっち使うべし www.dsource.org/projects/bindings/wiki/WindowsApi www.kmonos.net/alang/wnd/topics/winapi.ja.html 4年前のソースなど絶対コンパイル通らんよ。。。
201 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 11:44:42 ] あと>>200 の使っても今はコンパイラがエラー吐いて止まるはず 過去ログに話出ていて原因は定義順だったと思う ちなみに解決済みのバージョンがどこかで公開された様子はない
202 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 11:56:09 ] >>185 クロスプラットフォームのGUIライブラリって今あるのかねえ 今はDFLをGTKベースに書き直しているはずだからそのうちこれが使えるかもしれないけど 速度は実測しかない
203 名前:199 mailto:sage [2008/02/20(水) 12:10:02 ] >>200 入れたらすんなり通りました。 ありがとうございます(・∀・) >>201 いまんとこエラー吐いてないです。 と言ってもショボイAPIしか呼んでませんけど・・・
204 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:51:04 ] >>201 trunkでは直ってると思った
205 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:53:17 ] >>202 dwtの新しいのってどうなんだろ。Tango前提なので試せてないんだけど
206 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:35:37 ] 今回のバージョンに>>30-36 が反映されてないね。
207 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:25:18 ] >>194 強化期間というより、dsourceで検証まで終わった新コードをまとめて承認したという感じじゃないのかな しかしxml読みにこのスレでの頂き物を活用してた俺涙目 でも骨子は同じだからstd.xmlに切り替えてみる omegaの方ありがとうございました
208 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:37:31 ] 3/1のBoF、時間が前に延びて10:15開始になってるね。
209 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:08:53 ] ws2_32.libの中にはWSAAsyncSelectがちゃんとあるんだけど、 WSAAsyncSelectを使おうとすると未定義のシンボルって言うリンクエラーがでる。 何ででしょう。
210 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:15:39 ] std.xmlて入力がInputStreamじゃなくてstringなんだな。 でっかいXMLファイルもとにかく一度全部読み込む必要があるのか……
211 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:18:44 ] >>209 リンケージが違うとか。
212 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:53:43 ] >>210 それはきちぃ・・ けど、使いどころはあるけどね
213 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:04:10 ] >>210 配列のように扱えるStreamがあればちょっと改造して使えるんじゃない?
214 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:51:17 ] BoFで 「Walterだけど何か質問ある?」 というネタをやるとしたら何か質問ある?
215 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:58:10 ] const 関連の仕様に迷いはありませんか?
216 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:15:58 ] 標準ライブラリを tango に頑張ってもらう気は?
217 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:16:47 ] もうかりまっか?
218 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:11:47 ] マイクロソフトさんになにかひとこと
219 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:16:48 ] >>217 どう訳せと? 「Dの開発は収入になりますか」とかそんなん? 「CD売れてますか?」とおもったけどこれDじゃなくてC++だな
220 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:20:59 ] よく見たらTシャツとマグカップ売ってた
221 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:25:15 ] 火星柄の時計もなかなか
222 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:00:46 ] 文字列の扱いをもう少し国際化するつもりはありませんか?とか。 折角の機会だから、「ヲルタンに好き勝手要望・提案を伝えてもらえるコーナー」 なんてあったらすげー行きたくなるなぁ、と思いつつも 自分じゃ何も貢献出来なさそうなのであった。
223 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:14:22 ] ICU並のUnicode処理を標準ライブラリに入れろってのも無理な話しだしなあ
224 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:17:40 ] >>210 SAX 風のイベントモデルで DOM 風に一括読み込み必須というのはアレだな この段階ではあんまり気にすることもないと思うけど >>213 あれそれ何かなかったっけーと思ったら std.stream.TArrayStream は逆か
225 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:58:08 ] データを受け取るときは全てStreamで受け取るべきだ!
226 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:59:59 ] しかしinvariant stringで受け取るとpureにできたり(予想)速度的な利点がありそうなかんじ。 うまくラップするのが賢そうだな
227 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:01:46 ] ICU使ったことないけど、あれってコア部分だけ組み込んで、 各エンコーダやユーティリティは別途入れるとかの使いかたはできへん?
228 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:04:04 ] >>227 ICUは糞でかいから普通はDLLにして動的リンクする。
229 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:40:18 ] dmd 2.011で,配列 arr の中から条件に合致する要素だけを 画面に表示するにはどうしたらよいのだろう auto arr = [1,2,3,4,5]; assert(find!("a > 3")(arr) == begin(arr) + 3);//このfindは最初に見つかった要素しか返さない foreach (i; /*findの結果を配列で返す方法があるとか?*/) { writefln(i); }
230 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:49:11 ] foreach(i; arr.filter!(q{ a > 3 })) { writefln(i); }
231 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:05:07 ] なるほどfilterを使うのかthx
232 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 04:06:55 ] 標準ライブラリが文字列mixinを大々的に使い始めたんだな。怖い怖い
233 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 04:22:28 ] うひょー
234 名前:デフォルトの名無しさん [2008/02/21(木) 07:15:36 ] D言語関係無いけど、インデントするときタブとスペースどっち使ってる? やっぱスペース4個にするのがベターだろうか。
235 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 07:45:24 ] アンチスペースインデント、タブインデント信者の俺に対する挑戦だな。
236 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 08:03:00 ] タブインデント信者だが、たまにスペースインデントを使いたくなる しかし俺の伝説のIDEは行頭から連続したスペースは4文字ごとにタブに自動変換される仕様 スペースインデント派とのソース交換でもにゃる
237 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 08:06:25 ] >>236 お前とソースを交換するスペースインデント派にはいい迷惑だな。 バージョン管理も狂うし。ダメダメじゃん、お前の伝説のIDE wwww
238 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 10:37:10 ] >>234 本当に文頭のタブ桁ごとのインデントしか行わないならタブもありかもしれないけど、 大抵関数引数の整列とかでもインデント使ってて、それゆえにスペースが 混入してたりするから、結局そいつのタブ間隔以外では表示が崩れるんだよね。
239 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:25:28 ] >>238 タブ派だがスペース混入とかしないぞ。 混在されるとタブストップによって表示が崩れるのが嫌ってのは同意。 インデントは全部スペースか全部タブかにしてほしい。
240 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:39:25 ] Phobosは基本スペースだけどもたまにタブ混じってるな。
241 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:57:06 ] phobosはtab幅が8なのが気に食わない
242 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 12:08:38 ] >>241 激しく同意。4がスキ。
243 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 12:53:41 ] >482-483 タブ幅とインデント幅は別物なので注意な。 Windowsしか知らない連中はそこの区別が付いてないことが多いけど。 タブ幅は8で固定。WindowsのDOS窓とかもそうなってる。 インデントは主義によって4とか8とか2とか色々ある。
244 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:05:51 ] ソースはソニー?
245 名前:デフォルトの名無しさん [2008/02/21(木) 13:07:31 ] ここを読む人はLinux使える人のが多いんじゃないか?
246 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:08:39 ] コーディングスタイル論争で、 「タブ幅は伝統的に8だから、8以外は間違ってる」 とか言い張る子が必ずいるよね(´・ω・`)
247 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:10:20 ] いまどきタブ幅変えられないエディタなんかないだろ…
248 名前:デフォルトの名無しさん [2008/02/21(木) 13:12:41 ] つnotepad.exe ・・・そんな目で見るなって。
249 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:22:40 ] パッチ作るときとか面倒だからタブ幅は1でお願いします。
250 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:40:05 ] >247 でも、ソースコードを扱うのはエディタだけじゃないからね 端末ソフトとかプリンタとかあるし
251 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:52:58 ] いずれにしてもインデントにタブを使うなら、 インデント幅ははタブ幅の整数倍にしてくれないと困る。
252 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:16:41 ] インデント幅だかタブ幅の単発スレがム板かマ板にあった気がするけど、 とっくに落ちたのか、コーディング規約スレの方に統一されたのか… >>239 そういえば、スペース混入が無くても、行頭以外でタブ使ってて 幅によって整列が崩れることもよくあるんだよね。行末コメントの整列とか。 結局、スペースによる桁揃えの併用か、簡素なインデント以外の 桁揃え整形を諦めるか、って方向になっちゃうんだよな。 「インデントの幅」というコーディングスタイルの好みの違いたった一つを 緩和するためだけに他の整形を放棄するのは、可読性の点で コーディングスタイルとして合理的なじゃない気がする。 完結してる環境で規約として採用するにしてもナシじゃない?
253 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:49:37 ] void func() body { } か int func() body { } みんなはどうしてる?
254 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:53:00 ] 俺は後者だな。 前使ってたエディタが前者だとアウトラインを生成できなかったから。
255 名前:デフォルトの名無しさん [2008/02/21(木) 14:57:24 ] void func() body { } でいいじゃん
256 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:09:00 ] 後者だ
257 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:47:21 ] 後者だね、インデントはほしい。
258 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:08:04 ] どっちにしろなんかインデント汚くなるし in 使わないで最初に assert() 入れればよくね? out 使わないでscope(exit) assert() 入れればよくね? って思うのは俺だけかな…
259 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:21:22 ] >>224 昔書いたソース漁ってたらそれっぽいのあった。D1.0だけど class StreamAsArray(T) : FilterStream { this(Stream source){ super(source); } size_t length(){ return super.size; } T opIndex(size_t index){ T ret; super.position(cast(ulong)index); super.read(ret); return ret; } void opIndexAssign(T value, size_t index){ super.position(cast(ulong)index); super.write(value); } T[] opSlice(){ T[] ret; ret.length = super.size; super.position(0UL); super.readBlock(&(ret[0]), super.size); return ret; } T[] opSlice(size_t x, size_t y){ T[] ret; ret.length = y-x; super.position(cast(ulong)x); super.readBlock(&(ret[0]), cast(uint)y-x); return ret; } void opSliceAssign(T v, size_t x, size_t y){ super.position(cast(ulong)x); for( size_t i = 0 ; i < y-x ; i++ ) super.write(v); } void opSliceAssign(T[] v, size_t x, size_t y){ super.position(cast(ulong)x); super.writeBlock(&(v[0]), cast(uint)y-x); } }
260 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:27:32 ] むしろせっかく契約を実装と分けられるのに、それを生かしきれてない気がする。 関数の使い方を表すドキュメントの一部なんだから、ddocにくらい出すべきだと思う。 ドキュメントに自動変換しようと思えば、いろいろ進化の方向が見えてくるんじゃないかと。 俺は前者派。body, in, outだけに1段階字下げを使うのが、なんか割りに合わない気がしてなー。
261 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:52:22 ] >>247 ソースコードを見るのはテキストエディタだけだと思ってるのか? ターミナルや、ブラウザの<pre>タグ内のタブ幅は弄れないことが多いし、弄れたとしてもいちいち設定を変えるのが面倒。 スペースインデントなら、タブ幅の違う環境に持っていっても問題がおきない。 逆に、プログラマがインデント一段文のスペースをまとめて処理できないテキストエディタなんて 使わないんだから、ハードタブ使う必要が全く無い。
262 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:58:02 ] double pi=3.14159265358979823846; if((fp=fopen("PI.bin","wb"))==NULL) printf("\aファイルをオープンできません。\n"); else{ fwrite(π,sizeof(double),1,fp); fclose(fp); } C言語で↑のようにpiをバイナリファイルに書き込んで、 BZというバイナリエディタで開いたのですが”$-DT・ @”(文字部)と表示されました。 その後にfread関数でPI.binの内容をプログラム上で出力すると3.1415926……とさきほどの数字に限りなく近い数字できちんと表示されたのですが バイナリエディタで見ると変な文字に変わってしまうのは、何が原因なのでしょうか?これをバイナリファイルとして正しく見れる方法はあるのでしょうか。
263 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:14:24 ] ここはD言語のスレなんだが、IEEE 754とかでぐぐっとけ
264 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:15:30 ] >>261 コンテクスト的にそういう話じゃないだろ。
265 名前:デフォルトの名無しさん [2008/02/21(木) 20:22:20 ] >>262 D全く関係無いなw ファイルの読み書きは出来るのに、文字列と数値の違いを理解してないってのは珍しいな。 それにパイを読み書きする必要があるって、学生か? PC内で文字がどのように表現されているか、調べるべし。
266 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:27:10 ] >>261 >247は>243の「タブ幅は8で固定」ってのに対するレスだと思うよ。 「お前はどんだけ限定された環境に棲んでるんだ」っていう感じの。 >>253 switch文のcaseに倣って前者だなあ。後者は意味のないインデントだし。 (ただ、>254みたいな場合には話は違うけど。) >>258 一箇所にしか出現しない処理を、関数に分離するか直で書いちゃうか、って話と同じじゃね? つまり両論あると。IDEでリアルタイムにドキュメント生成するくらいやってくれれば その辺の処理分離もコード上の意思表示を超えた有用性を発揮するだろうけど… というかリアルタイムにドキュメント生成して、しかも整形の仕方をHTMLの手書き レベルでカスタマイズできたりしたら、本当に楽しいだろうなあ……
267 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:34:51 ] ソースがXMLになると想像しただけで御免蒙りたい
268 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:37:55 ] 前も書いたけど、契約ってのは宣言や定義に密着してるべきだと思うんだよね。 bool nonNull(T)(T that) { return that !is null; } bool lessThan(T)(T that, T x) { return that < x; } Class get(Class[] items @nonNull, size_t index @lessThan(items.length)) @nonNull { return items[index]; } これが、 Class get(Class[] items, size_t index) in { assert(items !is null); assert(index < items.length); } out(o) { assert(o !is null); } body { return items[index]; }
269 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:43:50 ] それで制約関数に /// nullでない /// $(var x) より小さい とかコメントとつけとくと、IDEがこんな感じで表示してくれるの。 Class get(Class[] items, size_t index) items: 〜 制約: nullでない index: 〜 制約: items.length より小さい 戻り値: 〜 制約: nullでない
270 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:57:05 ] なんかMicrosoftがD言語作るんだって
271 名前:デフォルトの名無しさん [2008/02/21(木) 20:58:48 ] >>270 もうそれは既に何度も書き込まれた情報。
272 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 21:24:47 ] これ、塗るでない
273 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 21:35:48 ] では煮るぞ
274 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:23:57 ] >>267 現状と比べて、ソースがXMLになるという意味が分からんね。 ソースやコメント記法自体は変わらんわけだし、そこからの ドキュメント生成ってのもなにか目新しい話じゃないし…? >>268 indexとitemsの間に成り立つ条件のはずが indexの条件になっちゃってることに違和感が void nonNull(T)(T o){ assert(o is null); } /// Contract: $(B $0) は null でない Class get(Class[] items, size_t index) in(items) : nonNull in(index, items){ assert(index < items.length); } /// Contract: $(B $0) は $(B $1).length より小さい out(o) : nonNull out(items){ ...itemsに関わる条件... } /// ...Contractセクション... body{ return items[index]; } とかそんな感じの方が好みだなあ。
275 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:34:50 ] >>274 (>>267 ) 瑛太:「僕にはなんか、わかりますけどねぇ」
276 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:31:32 ] >>268-269 ドキュメンテーションコメントに結びつけたほうが見やすくない? 特定のセクションをコンパイラが展開してくれるとかで。ついでにBehaviorとか追加してみたり。 /** * Params: * items = * 取得するClassオブジェクトのリスト。 * Contracts: nonNull * index = * Contracts: lessThan(items.length) * Returns: * Contracts: nonNull * Behavior: 基本的な動作サンプル * Class[] items = [new Class("alice"), new Class("bob")]; * assert(get(items, 1).name == "bob"); */ Class get(Class[] items, size_t index){ return items[index]; } あとIDEのエディタでコードを表示するとき、ドキュメンテーションコメントの部分は その場でフォーマットされて表示されても良くね?と思った。こんな風に。 ---------------------------------------------- | Class get(Class[] items, size_t index) | items: 〜 | 制約: nullでない | (略) |編集| ---------------------------------------------- Class get(Class[] items, size_t index){ return items[index]; } 編集ボタン押すとソース表示に切り替わるの。
277 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:27:30 ] コメントが実行されるってのは違和感ありまくり
278 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:28:11 ] interfaceとかabstractのメソッドに契約付けることって、ひょっとして出来ない?
279 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:29:10 ] ドキュメント化コメントってのは自然言語な説明を書く部分だと思ってるからなんか違う気がする。 動作そのものを左右する契約はコード本体に書いてあるべきだよ。
280 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:33:18 ] >>278 仕様では、bodyを持たない関数には契約つけれない。 抽象関数でもbodyがあれば契約はかける。
281 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 07:17:33 ] そんな契約、Mayerが見たら悶絶しちまうなwww
282 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 08:40:15 ] さっきちょっと複雑なmixin組んできたけど、コンパイル時実行可能ってのは難しいな。 なんかもうmixinの制限ありで書くより、自動生成プログラム一つ組んで走らせた方が早いんじゃないかと思えてきた。 動的配列作れないとか、添え字に変数使えないとかが厳しい。
283 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:18:00 ] >277, >279 Pythonの標準ライブラリにはユニットテスト用モジュールがいくつかあるんだが、 その中のdoctestという奴では、テスト内容をコメント部分に書くようになってる。 簡単なテストを書きたい場面ではよく使われてるよ。ご参考まで。 でもまあDではin/out/bodyとか用意されてるから、 そっちを素直に使う方がいいとは思うね。
284 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:08:11 ] >>280 ありがとう。残念だ。
285 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:33:52 ] >>272 if( this !is null ) {}
286 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:38:57 ] 変数の型を調べるにはどうすれば良いんでしょうか。
287 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 18:15:06 ] typeofとかis式とか
288 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:05:30 ] 可変個引数関数で受け取った引数をそのまま別の可変個引数関数に渡すってできない?
289 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:30:41 ] 可変長タプルつかうのじゃあかんの。 それか、_argptrと_argumentsを引数に取るオーバーロードを用意するか。
290 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:39:51 ] asmでスタックコピーする
291 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:04:42 ] >>290 asmまでいかなくても出来るんじゃないか?メモリ確保して、コピーするだけだし。
292 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:07:21 ] >>291 それをコールフレーム上でできるのか?
293 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:07:30 ] シングルスレッドで再帰なしなら何とかなりそうだが、 再帰やマルチスレッドだと死亡しそうだな。 メモリ確保するにしても、その確保したアドレスを保持するポインタが必要だし。 静的な領域に複数のポインタの置き場所を作って 何とかやりくりすればましにはなるだろうが。
294 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:12:41 ] あーそうか、_argptrは簡単にごまかせるが、_argmentsは難しいな。 Cの可変個引数関数の事考えてた。
295 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:26:40 ] その関数の中で何もしていなければ、 jmp するだけでおk。 asm なら。
296 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 21:45:57 ] >>288 www.kmonos.net/alang/d/2.0/variadic-function-templates.html あたりを参考に、 void func(T...)(T arg){ func2(arg); } とか。
297 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:52:10 ] >>298 タプルって可変個引数関数にそのまま渡せるんだな。知らんかった。 テンプレートってすごいけど、使いこなせない。
298 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:19:49 ] D言語始めようと思うんですが何から始めればいいんでしょうか。 一応ヨガ教室には一とおり通いました。
299 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:22:26 ] あとは腹筋200回とスクワット500回と走り込み50m20回をそれぞれ3セットずつ1ヶ月続けて基礎体力を身につけないと。
300 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:24:26 ] とりあえずブリンカーを何処かで調達してきて 話はそれからだ
301 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:25:24 ] ビリーズブートキャンプおすすめ
302 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 06:45:34 ] D言語本格的に使ってるやつって日本に10人もいなそうだな
303 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 07:07:27 ] 本格的って言葉の定義が微妙だな。 学生で趣味のプログラミングでDに惚れ込んだ俺はどうなるw
304 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 07:21:06 ] ノーカウント
305 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 07:30:53 ] orz
306 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 07:55:34 ] 趣味が高じて卒業論文にD言語コード載せちゃいましたって俺は?
307 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 07:57:31 ] 卒論のtoy program程度じゃ ノーカウント
308 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:43:30 ] BOFで発言する方々で10人にはなるのではなかろうか
309 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:31:07 ] D言語 孤高の10人
310 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:58:37 ] 今の時期Dを"本格的に"使うのって心中と近い意味になりそうで怖くないか。 ホビープログラマが遊びつつ、バグや要望を出していく段階だと思うが。
311 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:09:34 ] >>310 少なくとも客を納得させるのは難しいな。
312 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:12:30 ] Dで作ったプログラムを納品したあの人は10人のうちに入るわけだ
313 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:41:50 ] ところでふと思ったんだが、 foreach(i; 0 .. 100) { switch(i) { case 42: break foreach; // !!! default: writeln(i); } } とか書けたら便利じゃね。
314 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:44:36 ] 構造変わった時にヤバいかもしれない。 例えば foreach の2重ループの中にそう書いてあって、 中の foreach を for に変更したくなった時とか。 現状のラベル付きの方がいいんじゃないかな。
315 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:47:44 ] そうか。確かに。バグを誘発しやすいかも知れない
316 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:53:46 ] たしかVBってその書き方できたよね。 昔はFORとNEXTの対応があってなくてもよかったBASIC処理系あってカオスだったけど。
317 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:59:03 ] >>316 つーか、大抵の処理系ではNEXTの変数は省略可だったような。
318 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:22:40 ] >>313 Javaかなんかで多段breakできなかったっけ。 >>316 学生時代につかってたポケコンがそんな感じで、 if i>0 than for j=0 to 100 -hogehoge- if i<0 than next てな感じで、C系ではできないforの宣言ができたりしてた。next を最初に見つけるととまるんだよなぁ。 なつかしい。
319 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:53:18 ] >>318 thanじゃなくてthenな。
320 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:47:51 ] >>317 いや >>316 が言ってるのは for i = 0 to 10 if hoge then next next とか書けたという意味かと
321 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:55:10 ] gosubで呼ばれた先にnextがあったらどこに戻るんだろうか
322 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:23:16 ] >>321 普通にエラーだったような。
323 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:40:42 ] >>310 asm C C++とどっぷりつかってた。 んで、D言語であそんでたくちだが、C#がすんなり使えた。 D言語しかつかわないようにするわけでは無い。 「現代的な言語」(プログラミング言語Dより引用)にふれることは そう無駄じゃないと思う。
324 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:00:22 ] >>323 Dを本格的に使う、という話からだいぶ横滑りしてるかと。 というか、それは最初からC#とか使ったほうがいいんじゃね? 向こうのが開発環境も充実してるし、現代的な言語に触れるって目的なら各種スクリプトも手軽…… ……なんか悲しくなってきた。でもDが好きだよ、俺。
325 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:34:09 ] >>324 > ……なんか悲しくなってきた。でもDが好きだよ、俺。 好きならイイジャマイカ
326 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:44:24 ] Dの設計思想に触れる事によって、どういった機能が他の言語に欠けてるか、あれば便利か、要らないかといったことも知ることが出来るわけで。 まあ他にもインスピレーションを得るために、変わった環境に触れていくのは悪いことではないかと。 今のところDってそういう位置付けでもいいと思う。言語の成長とともに使う側も成長していける言語みたいな。
327 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:43:23 ] でもほかの言語と比べてもメリットいっぱいあるとおもうけど…… C#(.net系全部)はネイティブはけないし、Javaは遅いし、C++は汚いし…… 趣味にはぴったりジャマイカ。コードと仕様が美しいし(C++と比べて) まぁぶっちゃけC#が高速で起動するネィティブ吐き出したら勝てないと思うが。
328 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:17:04 ] >ネイティブ つngen
329 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:50:17 ] でもngenって各ユーザが実行しないといけないやつだよね。たしか。 開発者側でネイティブ吐きたいよな。
330 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 03:04:35 ] >>328 C#で作ったソフトの起動が遅すぎるんだが俺の何かがまずいのか? ngen使っても起動時間は長いんだが Dで作ったソフトは軽快だから好きだ!
331 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 03:36:51 ] D言語で積み木シューティングってゲーム作ってるやついたよな あれくらい使いこなせてるんなら本格的っていえるか
332 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 05:04:39 ] >>331 TUMIKI Fighters は ABA さん ちなみに Wii でゲーム化されるほど ttp://www.gamespark.jp/modules/news/index.php?p=2808
333 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:05:33 ] でもDは基本ゴッタ煮だから言語設計の勉強には向かないと思われ
334 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:52:44 ] >>328 ngen使っても遅いのがちょっと速くなるくらいであまり変わらんよ。
335 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:59:18 ] ABA始まったな
336 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 07:06:08 ] 次はまさしくんハイ!だな まあ冗談だがWiiの操作性には割とマッチすると思わなくもない
337 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:18:37 ] 関数の中のswitch文の中でreturnを使った場合はその後にbreakはいらないよね?
338 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:24:38 ] プログラムの動作上はなくても問題ない。 保守・改変まで考慮する場合(それがよい習慣か否かとか)は話が別だけど。
339 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:39:48 ] ふと思った 関数にデストラクタ機能欲しくね? quitでユーザー定義なデストラクタへ抜けてreturnでdefaultなデストラクタへ処理を渡す。
340 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:41:56 ] デストラクタ作るなら return したら常に呼ばれるべきだと思うが。
341 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:45:02 ] goto と同じ問題が発生するな。 変数の初期化を飛び越える事ができない。 解決するにはコンストラクタと称して デストラクタで使用可能な変数を宣言する場所が必要になるな。
342 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:52:19 ] scopeじゃいかんの?
343 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:54:51 ] scope(exit) か。
344 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:12:38 ] >>335 ABAはもうD使ってないよ
345 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:13:17 ] >>339 撒き戻しとか後片付けならスコープガードや例外を使えばいいと思うよ。
346 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:52:28 ] >328 ngen使っても完全なネイティブじゃないでしょ。それに.net frameworkで動くからやっぱり遅い(初期起動が特に) 趣味で作る小さなプログラム起動するのに時間かかってたら腹が立つ。Office大きいものならば許せるが。その点Dは高速だし好きだ。IDEさえ何とかなれば……orz
347 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:19:16 ] 例外ってロジック的になんか美しくないじゃん
348 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:21:47 ] 普通にtry{} finally{}で何の問題があるんだろう…
349 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:00:32 ] 処理のフローが、各関数の呼び出し関係から暗黙に決まる、 ってのが美しくないところだと思う。 関数を合成して処理を作ること、処理を連結してフローを作ること、 これはそれぞれ別のまとまりとして定義されないと、処理フローが ぐちゃぐちゃになると思うよ。
350 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:16:09 ] tryはDだとWinMain内部でしか使ったことが無いや。
351 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:02:44 ] D言語BOF 日程:3月1日(土) 10:15 - 12:00 開始時間が変わりました 時間変更に伴い、以前登録された方も前半/後半を個別に登録してください f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF
352 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:57:23 ] >>310 俺もそう思ってたけどBOFのBillさんとか本気でつかってるぽい まあ研究職だからできるのかもしれんが
353 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:04:33 ] >>222 伝えるだけなら ココで出たバグ報告をnewsにポストする人と手間はかわらん しかしその後の議論についていきつつ説得するのは正直めんどい あと >>214 はあまり集まらないので没りそう
354 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:33:32 ] scope 関連は記述もわかりやすくなるし、 try ~ finally と違ってネストが深くならないしでかなり好きだ
355 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:37:42 ] たった一段のネストがそんなに気になるのかなあ?
356 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:57:49 ] 印刷することを前提に、80桁以上にならないように注意すると 途端に一段のネストが憎たらしくなるよ。
357 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:20:15 ] ネストが深くなりすぎるプログラムはダメなプログラム。
358 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:20:23 ] finallyとかscopeは、ドキュメントいわく 「実行される箇所ではなくそれが概念的に属する場所に配置されている」 というのがいい点だが、概念的にスコープに属している実行保障を わざわざtryブロックに付け替えるのは分かりにくくなる原因だよなと思う。
359 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:57:43 ] デバッグ用じゃないin、out、bodyみたいなのがあればいい感じ?
360 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 06:28:56 ] そろそろCLOSからbefore/afterをパクるのもいいな
361 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 14:38:36 ] void hoge() in { } out { } before { } after { } body { } 上から読むとなかなかbodyにたどり着けないな
362 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 15:14:01 ] 361みたいにするのは358な理由で分かりにくくなるだけじゃね?
363 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:43:09 ] >>354 自分は基本的にタブ8でインデント + 80桁でコーディングしてるのですごく気になる。 あと、 step1(); scope (failure) step1_end(); /* なんか処理 */ step2(); scope (exit) step2_end(); こんな感じのを try~finally で書くと鬱にならないか?
364 名前:363 mailto:sage [2008/02/25(月) 16:43:40 ] ミスった。>>355 ね。
365 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:26:47 ] >>363 それ、いわゆるtry…catch…finallyなパターンじゃない?
366 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:49:01 ] DMDがコンパイル中にエラーで落ちるのは良くあること?
367 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:32:55 ] なんのエラーだ
368 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:34:24 ] 内部エラー
369 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:41:58 ] >>363 これと等価かな try { step1(); step2(); } catch { step1_end(); } finally { step2_end(); }
370 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:46:17 ] >>366 よくある
371 名前:363 mailto:sage [2008/02/25(月) 21:55:24 ] また書き間違いだ…… なんでこんなミスを step1(); scope (exit) step1_end(); /* なんか処理 */ step2(); scope (exit) step2_end();
372 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:01:09 ] 面倒なのはfailureやexitがたくさんあるときだよね、きっと。 例外が発生した位置によってやるべきことが変わるから。 各段階にあわせた例外処理をするために別々のtry文を用意するか、 深くネストしたtry文で…って感じになるんじゃないかと。
373 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:53:05 ] >>371 try-finallyがネストするのがそんなに嫌か? 巻き戻す環境が違うんだから、ネストして当然だと思うが。 むしろ>>371 のほうが妙な制御依存が発生して嫌だ。
374 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:57:04 ] tab8で80桁て普通だよな。 マジでプログラムの質が悪いからネストした時辛くなるんだろ。
375 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:05:55 ] そして>>358 に戻る。
376 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:14:28 ] TAB8でもインデントは4だってさ
377 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:15:46 ] それでも>>371 みたいな書き方を推奨してるわけじゃないよね。
378 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:27:57 ] その辺の話は本家にあるよね。 www.kmonos.net/alang/d/2.0/exception-safe.html >>373 > try-finally による方法は、 概念的に関連している値のセットと復元コードが、 > 間に関係のないコードが挟まることでいくらでも離されてしまう危険性を含んでいます。 >>374 > try-finally による解決は、 リソースの初期化コードと巻き戻し処理のコードが分離して記述され、 > 実際ソースコード上で視覚的に大きく離れてしまします。 > しかし、密接に関連した処理は一カ所にまとまっているべきです。 >>377 > scope文だけでは例外のcatchはできませんから、try-catch も必要です。 > try-finally は、scope文によって冗長な構文となったと言えます。
379 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 03:24:07 ] 配列の要素の任意の組合せでイテレイトしたいのですがどうかけばいいでしょう ary = [1,2,3,4] から二個含んだ組合せなら foreach(e; combination(ary, 2)) { e; // [1,2],[1,3],[1,4],[2,3],... } こんな感じの処理にしたい. 参考にRubyで書くと def each_combination(ary, k) if k == 0 yield [] return elsif k == ary.size yield self return end duped_ary = ary.dup x = duped_ary.shift each_combination(duped_ary, k-1){|y| yield [x]+y } each_combination(duped_ary, k){|y| yield y } end each_combination(ary, 2){|x| p x } 御存知でしたら教えて下さい
380 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 06:52:40 ] 直訳した int delegate(int delegate(ref T[])) each_combination(T)(T[] ary, int k) { return (int delegate(ref T[]) yield){ if( k==0 ) { T[] empty = []; if(int r = yield( empty )) return r; } else if( k==ary.length ) { if(int r = yield( ary )) return r; } else { T x = ary[0]; foreach(y; each_combination(ary[1..$], k-1)) { T[] plus=x~y; if(int r=yield(plus)) return r; } foreach(y; each_combination(ary[1..$], k)) { if(int r=yield(y)) return r; } } return 0; }; }
381 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 08:35:49 ] >>374 いつの時代の人間だよ。 こういうこと言う奴って ts とか hmi とか訳分からん略した変数名使ってんだよな。 そっちのほうが最悪だっつーの。
382 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 09:01:12 ] 2chにコードとか投稿すると著作権持っていかれるんだよなあ…
383 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 10:25:41 ] 実質「公知のもの」になって委譲されるわけではないと思われ。 独占権は当然なくなるが。
384 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:43:25 ] >>383 info.2ch.net/kiyaku.html
385 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:58:54 ] >>384 著作権は「創作性」なるものがないと認められないんだが、 Dスレで張られてる程度のサンプルないし言語仕様の検証コードなら、 創作性なしと判断されるのが通例と思われ。
386 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:22:14 ] 委譲できる分だけ全部委譲させられるから問題なんだけど。 > 無償で非独占的に複製、公衆送信、 頒布及び翻訳する権利を投稿者に許諾します。 > また、投稿者は掲示板運営者が指定する第三者に対して、一切の権利(第三者に > 対して再許諾する権利を含みます)を許諾しないことを承諾します。 あたりのせいで、ここでコードを聞いて流用するとなると適用できない ライセンスが結構出てくる。 20行を越えるようなコードでも創作性はないってのが通例だってのは初めて聞いた。 そうなると、それよりはるかに大きい著作物の20行の断片だけを流用する場合でも、 その断片はもはや創作物として原形をとどめてないないんだな。
387 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:33:38 ] ttp://slashdot.jp/developers/article.pl?sid=06/10/23/0026258 とか3行で騒いでて何をやってるんだろうなあと思ったことはあるけどよくわからんな。
388 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:39:39 ] try{ Database database = MySQLDatabase.connection(); try{ Query query = database.compileQuery("select * from books"); try{ Result result = query.execute(); foreach(Row row; result){ ... } } finally { query.close(); } }finally{ result.close(); } }finally{ database.close(); } これがscope(exit)ですっきり上から下に書けるから嬉しい。 最初にnullで初期化してclose()前にnullチェックすればtry-finallyは1段階で済むけど、 出来れば変数は宣言と同時に初期化して、再代入したくない。 まぁデストラクタ使えばscope statementすら不要だけど。
389 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:48:05 ] あ、やべ。コードが全然違った……。 Database database = MySQLDatabase.connection(); try{ Query query = database.compileQuery("select * from books"); try{ Result result = query.execute(); try{ foreach(Row row; result){ ... } } finally { result.close(); } }finally{ query.close(); } }finally{ database.close(); }
390 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:28:56 ] >>386 このスレで張られるサンプルって、ほとんどが機能的なものではなく「言語仕様の検証」であって、 言語仕様からほとんど一意に決まるものだから検証サンプルそのものには創作性は認められないのではないかと。 何らかの機能性を有していれば3行のコードでも創作性が認められるとは思うけどね。
391 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:45:29 ] >>390 いずれにしても裁判所がそう認めない限りはわからないんだよね。 不確実なことを避ける考え方にも一理ある。 こういう話は嫌いじゃないけど、どうせ結論出せないんだし 気にする人だけ気にしてればいいんじゃね。
392 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:48:58 ] >>390 気にする人だけ気にすればいいというのは同意かな。 多少気になったので裁判例を調べてみた。 ア プログラムの著作物性 プログラムは,その性質上,表現する記号が制約され,言語体系が厳格 であるため,計算式をプログラム言語で記述したような場合にはプログラムにおけ る記述が相互に類似することがあり得る。仮に,簡単な内容とごく短い表記法によ って記述したプログラムをも,著作権法上の保護対象とすると,コンピュータの広 範な利用を妨げ,経済活動や研究活動に多大な支障を来すことになる。また,著作 権法は,プログラムの具体的表現を保護するものであって,機能やアイディア,あ るいは科学的な計算式やその採用を保護するものではない。当該プログラムがある 目的における公知の計算式の採用を保護対象とすることになると,結果的には計算 式そのものを独占させることとなるからである。 したがって,コンピュータに対する指令の組合せであるプログラムの具 体的表現がこのような記述からなる場合は,作成者の個性が発揮されていないもの として創作性が否定されるべきである。 www.courts.go.jp/hanrei/pdf/683C8598E4E61EC4492570DF001C9775.pdf 図表又は図表の使用例に示される思想ないし アイデアそのものは,著作権法によって保護されるものではない。また,このよう な図表又は図表の使用例は,次に述べるとおり,かかる思想ないしアイデアを表現 する際にその個性が表れず,定型的な一般的にありふれた表現としかならないよう な場合には,著作権法によって保護し得る表現上の創作性があるということはでき ない。 www.courts.go.jp/hanrei/pdf/A04C1CFADEB110E7492570BD001A9BE1.pdf
393 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:59:34 ] 392のアンカは391宛てで…… 上のほうの裁判例、被告の主張部分で判決部分ではありませんでした(ただし被告勝訴) しかし、控訴審で判断が一部ひっくり返ってた。 公知の式をプログラムにするだけなら創作性はないが、 それを含むシステム全体は創作性を有するとかなんとか ttp://www.courts.go.jp/hanrei/pdf/20070104101733.pdf 自分の間違いを訂正したところで、 スレチなのでこの辺で打ち止め。
394 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:10:52 ] >>389 のほうが>>371 みたいなのよりずっとマシだと思う。
395 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:12:01 ] コーディングスタイルやらインデントの話は不毛すぎる
396 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:31:05 ] >>371 だと、コードのどの部分でどんなハンドラが付いてるかが制御依存しちゃうんだよな。
397 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 19:01:36 ] そもそもデストラクタ使えよって話だ。
398 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 19:43:06 ] >>396 どういう意味なのか、アホな俺にもう少し噛み砕いて説明してくれまいか。 >>389 だと、openなどに対応するcloseがえらく離れちゃうし、 connection, compileQuery, executeという「本筋」の実行パスが分かりづらくて、 可読性の面で問題があるとおもうのだけど。 こう、gotoを忌避するあまり、関数呼び出しの度にif(!error){ ... が重なっていくCのコードみたいに。
399 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:20:32 ] >>396 そりゃあ、どんな処理をしたかによって後始末の処理を予約・保証したいんだから、 処理によって動的に定まるのが自然じゃね? switch(x){ case 1: f1(); scope(exit) _f1(); break; case 2: f2(); scope(exit) _f2(); break; default: f0(); scope(exit) _f0(); } とかtry-finallyだとどうなるんだろう。 結果的に静的に定まる場合なら、静的に定めるtry-finallyなコードに直訳できるけど、 こういう場合はよく分からん。フローの状態を記録する変数とか用意したりするのが セオリーなんだろうか。でもそれじゃ結局フロー依存だしなあ。
400 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:40:46 ] 単純なサンプルのつもりで書いたコードがボコボコにされててなんか辛いんだぜ
401 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:31:55 ] どんまい
402 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:44:24 ] 言語仕様に著作権が認められたらサンプルコード載っけるだけで著作権侵害になるのかな。
403 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:00:23 ] >>402 著作権は親告罪だから言語の作者がよほどの基地外じゃなかったら真っ白だよ でも今居るGPL厨みたいな人間がしつこく言ってきて結果的な被害は変わらないだろうけどw
404 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:22:52 ] >著作権法 >第十条 この法律にいう著作物を例示すると、おおむね次のとおりである。 >(中略) >九 プログラムの著作物 >3 第一項第九号に掲げる著作物に対するこの法律による保護は、その著作物を作成するために用いるプログラム言語、規約及び解法に及ばない。この場合において、これらの用語の意義は、次の各号に定めるところによる。 >一 プログラム言語 プログラムを表現する手段としての文字その他の記号及びその体系をいう。 >二 規約 特定のプログラムにおける前号のプログラム言語の用法についての特別の約束をいう。 >三 解法 プログラムにおける電子計算機に対する指令の組合せの方法をいう。 なので少なくとも現在の日本では著作権法の保護は言語仕様に及ばないはず。
405 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:34:56 ] じゃ実用新案辺りで手を打とうか
406 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:38:03 ] 言語仕様そのものには及ばないが、言語仕様を説明する文章は当然保護されるよな。 ニュースの内容と、ニュース本文のような感じで。
407 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:25:33 ] Rubyみたいにソースコードが仕様な場合はどうなんだろ。
408 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:58:46 ] tryの中でfinallyをscope(exit)と同じように機能させるとか try { starthoge(); finally endhoge(); }
409 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:10:57 ] { starthoge(); scope(exit) endhoge(); } これと等価?
410 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:54:59 ] catchがあるときに本領を発揮すると思う
411 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 12:52:51 ] DFL 0.9.7 is mostly bug fixes and core improvements: www.dprogramming.com/dfl.php Entice Designer 0.8.4.03 is a bug fix release: www.dprogramming.com/entice.php New Entice Designer and DFL Video Tutorials: www.dprogramming.com/dfl/videos.php
412 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:10:20 ] >>407 assert(0)
413 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:20:46 ] Entice は日本語が使えないのが惜しい……
414 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:31:15 ] static foreachはまだなのか
415 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 17:37:23 ] ftp://ftp.uploda.net/exe/test_window.zip 同じスタイルのウインドウを表示するだけのサンプルなんだけど、CとDではなぜか表示スタイルが違ってしまう。 たぶんCの方が正しいと思うのだけど、どこが悪いんだろう。 import std.stdio;を消すとエントリポイントが無いエラーが出るし。
416 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 18:11:42 ] >>415 Dの場合win.defをですね、 EXETYPE NT SUBSYSTEM WINDOWS,4.0 って書き換えてみましょう。
417 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 18:16:07 ] >>416 あっはっは。 前にそれどこかで見つけてそういう風にしていたのになぜか今見てみたら4.0が消えてたほうに変わってた。OTL どうもです。
418 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:36:53 ] DFLでウィンドウアプリを弄っています。 メインのFormをいわゆるSW_HIDE状態にしたいのですが・・・できませんorz visible=false; とか ShowWindow(cast(HWND)this.handle, SW_HIDE); とか試したがうまくいかないです。 やりかたご存知の方いらっしゃいませんか?
419 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 09:34:45 ] DFLってかなり.netに似てるから使いやすそうだと思ったけど、情報が少ないっていうのはかなり不利だよな。 >>418 で、.netに似てるなら.netを調べたらいいんじゃないだろうかと思って調べて来たら、.netでフォームを非表示にするには FormクラスのHide()を呼び出すみたいです。 DFLを見るとhide()があるので、これでいけるかも知れませんね。試してませんが。
420 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 09:51:59 ] >>416 のdefを適用してもコンソールウインドウを出しっぱなしにするにはどうしたら良いのでしょうか。
421 名前:418 mailto:sage [2008/02/29(金) 10:45:48 ] >>419 とりあえずhide()を呼び出して見ましたが変わりませんでした。 .netのHide()メソッドはvisibleをfalseにするのと同じとありました。 DFLにおいてvisibleプロパティについてはEnticeDesignerのメインformのvisibleプロパティのところに "whether or not this form is visible" と説明がでますのでどっちにしろ表示される・・・・( ;´Д`)ぇー!? て思ってたんですが、hide()もこれと同じ結果のようです。 なんか方法ないもんですかねぇ;
422 名前:419 mailto:sage [2008/02/29(金) 10:46:49 ] もう少し調べてみた。 MSDNによると、.netではvisible=falseとHide()は全く同じ動作らしい。DFLでも同じ可能性大。 それと、DFLで試してきたけど、 一つFormを作り、そこにボタンを置き、ボタンをクリックするとフォームのvisibleをfalseにする。って組んでみたら普通に非表示にされた。 だけど、フォームの生成(Application.run(form);)の前にform.visible=falseを設定しても非表示にはされなかった。 これは多分.netと同じ挙動。 natchan-develop.seesaa.net/article/18029500.html というわけで、>>418 がいつvisible=falseしてるのか知りたい。 とりあえず>>418 が生成前にvisible=falseしていると仮定して話を進めるが、 ↑のURLにあるとおりの回避法をDFLでしようとして、formの生成前に form.windowState=FormWindowState.MINIMIZED; form.showInTaskbar=false; としても上手くいかなかった。(showInTaskbarを指定し、MINIMIZEDにするとデスクトップの左下に小さくなったウィンドウが表示されてしまう。それぞれ単独では上手く動作する。) ので、Application.run(form)を使うなら、非表示のまま起動は出来ないと思う。 ただもちろんApplication.run()を使えばフォームを表示しないことは出来る。その場合フォームを表示したければform.show()を使えばOK。
423 名前:419 mailto:sage [2008/02/29(金) 10:54:09 ] つまり、hide()とかvisibleは生成前に設定しても意味無いけど、 生成後ならちゃんと機能するってことだと思う。
424 名前:418 mailto:sage [2008/02/29(金) 11:27:24 ] >>419 生成前に設定しているのが原因でした。 生成後に設定するにはどうしようかと考えていましたが、 わたしがやりたかったのはApplication.run()で実現できそうです。 使い方がよくわからなくてすみません。 ありがとうございました(・∀・) DFLに関して検索するとC#とかの情報が役に立つのでその辺を意識して作られてるのだと思いますが、 .NETとかC#とかやらずにC++あたりからDにきた者にはDflDocはひどいです><;
425 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 11:39:20 ] 俺も初心者の頃に訳も分からずC#のフォームデザイナ使っただけだから、ほとんど覚えてないな。 プログラムの流れやメッセージループも理解してないのにデザイナ使うと訳分からず混乱するw
426 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:45:33 ] >>420 EXETYPE NT SUBSYSTEM CONSOLE,4.0
427 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:35:42 ] あー。そーいえば俺もDFL使ってた時に同じようにはまったかも。 確認してないけど初期設定はonLoadとかloadとかでやったらどうだろう。
428 名前:419 mailto:sage [2008/02/29(金) 18:40:40 ] >>427 まあいいかと思って書かなかったけど、追記。 load内でvisible=false;をするとフォームが一瞬表示された後に消えます。
429 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:37:54 ] >>426 どうもです。出来ました。
430 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:15:02 ] D言語って日本語の変数名使えたのね。全く知らなかった。 使わないけど。
431 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:44:38 ] 明日はBOFか。 ここんとこ忙しくて予約とかさっぱり忘れてた でも行ってみる
432 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:20:24 ] 人数のカウントは、部屋の大きさの目安をとるためだけらすぃよ
433 名前:427 mailto:sage [2008/03/01(土) 02:09:54 ] >>428 あーそうだった。俺もそうなって、そこで妥協したんだった。 いい加減なこと言って申し訳ない。 しかしDFLのコード読んでみたら、初期化の最中にWinProcを介して あっちこっち飛んでは3種類くらいの可視フラグを立ててはチェックしてで頭が爆発した。
434 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:17:58 ] C++0xでこんなことできるらしいんだけど、Dではどう書けばいいのだろうか。 template<typename... T> class C: T... { C(const T&... t): T(t)... {} }
435 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:22:52 ] あ…インターフェイスにコンストラクタないから、これはかけないか。
436 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:32:38 ] template<class ... Args> void g(Args ... args) { f(const_cast<const Args*>(&args)...); } こういうのはちょっと羨ましいかも
437 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:09:46 ] BOFはじまるよ
438 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:13:51 ] BOFたのしそうだな
439 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:07:27 ] BOFおわったよ
440 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:07:57 ] BOFたのしかったな
441 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:38:41 ] www.ustream.tv/channel/dbof
442 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:44:11 ] 仕事早ぇー
443 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:26:05 ] BOF乙 ところで"Tuple"が複数のモジュールにあって それらが全然違うものだから混乱したぞ
444 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:36:31 ] あるある object.dみたいなところにひとつTupleが書いてあればいいのに
445 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:38:42 ] タプルリテラルを作れば解決するのになあ
446 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:42:23 ] >>441 もしかしてABAさんと、をるたんの謝辞だけ?
447 名前:Dubhead mailto:sage [2008/03/01(土) 17:14:32 ] BOFの簡単なリポートを書きました。 メモが追いつかなかった部分が多々あるけど許してね orz d.hatena.ne.jp/Dubhead/20080301
448 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:19:47 ] 気づいたら終わってた 誰か録画してないのー?
449 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:32:04 ] 勇者はやっぱ勇者だった だがDでSIGGRAPH発表する伝説の勇者が出現
450 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:03:56 ] >>447 GJ! 概要はなんとなくわかった。 読めば読むほど拝聴したかっただぜ!Orz
451 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:23:38 ] 例の納品した人出てたのかw ちくしょー見たかったぜ。
452 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:24:37 ] 更新されてる。 >>Walterだけど何か質問ある?
453 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:37:45 ] >>447 プレゼンまとめうpとかあったら神なんだが
454 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:51:39 ] Dの更新追うのに疲れてここ一年くらい新機能弄くって遊ぶようなことしてなかったけど今日のでちょっと興味戻ってきたわ
455 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:57:45 ] >>449 >だがDでSIGGRAPH発表する伝説の勇者が出現 kwsk
456 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 22:39:06 ] >>455 ビルタンです
457 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:08:36 ] ニコニコに上がってるのか。 話題に乗り遅れてるが、ぼちぼち見てくる。
458 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:35:24 ] おおお素晴らしい ちゃんとスライドが読める画質っぽいwww
459 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 10:53:47 ] www.nicovideo.jp/mylist/5343982 これかい。
460 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:40:11 ] コメント少なすぎだろw
461 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:54:28 ] >>460 お前がするんだよ!
462 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:23:41 ] 最初鼻の穴見えすぎ
463 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:30:04 ] エロくね?
464 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:59:20 ] 鼻のタグが付いてるな。
465 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:39:27 ] うーむ、コメントしにくいなぁ。 コメントが少ないからじゃなく何となく。
466 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:52:45 ] 聞き取りにくいところに字幕をつけるとかどうだろう。
467 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:47:44 ] いいね
468 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:26:20 ] やろうと思ったけど自分の耳じゃ復元できなかった…。 実際会場行った人、お願いします。
469 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:47:23 ] ushort型をasmでAXに入れようとしたらサイズが違うと怒られたんですが、 import std.stdio; void main(){ ushort n = 0x3132; writefln("ushort.sizeof = %dbyte", ushort.sizeof); writefln("before:0x%x",n); asm{ mov AX, n; rol AX, 8; mov n, AX; } writefln("after:0x%x",n); } こういうのは駄目なんですか?
470 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:20:55 ] 見てきた。微妙にウォルタンには伝え辛い発言があって困るw
471 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:26:57 ] >>459 しゃべってる人が俺の脳内イメージとは、悪くない意味で違ってた。・・・当たり前か。 理解できてるかはべつとしておもしろかた。
472 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:35:24 ] お願いがあるのだ ニコ動以外の所に上げて
473 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:23:29 ] >>469 asmの話題はあんまり見たこと無いな。 俺はアセンブリ系はわかんないし。
474 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:26:52 ] word ptr がいるんじゃない?
475 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:28:40 ] >>472 アカウント取ったほうが早い 異論は認める
476 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:08:26 ] だなぁ。異論はあるだろうが、とりあえず登録はしておいたほうがいい。
477 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:50:10 ] いちいちページ切り替えるの面倒だったからflvファイル連結してみたけど40MB超えてて\(^o^)/オワタ
478 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 07:34:28 ] ttp://www.kmonos.net/alang/dee/diki7/brainfuck2d BOFのコンパイル時コンパイラに触発されて、 brainfuckを、Dの delegate void(std.stream.InputStream, std.stream.OutputStream) なデリゲートに変換するモジュールを書いてみた 以前D言語における日本語利用の話題になったときにインタプリタまで書いてたやつです 今度はきちんとDソースコード表現を経由してネイティブコードにコンパイルされます 文字列mixinを使うと素直な表現になりますね
479 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 07:59:26 ] >>473-474 自己解決しました。と言うかあまりにあれだった。 結果として>>469 だとコンパイル通りました。 通らなかったのは下のコード。(ちなみにやってることは全部エンディアン変換) import std.stdio; void main(){ ushort unknown = 0x3231; testa(unknown); } ushort testa(inout ushort n){ asm{ mov AX, n; rol AX, 8; mov n, AX; } } inoutのものをそのままレジスタには渡せないってことですね。 inoutも内部ではポインタ渡しみたいになってるから、 void testa(inout ushort a){ asm{ mov EAX, a; mov BX, [EAX]; rol BX, 8; mov [EAX], BX; } } こうしないといけないみたい。 でも、これより↓の方がわずかに速かったのには脱力した。 ushort testa(ushort n){ return (n << 8) | (n >>> 8); }
480 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 08:13:00 ] Google Videoにもきた video.google.com/videosearch?q=D%E8%A8%80%E8%AA%9EBOF+2008-03-01
481 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:34:21 ] tango.core.Thread.Thread には、 phobosのstd.thread.Thread.pause/resume 相当の機能はないのでしょうか? 見た感じないのだけど、どうしてだろう? void thread_suspendAll() 内には void suspend( Thread t ) なるものが見えるけど外からは使えない…
482 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:58:46 ] pauseでスレッドを停止させる設計が間違ってるからじゃないか
483 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 12:54:04 ] >481 Thread.yield ではダメ? 実行権が勝手に戻ってきちゃうと都合悪いのかな。 だったらtango.core.Thread.Fiberで yield/callするコードを書いといて、 そのファイバーをスレッドで駆動するという手はある。
484 名前:481 mailto:sage [2008/03/03(月) 13:18:00 ] >>482 そうなんですか?初めて聞きました。浅学なもので… でも、使いたくなる時もあるんじゃないかと思うので、 設計の良し悪しは別にして、あってもいいような気がしないでもないのですが… >>483 それはなんとも強引ですねw とりあえず使うところはWindowsなので、スレッド内でGetCurrentThreadとかすればなんとでもなる… けど、なんかスマートじゃない感じが…
485 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:44:55 ] 動けばいいのだ
486 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:08:39 ] Internal error: ..\ztc\cgcod.c 1522 ってなんですか?
487 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:22:13 ] コンパイラのバグ。 bugzillaに報告しとけば一年ぐらいで直るよ。
488 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:08:08 ] 一年後かよ!
489 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:15:41 ] あるある
490 名前:イーペーコー [2008/03/03(月) 19:20:47 ] D言語はVB.NETよりできることがすくなと聞いたのですが本当ですか??
491 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:22:36 ] 少なくは無いけど、遠回り。
492 名前:デフォルトの名無しさん [2008/03/03(月) 19:43:55 ] D言語で書くくらいならアセブラで書いたほうがいいと効きました なにやらアセブラはなんでもできるそうでD言語より高機能だそうです
493 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:45:37 ] >>480 わー サンクス
494 名前:デフォルトの名無しさん [2008/03/03(月) 21:24:05 ] >>490 あの膨大なライブラリを誰が書いたかってハナシだな。 キャパシティはあんま変わらん。
495 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:03:40 ] >>492 アセンブリ言語でガリガリ効率的に書けるなら,確かに他の言語なんていらないなw
496 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:11:42 ] チューリング完全(ry
497 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:15:39 ] アセンブリがあればという奴にかぎってアセンブリでまとまったモノを書いた経験がない。 チューリング機械があればという奴にかぎってチューリング機械でプログラミングした経験がない。
498 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:19:12 ] 僕は、ラムダちゃん!
499 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:21:39 ] >>497 別に限らないと思う。
500 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:30:38 ] >>497 は経験がないのはわかった
501 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:37:07 ] ____ / \ / _ノ ヽ、_ \ / o゚⌒ ⌒゚o \ また明日から無限に長いテープを前後に動かす仕事が始まるお | (__人__) | \ ` ⌒´ /
502 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:48:01 ] 絶望的な仕事だなぁ
503 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:56:25 ] チューリングマシンより量子コンピュータの方が出来ることが多いそうですが、 D言語は量子コンピュータ上で動きますか?
504 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:07:26 ] >>501 その仕事はいつ終わるんですか。
505 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:07:59 ] 量子コンピュータなんてろくにできることないぞ。
506 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:16:48 ] どっかの研究者が並列実行可能な生体コンピュータ(分子生物学的な)を使って 現在のノイマン型だと非常に時間の掛かる問題(確か年単位オーダー)を解いたそうだが、計算は一瞬で終わっても解を取り出すのに数週間掛かったそうだ。 質的な差は確かに違うしできること、奥の深さの違いもあるだろうけど、現時点では量的な差がそれを打ち消してしまうほど使い物にならない。 例の様な特殊な事例でなければね。 というか量子的な動作を記述する言語ってどんなものになるんだろうな。 D言語は言語使用自体の例外的なものをできるだけ排除して、できるだけ簡素なものに帰納的に表現できるように 工夫がされているはず。 その“帰納的”という性質そのものがノイマン型コンピュータに依存するわけだから、勿論互換性なんてない。 量子コンピュータはその動作を確率的に、並列コンピュータはその動作を並列的つまり動的計画法バリバリに記述するんだろうねきっと。
507 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:29:37 ] 三行で
508 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:52:33 ] 今のプログラムに比して超巨大なステートマシンが 大量に右往左往する量子コンピューティングには テキストでしこしこ記述する手法では太刀打ち出来ない。
509 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 07:29:30 ] 量子コンピュータは一応チューリング完全だけど、 NOT, CNOT, CCNOT, SWAP っつー可逆な操作のみを使って計算する、 古典コンピュータとは根本的に異なる原理に基づいた計算になる。 その性質をフルに発揮するには、そもそも古典コンピュータ用の言語は向いていない。 さらには重ね合わせとかあるしね。
510 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 07:46:48 ] > D言語は言語使用自体の例外的なものをできるだけ排除して、できるだけ簡素なものに帰納的に表現できるように > 工夫がされているはず。 正気か?
511 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 08:42:25 ] でっていう
512 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:13:58 ] このスレ、なんか今年入ってからか全然関係ない話題で盛り上がる運命にあるのか?
513 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:36:18 ] > 全然関係ない話題 運命についての質問とかな
514 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:58:39 ] これから盛り上がるっていう予言かw
515 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:24:23 ] DコンパイラをDで記述すれば大いに盛り上がるはず 頑張れ↓
516 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:31:17 ] 2への完全移行とDMD/GDCの互換性を上げるほうが先だろ
517 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:48:27 ] 記述に使用する言語と同じ言語のコンパイラって作って何が楽しいの?
518 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:53:52 ] >>517 動的コンパイル
519 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:29:36 ] >>517 そんなこと言ってたらCコンパイラすら作れなくなるな
520 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:30:46 ] マシン語とかアセンブリ言語とかで作れと?
521 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:03:38 ] 作るのが楽しいんだよきっと
522 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:12:01 ] でも、そんなもの作る暇あるなら、 何か便利なライブラリでも作って欲しいわ。
523 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:12:58 ] 動的コンパイルできるライブラリ作れるじゃん
524 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:13:36 ] >>520 でも同じ言語で新しいバージョンのものだったらまだ話は分かるけど、 同じバージョンなんて作っても・・・。
525 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:20:59 ] その言語がよい言語なら、その言語のコンパイラ自身も その言語で書かれてる方がいいよね。 移行の過程を無視すれば、だけど。 > 複雑でデバッグ済みで既に完成しているアプリケーションを > わざわざ他言語に 移植することにあまり利点はありません。 > 新しい Digital Mars のアプリは Dで実装されています。 www.kmonos.net/alang/d/2.0/faq.html#cpp_to_D >517のような、新しくコンパイラを書き起こす場合は、Dで書くのも 普通に選択肢に入るんじゃない? 「すでにD言語のコンパイラは2つもあるのに、新しく作って何が楽しいの?」 ならともかく、D言語のコンパイラをD言語で書くこと自体はとくにおかしくないでしょ。
526 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:22:10 ] Streamクラスのseekableなストリームは絶対にreadableなストリーム、と言い切れるのでしょうか。
527 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:30:36 ] さあてね、どうだか
528 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:38:04 ] D 3.0からDで作ります。とかならあり得ない話じゃないかな。
529 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:04:22 ] じゃあ最初のD3.0はD2.xxで作られるわけか
530 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:14:10 ] コンパイラ作ってる間に仕様が変わって、新しいコンパイラでは自分自身をコンパイルできなくなると。
531 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:03:14 ] >>526 readableとseekableが分かれているのだから言い切れないんじゃない. ソースを上から全部読んでないので確証はないけど.
532 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:40:09 ] そう言えば量子コンピュータって量子テレポの原理を使って理論上は 人間が思ったとおりの動作を自動的にしてくれるんだって? LL(0) 何世紀後の話になるやら・・・。
533 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:48:37 ] ??
534 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 05:05:18 ] LL(0)というのは誤爆です・・・
535 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 06:33:12 ] Version()掛けてD2.xで出来上がったD3.0でD3.0を作ってそのD3.0でコンパイルしてみて確認。
536 名前:デフォルトの名無しさん mailto:saqe [2008/03/07(金) 08:56:40 ] D言語でデバイスドライバはC並に作れますか?
537 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 11:53:23 ] お約束だが「C並」を定義しないと誰も回答できない
538 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:33:59 ] 長時間存在するものをモダンでないGCに投げるのは不安があるところだな。 その辺の工夫をすればかけるのではなかろうか。
539 名前:デフォルトの名無しさん [2008/03/07(金) 14:47:19 ] つまりCでできることは9割がたDでできるのか否かちょいうこと
540 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 15:03:51 ] D言語終わったな
541 名前:デフォルトの名無しさん [2008/03/07(金) 15:22:35 ] >>540 ハゲ同 今じゃVisual Basicですら簡単にC++並みのドライバが書けるのにD言語ときたら・・・
542 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 16:51:32 ] >>35 のバグ直ったみたいだよ d.puremagic.com/issues/show_bug.cgi?id=1828 > Fixed dmd 1.028 and 2.012 (and thanks for sorting this out)
543 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:32:57 ] >>542 キタ━━━━━━(゚∀゚)━━━━━━!!!!!! これで安心してマルチスレッドのコードが書けるわ
544 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:09:49 ] >>539 アッパーコンパチなんで、やろうと思えばできるはず。効率的かはまた別だが。 まー、ビットフィールド位しかできないことおもいつかん。 アラインもいじれるし。ポインタもいじれるし。 >>541 なに?ドライバ入れるのに.NET入れないといけないの? フロントエンドじゃなくて?
545 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:35:45 ] vbでデバイスドライバとな!? ランタイムも全部sys 凄すぎるけどネタじゃないか
546 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:38:22 ] >>545 Windows限定なら俺も書いたことがある 仕様が公開されてるキーボードのドライバをvb.netで
547 名前:デフォルトの名無しさん [2008/03/07(金) 21:42:17 ] ubyteの配列をスライスしてuintの配列として解釈するのはマズいですか auto ub = new ubyte[0x10]; auto ubs = ub[4..11]; uint* ui = cast(uint*)ubs; 要するにバイト列を任意の値型で再解釈するというモノです。 もっと安全な方法があるぜ!とかあったら教えてください
548 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:09:48 ] エンディアンにさえ気をつければやっていいと思う。
549 名前:デフォルトの名無しさん mailto:sege [2008/03/07(金) 22:48:29 ] >>547 VBの場合リトルエンディアンは静的なデストラクタとして扱われるから気をつけて。 uint* uiじゃなくてfile*uint[ui]の方がいいよ
550 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:56:30 ] >>549 547じゃないけど、もう少し噛み砕いた説明plz
551 名前:549 mailto:sege [2008/03/07(金) 23:04:25 ] つまり、Dの場合はリトルエンディアン(パソコンでプログラムを使う際に使用される16進数の形式のネイティブWinAPI関数)は 静的(ガベージコレクタによって関数がオーバーロードされ変数のスコープからはずれたりするのを防ぐコア関数) なデストラクタ(使い終わったオブジェクトをユーザーからのイベントパンドラ無しにイベント駆動型のラムダ式) として扱われると言うこと。 uint* uiにするとβ変換(変数をグローバルなスコープから外し新しいシステム型変数として使うための変換) が正常に行えなくなるのでfile*uint[ui]にしておいたほうがいいということ
552 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 23:08:46 ] すごいバグつぶしっぷりだな・・・
553 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 23:21:18 ] 普及させるにはやっぱD言語製の優秀なアプリが無いと駄目だろうな ゲームはあるみたいだが
554 名前:547 mailto:sage [2008/03/08(土) 00:09:13 ] >>551 すいません全然意味がわからないです エンディアンとガベージコレクタに何の関係が? >file*uint[ui] ??file型のポインタの配列?? >VBの場合 ???
555 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:40:40 ] アプリよりまずライブラリだろ。 そして、ライブラリよりまず言語仕様の安定を・・・。
556 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:52:03 ] 安定なんか糞喰らえだ。 Walterたんの突発的な変更に右往左往するのがD言語だ。 と俺は思っているが少数派だろうなぁ。まぁこんな考えだと一生D言語が流行らんけど
557 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:52:52 ] まあ、それはそれで楽しいからいいんだけど、 早く実用したいという欲求もあるしなあ。
558 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:26:08 ] つまり実用的なD言語と実験的なD言語に分離すれば… ってそれが1.0系列と2.0系列か。
559 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:36:14 ] 2.0系列に入った機能で ある程度賛否の賛の方が大きい機能を 1.0系列にマージした系列も欲しい所だな。
560 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:11:45 ] 2.012と1.028きてたのね。 dmd_2.012-030608_i386.debってのもあるけどなんだろうこれは。
561 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:14:58 ] debパッケージなんじゃないの。
562 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 03:14:57 ] dmd、リンクのときのメッセージが出なくなってるんだな。
563 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 06:58:06 ] >>551 を読んで、>>549 がデタラメだということはわかった。
564 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 09:46:55 ] >>551 ×イベントパンドラ ○イベントプロシージャ ×関数のオーバーロード ○関数のオーバーライド
565 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 09:52:21 ] >>486 のエラーを避けるために 原因のコードを普通のブロックで囲んでも意味無かったので (){ 原因のコード }(); こんなことしたらエラーでなくなった でも顔はぐにゃってなった
566 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:04:33 ] { ( ^ | { (
567 名前:547 [2008/03/08(土) 11:37:37 ] すいません私の勉強不足でした ファイル型のポインタも知らなかったなんて・・・ 今まで一体何を勉強してきたんだ… www.geocities.jp/tor_park/Dlang/byte.html
568 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:01:12 ] >>567 なんだこの6章だけデムパで残りはパクリのサイトは...?
569 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:26:47 ] file*uintってなんですか?
570 名前:547 mailto:sage [2008/03/08(土) 12:29:42 ] >>567 騙らないでください
571 名前:547 ◆iBVPK4.Aq2 mailto:sege [2008/03/08(土) 13:09:14 ] これ以上詐称するのであれば酉付けます
572 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:23:33 ] IDもなしに後からつけるトリップに何の意味があると
573 名前:547 mailto:sage [2008/03/08(土) 13:37:07 ] すいません質問はあきらめます 自分で調べてきます 以降の547人は偽認定でお願いします
574 名前:デフォルトの名無しさん [2008/03/08(土) 13:43:06 ] >>573 だからwww.geocities.jp/tor_park/Dlang/byte.html 嫁
575 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:55:45 ] >>574 その偽サイト作るのにどれだけ時間掛けたの?
576 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:59:15 ] すでに時代遅れになっているから、読まないほうがいい 混乱するだけだ
577 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:04:23 ] 自演乙
578 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:10:39 ] ttp://www.geocities.jp/tor_park/logo.jpg 更新日時 2008年3月8日 10:19:16 ずいぶん新しいね
579 名前:デフォルトの名無しさん mailto:今日の午前中に作ったよーん [2008/03/08(土) 14:12:39 ] 578 は 暇人
580 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:14:22 ] Dスレでこんなのを見るとは思わなかった
581 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:15:33 ] www.geocities.jp/tor_park/Dlang/d2.html 「細かい説明は後述するので、この場ではとりあえず文字を表示する方法を試してみましょう。 文字を表示するにはprintgokko命令を使います」 アホか
582 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:16:43 ] >>578 文章は何年も前から変わってない。 C++だったらそれでもいいけど、Dじゃ駄目。
583 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:16:49 ] ジョークサイトにしてももうちょっと知性の感じられるジョークをだな
584 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:19:40 ] 構ってもらえてよかったな坊主
585 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:20:47 ] yutori.2ch.net/test/read.cgi/news4vip/1204952244/ 1 名前:以下、名無しにかわりましてVIPがお送りします。[] 投稿日:2008/03/08(土) 13:57:24.68 ID:oVsMTN3J0 次世代言語”D言語”を使ってプログラミングをしてみよう! C++で挫折した君も、プログラミング初心者の君も今日からプログラマーだ! D言語入門 www.geocities.jp/tor_park/Dlang/d2.html
586 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:26:25 ] >>582 そのサイト>>567 がついさっき作ったんでしょ?、と汲み取ってもらいたかったんだが 文章はWisdomSoftのパクリ
587 名前:デフォルトの名無しさん [2008/03/08(土) 14:27:06 ] おじゃすー printgokkoとかアホかと・・・ ptって感じで短くして欲しいぐらいだよ
588 名前:デフォルトの名無しさん [2008/03/08(土) 14:27:11 ] 1 名前:以下、名無しにかわりましてVIPがお送りします。[] 投稿日:2008/03/08(土) 13:57:24.68 ID:oVsMTN3J0 次世代言語”D言語”を使ってプログラミングをしてみよう! C++で挫折した君も、プログラミング初心者の君も今日からプログラマーだ! D言語入門 www.geocities.jp/tor_park/Dlang/d2.html
589 名前: ◆bNGw8Q1jYg [2008/03/08(土) 14:27:59 ] いつのまにかVIPでこのスレがパートスレ化している件
590 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:30:19 ] これを面白いと思うセンスが理解できない
591 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:35:24 ] まあ、547自体が釣りだったということでFA
592 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:38:30 ] VIPからきますた
593 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:42:09 ] VIPから(ry ww
594 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:43:28 ] 徹夜までして偽サイト作ったもんだから、引くに引けなくなったのか・・・
595 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:47:27 ] VIPの方からきますた
596 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:58:05 ] >>582 釣られてる奴がいる ワロタ
597 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:41:29 ] 静岡県在住の高校一年生か なるほどこりゃ痛い
598 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:10:44 ] 2章ひでえ。何がやりたいんだこれ
599 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:11:12 ] こういうのが沸く程度にはメジャー化したということで 順調に発展できたならば、5年後くらいには Java vs C# vs D とかでもできてるに違いない(と信じたい)
600 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:16:06 ] >>599 逆に5年後、JAVAとC#があるのかどうか、という感じだな。 JAVAはマジで死滅するんじゃないかという危惧と C#はMSが次の言語出してきたらどうなるかと。
601 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:20:57 ] MSは"D言語"出すしな
602 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:29:07 ] mjd?
603 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:31:42 ] D言語いくつ作られるんだよw
604 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:46:10 ] >>600 5年後に日本のIT業界がJAVAを捨てられるほど熟練者が増えてるとは思えんがな……
605 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:48:24 ] 2章より引用 >細かい説明は後述するので、この場ではとりあえず文字を表示する方法を試してみましょう。 >文字を表示するにはprintgokko命令を使います >printgokko ("表示したい文字列");
606 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:49:53 ] 必死に貼らなくてもいいから
607 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:49:57 ] JAVA無くなって困る人は大勢いそうだけど C#無くなって困る人は少ない気が
608 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:07:06 ] 俺はCOBOLとDなくなったら死んじゃう。
609 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:34:13 ] それはぜひ半分死んでくれ
610 名前: ◆bNGw8Q1jYg [2008/03/08(土) 18:40:35 ] ごめん消しちゃった 今度はもっとちゃんとした教材作るね
611 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:50:39 ] じゃ俺はDとC++の勢力が入れ替わるのなら100年生きる。
612 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:08:01 ] 在る程度メジャーになった言語は、 衰退することはあっても、完全に無くなることは滅多に無いと思うけどなあ。
613 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:13:39 ] COBOLもそろそろ死んで欲しいんだけど、あと1世紀は生きるよね。
614 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:18:58 ] ttp://s01.megalodon.jp/2008-0308-1456-03/www.geocities.jp/tor_park/Dlang/index.html
615 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:21:53 ] もういいよ
616 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:22:03 ] >>614 そこまでしてかまって欲しいのか・・・
617 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:24:39 ] なにやってんだろうね
618 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:25:10 ] つれたw
619 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:25:34 ] そこら中にマルチしてやがるから通報しときました
620 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:28:59 ] 同一性保持権の侵害で訴えられんようにな 知ったこっちゃねーけど
621 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:30:29 ] 人格権以前に普通の著作権侵害だろ
622 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:30:35 ] 芝ゲーでニコニコから流れてきてるんだろ
623 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:50:42 ] pythonや なでしこ とか他にもう少しメジャーな言語スレあるのにキチガイ何でDに来るかね
624 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:59:22 ] Dも有名になったもんだな あんまり嬉しくないけど
625 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:03:56 ] ウォルたん「pythonの生産性 + Cの速度 + C++の自由度 = D」 一般的なプログラマー(昔)「Dはこける」 〃(今)「そろそろDもやっておくか」 C++「C++かわいいよC++」 0x「C++が使いやすくなってからD涙目wwwwwwwwwwwwwwwwwwwwwwww」 やねうらお「超素敵!!私の処女あげちゃう!」
626 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:05:34 ] >>625 やねうらおwwwwwwwww しかし正直俺あの人居なかったらDに興味持たなかったな。
627 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:30:10 ] DのGCについての情報が有るページを教えてください。
628 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:33:30 ] ttp://www.emit.jp/dgca/cmptest.html
629 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:34:20 ] 俺はやねうらおのおかげでしばらく敬遠してたな・・・ なんか知れば知るほどろくでもないとこが見えてくる人物だから
630 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:43:27 ] ABAさんの所でD使ってるというのを見て、かなり興味持ったんだが 俺もやねうらおでちょっと敬遠してしまった。
631 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:07:39 ] >>626 おれも
632 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:11:47 ] >>625 ウォルたん(昔)「Boost対応めんど。新しい言語つくろ。」 〃(今)「バグ生まれすぎワロタ。」 一般的なプログラマー(昔)「D言語? 何それ?」 〃(今)「D言語? (Sun | Microsoft)が出してたやつ?」 C++「高給なのもC++のおかげ。むしろ皆は感謝すべき。」 0x「やっぱ後方互換と知名度が重要だよな。」 Java「結局ライブラリが全てなんだよね」 やねうらお「C#マンセーwwww」
633 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:29:19 ] あれ、ここって 真面目な D言語の板じゃなかったっけか……orz ま、おわったぽいからいいけどさ。 >632 C#かwwwww ってかDFLとかだとほぼC#だしなw
634 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:44:53 ] C#というか、.NETだね。 Windows Formsはデザインがよく出来てると思う。 実装が悪くてもっさりしてるのがどうしようもないけど
635 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 08:37:54 ] >>627 とりあえず最近の話で ttp://video.google.com/videoplay?docid=-8961819826231183931&q=D%E8%A8%80%E8%AA%9E+GC&total=1&start=0&num=10&so=0&type=search&plindex=0 あとは本家のWeb-Newsからサルベージとか
636 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 12:56:46 ] わなD更新されてる。やった知りたかった情報だし*^^ www.kmonos.net/alang/wnd/topics/winapi.ja.html
637 名前:636 mailto:sage [2008/03/09(日) 12:58:17 ] ってAPI Bindingの更新だけかよ……orz RSSでとちったorz
638 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 13:01:12 ] >>636 そのページどこか変わった? 前見たときから何も変わってないと思うのだけど。
639 名前:デフォルトの名無しさん [2008/03/09(日) 13:13:16 ] >>638 イカれ?
640 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 13:59:55 ] 最新: 2007/03/07 ってあるが。
641 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 14:19:37 ] ちょっと大きめ(最大60MB位)のデータを扱うようなウインドウプログラムを組んだんだけど、 処理するたびに仮想メモリを開放せずに食いつぶすんだがどうにかする手法はないかな。 このままだと他のアプリケーションのメモリをスワップアウトさせてしまう。 タスクマネージャで見てみるとメモリ使用量はウインドウを最小化させると減るみたいなんだけど、 仮想メモリは握ったまま。200MBとかしゃれにならん。 GCの挙動も良くわからないし…。
642 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 14:31:57 ] std.c.stdlib.mallocで管理しきれるならそれでどう? 下記の解説の「明示的なクラスインスタンス割り当て」の項参照 ttp://www.kmonos.net/alang/d/2.0/memory.html
643 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:11:12 ] >>641 >タスクマネージャで見てみるとメモリ使用量はウインドウを最小化させると減るみたいなんだけど、 それページアウトしてるだけだよ。実際には減ってない。
644 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:32:15 ] >>641 ヤマカンでどこら辺があやしと思う? GC?ライブラリ?自前?
645 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:21:28 ] 現在の実装では、GCが確保した領域は解放されないとか、誰か書いてた覚えがある。
646 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:37:32 ] >>641 TangoのGC使うとちょっとはマシになるかも(minimize実装されてる)。 phobosのGCの実装はプログラム終了時以外に確保したメモリを返却しない。
647 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:50:22 ] >>645 >>646 ということはGCあってもfreeしろってことか。 freeつうかdelete
648 名前:647 [2008/03/09(日) 17:21:28 ] つまり、Dの場合はリトルエンディアン(パソコンでプログラムを使う際に使用される16進数の形式のネイティブWinAPI関数)は 静的(ガベージコレクタによって関数がオーバーロードされ変数のスコープからはずれたりするのを防ぐコア関数) なデストラクタ(使い終わったオブジェクトをユーザーからのイベントパンドラ無しにイベント駆動型のラムダ式) として扱われると言うこと。 uint* uiにするとβ変換(変数をグローバルなスコープから外し新しいシステム型変数として使うための変換) が正常に行えなくなるのでfile*uint[ui]にしておいたほうがいいということ
649 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:21:46 ] >>647 違う
650 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:35:34 ] >>647 解放する手段は無いってこと。
651 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:49:23 ] つまりサブプロセスを立ち上げて不要になったら殺すしかいないと。
652 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:01:55 ] >>647 プロセスとして確保した領域を解放する話と、 各オブジェクトに使っていた領域を解放する話が マゼコゼになってるぞ。
653 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:06:56 ] >>652 ごめん、あまり読まずにレスしてた。 穴があったら埋まりたい・・・
654 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:16:51 ] みんなスルーしててワロス
655 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:00:46 ] 自分で開放するにはmalloc&freeしかないってことでおk?
656 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:21:27 ] レスどうも。 >>643 そうだったんですか。 最小化されるとページアウトさせるのはOSですよね。 >>644 疑おうと思えば全部と言えます。 ただ、自動で回収されるとなってる以上、malloc,freeを使わなきゃいけないのもおかしい気が。。。 >>645-646 以前同じようなことを聞いたときも同じような回答でした。 確かstd.gcの話だったと思います。 minimizeが動かないと言う結論でした。 >>655 mallocでメモリを確保することは出来ても、freeで開放されません。
657 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:22:56 ] リリースビルドしてる? 解放されてると思うんだけど
658 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:23:13 ] いや、freeは解放されるだろ。GC関係ないんだから。
659 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:25:26 ] メモリが解放されないって事はD言語で作られてるゲームとかどうなってるんだろう
660 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:29:52 ] import std.stdio; import std.c.stdlib; void main(){ writef("malloc "); void* p = malloc(104857600); writef("ok"); readln(stdin); writef("free "); free(p); writef("ok"); readln(stdin); } #include <stdlib.h> #include <stdio.h> void main(){ void* p; printf("malloc"); p = malloc(104857600); printf(" ok\n"); getch(); printf("free"); free(p); printf(" ok\n"); getch(); } こんな感じで試してみました。 Cのほうはもちろん開放されましたが、 Dの方は開放されませんでした。
661 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:32:24 ] >>657 dmd -release main これで良いんでしょうか? freeでは開放されませんでした。GCの方はまだ試してません。 DMDのパージョンは1.028です。
662 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:33:47 ] Dのmalloc&freeはプロセスとしてOSからmalloc&freeしているのではなくて、 Dのプロセスが一括してmallocしてきたメモリプールから小分けしているだけでは。 だからプロセスとしては使用メモリは増加する一方。minimizeしないから。
663 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:45:37 ] んー、卒研のプログラム書いた時は newとdeleteでメモリ開放されてた気がするなぁ。 少なくとも増え続けることはなかった。 @Linuxだけど。
664 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:52:22 ] 卒研でD言語か・・・無茶しやがって(AA略
665 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:15:03 ] メモリの解放をどのような意味で使ってるかよくわからない
666 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:19:50 ] ガベコレだよ?
667 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:29:25 ] GCは必要なメモリをOSから確保するが、必要のなくなったメモリをOSに解放することはしていない。
668 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:31:29 ] C#やC++/CLIと同じ様にOSの提供するメモリ管理機能にメモリ管理を任せてるだけ
669 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:41:44 ] 「メモリの解放」 は何を意味するか 1. デストラクタが呼ばれる。 2. 内部的に free の処理が走る。 3. free したメモリが実際に OS に返される。
670 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:43:07 ] 襲いかかる(笑)
671 名前:670 mailto:sage [2008/03/09(日) 23:43:29 ] ごめん誤爆
672 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:43:55 ] 4. 襲いかかる
673 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:48:17 ] std.c.stdlib.mallocはCのラインタイムライブラリとリンクされるから、 おそらくfreeした領域は可能であれば適当な時期にOSに返還されるはず。 std.gc.mallocはGCの管理領域から割り当てられるから、 phobosの実装だと、freeしても永久にプールされつづける、と思う。 >>663 deleteした領域は、空き領域としてプールされて再利用されるから、 new/deleteの繰り返しで増え続けることはないよ。
674 名前:637 mailto:sage [2008/03/10(月) 00:02:51 ] ちょっと付け足しとくと、 > おそらくfreeした領域は可能であれば適当な時期にOSに返還されるはず。 って書いたけど、Windows版DMDの場合は、DMCのsnn.libを使って、 linux版やGDCはglibcを使うと思うから、そこで実装の差が出てくる可能性はある。
675 名前:デフォルトの名無しさん [2008/03/10(月) 00:33:17 ] 僕のブログ見てほしいんですけど o.z-z.jp/thbbs.cgi?id=sasanunu&p3=&th=541
676 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:33:49 ] すぐ返還 import std.stdio, std.loader; void main() { scope ExeModule msvcrt = new ExeModule("msvcrt.dll"); extern(C) void* function(size_t) malloc; extern(C) void function(void*) free; malloc = cast(typeof(malloc)) msvcrt.getSymbol("malloc"); free = cast(typeof(free)) msvcrt.getSymbol("free"); writef("malloc "); int size = 32*1024*1024; ubyte* p = cast(ubyte*)malloc(size); for( int i = 0; i < size; i++ ) p[i] = 0; writef("ok"); readln(stdin); writef("free "); free(p); writef("ok"); readln(stdin); }
677 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 01:27:12 ] >>675 は危険
678 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:12:20 ] D言語終了のお知らせ
679 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:19:48 ] どのD言語?
680 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:20:56 ] ばかやろう、まだはじまってもいねぇよ
681 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:22:46 ] さっさと開始してくれ
682 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:24:28 ] 3.0になったら始動する
683 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:33:37 ] 型が同じ連想配列の結合ってできないの?
684 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 09:53:38 ] できないね。 キーが重複した場合に左右オペランドのどっちを優先するかって問題があるし、 自分で実装したほうが安心なんじゃない? K[V] merge(K, V)(K[V] a, K[V] b) { K[V] c; foreach(k, v; a) c[k] = v; foreach(k, v; b) c[k] = v; return c; }
685 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 09:55:18 ] AAに.dupがなかったことに今更きづいた
686 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 10:03:03 ] dup欲しいよねdup
687 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 17:49:06 ] tangoでsprintfみたいな文字列の整形が出来るのはどの関数ですか?
688 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:26:39 ] >>687 tango.text.convert.Sprint かな??
689 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:51:28 ] >>688 どうもです。C#の文章整形というものははじめて見ましたが、結構使えそうですね。 phobosに比べてclassいっぱい日本語資料ほとんどなしで、 英語の資料もあるには有るけどなれない言語なので情報にたどり着くのが大変です。
690 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:36:00 ] Tangoはクラス名と関数名だけでだいたい何をするかわかるから、慣れればかなり楽だよ。 細かい挙動は英語読まなきゃいけないけど。 ただ、opCallのオーバーロードがキモイ。それだけ。
691 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:42:33 ] Tango 0.99.5 ttp://dsource.org/projects/tango/wiki/0_99_5_release
692 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:43:55 ] tangoのopCallは本当に不人気だな
693 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:29:18 ] 俺の中ではあれのせいでかなり印章悪いけど他は割と強いのかなあ
694 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 03:20:02 ] そろそろgdcも新しいの出して欲しい
695 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 04:35:54 ] sf.netのSVNリポジトリからチェックアウトすればいいんじゃね? 今どうなってるのかは俺は知らんが
696 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:28:44 ] >>694 Subversionリポジトリの方では、1.024と2.008に追従する更新が 9日に来たばかりですね。 lists.puremagic.com/pipermail/d.gnu/2008-March/001474.html
697 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:38:12 ] あまり使わないんで気が付かなかったけど Tangoだとphobosと違ってmainへの一個目の引数がフルパスにならないんだな。 呼び出しに使ったコマンドそのものになる。 たとえばコマンドプロンプトで tango使ってdmdでコンパイルしたmain.exeのあるディレクトリをカレントにして mainと入力して実行すると、第一引数が"main"になる。 windows上での話だけど。
698 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:58:47 ] TangoはGetCommandLineWで取ってるけど、 phobosはCのargvをそのまま使ってるね。 ということは、phobosはマルチバイト文字でおかしくなる可能性があるのかも。
699 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:13:56 ] その辺はガイシュツ
700 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:07:06 ] import tango.io.Console; import tango.core.Memory; void main(){ GC gc; Cout("malloc").newline; Cin.copyln; void* p = gc.malloc(104857600); Cout("free").newline; Cin.copyln; gc.free(p); Cout("finish").newline; Cin.copyln; } TangoだとGCがしっかり動いてると言うので書いてみた。 やっぱりと言うかなんと言うか、仮想メモリはTangoでも開放されないな。 Cのmallocとは等価じゃないってことか。 Win32API使ってphobosのstd.file.readのような関数を作って30MB位のファイルを読み込んで それに一文字半角スペースを~で足してscope char[]に読み込みcollectとminimizeをやると言うループを作って Cout.copylnでウエイトを入れながらまわしてみたけど260MBまで遠慮なくメモリを使うぜ。 多分これが効率的だからそうなってるんだろうけど、collectやminimize使っても制御が出来ないのはなぁ。
701 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:28:12 ] どっちのGCもcompaction機能もってないし、 GC周りはどうにかしないといけないよなあ。
702 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:11:06 ] リンカがGCライブラリを切り替えられるようにすればいい。
703 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:40:03 ] >>700 はずしてるかもだけど、この辺の話? ttp://d.hatena.ne.jp/NyaRuRu/20080306/p1 ちょっと前に読んだなぁって、思い出した。
704 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:43:28 ] Windowsのdmcも、即OSに返還されないね。orz #include <stdlib.h> #include <stdio.h> #include <string.h> void main(){ printf("malloc"); void* p = malloc(104857600); memset( p, 0, 104857600 ); printf(" ok\n"); getch(); printf("free"); free(p); printf(" ok\n"); getch(); }
705 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:52:06 ] >>704 てか原因はそこじゃないかな?
706 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:59:57 ] タスクマネージャのプロセス一覧で見えるメモリ消費量は、 そのプロセスが使ってるメモリ領域を正確に表示した物じゃないらしいので、 freeしたら即減るかっつーとそう言うもんでもないようです。 あとDのメモリ管理ってメモリプールみたいな感じで一度メモリ領域拡張されると縮小されにくい物なんじゃ?
707 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 01:05:52 ] >>704 www2s.biglobe.ne.jp/~hig/q_a/Programing_QA02.html#Q4
708 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 01:11:25 ] なあんだ、結局Dのnew&deleteとほぼ同じかもしれないってことかー
709 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:10:28 ] >707 ほぉ〜勉強になったさんくす
710 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 07:31:22 ] >>706 VCのclやgccだとfreeですぐに減ってるので、多分2段落目のとおりだと思う。 これも実装の違いなんだろう。 結局、Cみたいにある程度管理しながらうまいことメモリを使わないといけないのは変わらないわけかな。
711 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:18:41 ] ガベージコレクタのおかげで、うっかりdelete忘れてプロセス起動中に延々と メモリを圧迫し続ける心配がないっていう程度ですかねえ。
712 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:50:29 ] 基本的にはDでメモリをOSには返せないってこと? VC++だかgccだかでDLL作ってそっちのmalloc/free使えばいいのか。
713 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 10:00:05 ] 自前でHeapAllocすればいいんじゃ
714 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 13:26:29 ] 返還する目処のある処理を別プロセスにすりゃいいんじゃ? すりゃいいってほど簡単じゃないけど。
715 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:16:30 ] プロセスにオブジェクトを渡してオブジェクトを受け取る、とか出来ないから モジュール化がだいぶしょぼくなるな。 出来ればいいのになー。.NET環境だとそういうのもあるのになー。 OSはメモリもオブジェクトのメタデータも管理しちゃえばいいのに。
716 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:35:02 ] tangoにシリアライザなかったっけ。
717 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 22:37:26 ] >>715 モジュールをDLLとして作れば、Dのオブジェクトを渡したり GCをプロセス間で共有したりできるみたいよ。
718 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:13:25 ] マイクロソフトD言語潰す宣言 「既存のD言語のライセンスはもちろん買収するつもりだ」――CEO会長坂田雄太 an.to/?microsoft01news
719 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:18:29 ] >>718 Fxで開いたらrundll32.exe url.dll,TelnetProtocolHandlerとか出てきたが何をするつもりなんだ。
720 名前:デフォルトの名無しさん [2008/03/14(金) 10:22:03 ] >>718 正確に「潰す」とは言ってないんだろ? だったら問題ないと思うが
721 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:33:20 ] ブラクラです
722 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:35:46 ] 別にE言語になってもイーっすよ
723 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:24:11 ] Dって元々Mars言語って名前だったのを、 をるたんの友人がD言語って言い張るもんでいつの間にかDになったんじゃなかったっけ。 MSに名前押さえられても元のMars言語って名乗れば問題ないよね。
724 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:32:39 ] >723 マスコットキャラかわいそう・・・・・・
725 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:45:40 ] >>724 あんなゴキブリみたいな顔してるムカつくマスコットなんだから どこか別の場所に生きる術を見出せるさ。
726 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:54:18 ] >in パラメタ記憶域クラスを scope const の意味としました あれ、finalは・・・
727 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:17:30 ] finalはみんなの心の中で生き続けるよ
728 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:58:12 ] むしろ「かぶっちゃったけどどうしてもこの名前使いたい」って言って MSがお金払ってくれたら棚ぼたなのにw
729 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:05:36 ] >>728 最初からそれ狙いでしょ。 つーか、世の中にD言語って、このD言語以前からも色々あるわけだが。
730 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:27:27 ] なるほど、D言語と名づけたのは金狙いか 思惑通りMSが金払ってくれるのは、むしろいいことじゃあないか めでたしめでたし
731 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:57:12 ] ??????????
732 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 16:05:10 ] このスレもやたらレベルがさがったな
733 名前:デフォルトの名無しさん [2008/03/14(金) 16:12:38 ] だってD言語だもんな
734 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 16:36:42 ] なんかマイクロソフトの"D言語"の話題を何回も蒸し返したがる子がいるのね。
735 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:08:00 ] MSにあのマスコットキャラ売っちゃえばいいんじゃね?
736 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:36:28 ] MSならきっと立派に育ててくれる
737 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:53:46 ] マイクロソフトに期待してる人が結構いるんだね Linux使ってる俺にとってはどうでもいい話だが
738 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 19:12:14 ] M$ が主導しても自分では Windows でしかコンパイラ作らないんだろ? 価値ないよ。
739 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:13:53 ] そろそろxamlでDFLフォームを作るコンバータをだな
740 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:23:43 ] WPFのDバインディングとかは使ってみたいよね。 Dから.NETのリフレクション機能をさわるのはできたけど、 CLRのGCとDのGCを上手いこと動かしてリークを防ぐのがめんどい。
741 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:28:30 ] Iron DなのかD.NETなのかD#なのかが問題だ。
742 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:38:43 ] どうでもいい
743 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:08:43 ] D.NET はもうある(正確にはあった)
744 名前:デフォルトの名無しさん [2008/03/14(金) 22:23:18 ] 静的に文字列を置換する方法てないですかね const string foo = "pal = 5;"; class Hoge{ int val; void DoSomething(){ const string myfoo = static_replace(foo,"p","v");// <-こんなかんじ mixin(myfoo); // val = 5; に展開して欲しい } }
745 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:24:55 ] F#はもうある。
746 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:33:36 ] >>737 、向こうで噴いた 200 :login:Penguin :sage :2008/03/14(金) 18:53:16 ID:mDbK1QBH マイクロソフトに期待してる人が結構いるんだね Linux使ってる俺にとってはどうでもいい話だが 201 :login:Penguin :sage :2008/03/14(金) 18:54:22 ID:mDbK1QBH ↑誤爆
747 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:34:00 ] >>744 ないんだったら作ればいいんだ。 string static_replace(string text,string from,string to){ string result; while(text.length >= from.length){ if(text[0..from.length] == from){ result ~= to; text = text[from.length .. $]; }else{ result ~= text[0]; text = text[1..$]; } } return result ~ text; } あと、const string myfooだとなぜかdmd君は落ちやがったのでstatic付けてみた const static string myfoo = static_replace(foo,"p","v");
748 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:37:42 ] CTFEあるからstd.string.replaceでイケるっぽくない?
749 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:45:26 ] >>748 残念ながらstd.string.replace君の中のstd.string.findはCTFEで対応していない機能(memchrとか)を使ってるんだよね。 個人的にはversion(compileTime)相当のものを処理系が用意するなりなんなりで、 std.stringとかはCTFE時にも動作するように作り直してほしいなあとか思ってたり。
750 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:49:40 ] pure関数はCTFEされるとかいう風になると思うんだがどうだろう
751 名前:744 mailto:sage [2008/03/14(金) 22:50:11 ] >>747 >>748 >>749 ありがとうございます CTFE・・ 初めて聞く単語だ(実はD言語習いたて) ググってきます 家の環境にはD言語入れてないのでこれからインスコして試してみます
752 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:01:48 ] CTFE の条件てどこにかいてありますか?
753 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:05:39 ] >>752 ソース
754 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:19:52 ] ttp://www.kmonos.net/alang/d/2.0/function.html#interpretation
755 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:32:52 ] >>754 サンクス!
756 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:23:30 ] CTFEでwithが使えないってのはどういう理由なんだろう
757 名前:737 mailto:sage [2008/03/15(土) 00:35:21 ] >>746 ヽ( ・∀・)人(・∀・ )ノナカーマ
758 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 04:08:08 ] >>756 シンボルの検索は兎も角として、ポインタ使えないのにwithが使えてどうするという気が。
759 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 04:16:15 ] 多くのメンバを持つ構造体にアクセスするときとか、 with(std.stdio)みたいに普段は使わないモジュールを導入するとか 便利だと思うんだけどなあ。 withとポインタが使えないことに何の関係があるのかはよくわからない。
760 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:24:57 ] MacOSX 10.5 Leoprad でD言語の環境をそろえようと思って sudo port install gdc して、簡単な HELLO WORLD つくって test.d で保存して gdc test.d したんだけど object.d が見つからんと言われたので、ひとまずインポートパスを指定して gdc -I "/opt/local/include/d/4.1.2" test.d ってやったら、 ld: file not found: crt.o てエラーが出たんだが。。。これってリンカエラーだよね。 crt3.o ってファイルは dmc 関係のフォルダでいくつか見つかったんだけど、 どこでパスを指定するの? というか、gdc のリンカに dmc のオブジェクトファイル渡してもいいのかな??
761 名前:760 mailto:sage [2008/03/15(土) 17:26:03 ] いや、よく見たら gcc のフォルダにも crt3.o がありました
762 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:36:01 ] file not found: crt.o なのになんでcrt3.oを探してるの?
763 名前:760 mailto:sage [2008/03/15(土) 17:53:03 ] あ、しつれい ld: file not found: crt3.o だった
764 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:42:15 ] Phobosのboxer.dの中に TypeInfo type() const { return cast(TypeInfo)p_type; } こういうメソッドがあるけど、constがメソッド名の後ろにあるのってどんな意味があるんでしょう?
765 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:48:01 ] それはC++風の書き方で、普通はconst TypeInfo type()と前置する。 constをつけたメンバ関数はconstメンバ関数とみなされて、 thisポインタを経由してオブジェクトの状態を変更しないことが保障される。
766 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:19:41 ] >>765 なるほど、C++だとこういう風に表記するんですね。 わざわざ後ろにあるので何か特別な意味があるのかと思いました。 有難う御座いました。
767 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:43:32 ] Tangoについての質問です。 やりたいことは正規表現でstr中のURLをハイパーリンクにすることなんですが、 auto replaced = Regex(r"((?:f|ht)tp://[\w\.$,;:&=?!*~@#\(\)/]*)").replaceAll(str, "<a href=\"$1\">$1</a>"); こういうコードにしてみたら戻り値が無いんですが、perlの $str =~ s/((?:ht|f)tp\:\/\/[a-zA-Z0-9.$,;:&=?!*~@_\(\)\/#]*)/<a href="$1">$1<\/a>/g; のようにするにはどうすれば良いのでしょうか。
768 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:19:16 ] >>767 Tango使ってないけどソース見てみた. >戻り値が無い ということはnullということなんだろうけど, ただ単にその正規表現だと見つけれてないだけな気がする. ソース見る限りはsearchやってるだけだし. Phobosのregexp.dの中にURL用の正規表現文字列があるからそれ使ってみるとか. Phobosのregexp.dだと後方参照しないグループ化は出来なかったと思うんだけど(余り使ってないので自信なし), TangoのRegexp.dだと出来るのか.
769 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 01:06:49 ] >>767 俺もTangoは使ってないんだが、マニュアルを見る限り、 (?:ht|f)の所は(?ht|f)が正しいのではないかと思う。 あと、replaceAllで$1とかは使えないかもしれない。 ソースを見てみると単純に連結していて、$1とかでどうこうという処理はしていないようだから。
770 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 01:45:32 ] >>768 searchやってるだけじゃないよ。 >>767 なんとか動いた。 $1とかは置換してくれないみたいだね 固定した文字列との置換なら、delegateのいらない方のreplaceAllでもOK (?:)は使えないので()を使用する。 phobosのregexpもそうだったはず。 //tango-0.99.5 で新しくなったRegex用 import tango.text.Regex, tango.io.Stdout; void main() { char[] s = `hoge pc11.2ch.net/ hoge www.digitalmars.com/d/ fuga`; auto re = RegExpT!(char)(`((ht|f)tp\:\/\/[a-zA-Z0-9.$,;:&=?!*~@_\(\)\/#]*)`,`g`); auto dg = delegate char[] (RegExpT!(char) re) { return `<a href="`~re.match(1)~`">`~re.match(1)~`</a>`; }; char[] result = re.replaceAll(s, dg); Stdout(result).newline; }
771 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 01:57:58 ] aliasがあるから、わざわざRegExpT使わなくてもいいみたい import tango.text.Regex, tango.io.Stdout; void main() { char[] s = `hoge pc11.2ch.net/ hoge www.digitalmars.com/d/ fuga`; char[] result = Regex(`((ht|f)tp\:\/\/[a-zA-Z0-9.$,;:&=?!*~@_\(\)\/#]*)`,`g`).replaceAll(s, (Regex r) { return `<a href="`~r.match(1)~`">`~r.match(1)~`</a>`; } ); Stdout(result).newline; }
772 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 07:27:35 ] >>770-771 どうもです。 そのソースをまるまるコピペして動かしてみたんですが、 object.Exception: Access Violation となってしまいました。 うーん。
773 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:11:47 ] >>772 とりあえずTangoを入れて動かしてみたけど >object.Exception: Access Violation となるのはStdoutのせいっぽい(俺の環境では). tango.io.ConsoleのCoutを使ったら,771のソースでちゃんと置換されたのが表示された. Stdoutでこのエラーになる原因は面倒なので追ってない.
774 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:32:06 ] tango.text.Regex の compileToD すごいな。 出力されたコードを少し書き換えたらCTFEでも動いた。 CTFEで正規表現使いたい時にいいかも。 単純な処理しかしてないから、 Cやアセンブラに書き換えるのも容易かも。しかし長いw
775 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:21:13 ] >>772 Stdoutでバグるのは,Regex.dでdebug時にStdout.dをimportしてたから コンパイル時にdebugオプションをつけたら動くようになった. といってもdebugなしで普通にimportしてもエラーが出るので, この辺の原因はよく分からない. static thisとかの初期化とかで何か問題が発生してるのかも. 力になれなくて申し訳ない.
776 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:54:33 ] PhobosとTangoが仲良くなりますように(-人-)
777 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:54:47 ] っTangobos
778 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:25:04 ] >>773 >>775 うーむ、 Stdoutはデバッグで使いたいので、こうなると正規表現でURLを抜き出すのは面倒ですね。 別の手法も思いついたのでそっちで一度試して見ます。 どうもでした。
779 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:50:17 ] >>778 もういいかもしれないけど,とりあえず追加で書いとく. Stdoutがどうこうとか書いたけど,自分でもよく分からなくなってきたw 771のソース前提で,とりあえず出力される方法. ・Cout/Cerrを置く 色々試してたら,Cout/Cerrを置くと普通にStdoutでも出力されるようになった. ・Stdout(Stdout); これを置いても出力された.Stdoutの型も出力されるので使えない. ・Stdout.dと同じことをやる Stdout = new Print!(char) (new Layout!(char), Cout.stream); 同じことしてるのに効果が違うのはよく分からないんだけど. どれも根本的な解決策じゃないので応急処置的な感じ. >>770 は動いているようだし,環境も関わってるのかなぁ. それにしてもStdout(Stdout)がまともに動くのは何故…
780 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 12:16:11 ] 日本語うめえ
781 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 12:16:34 ] 誤爆
782 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 15:57:50 ] なんかネタないの?
783 名前:770 mailto:sage [2008/03/18(火) 17:35:48 ] >>779 こちらでも、dmdでビルドしたものはAccessViolation出ました。 budで、tango-user-dmd.libを使わずにビルドすると正常動作するけど、 使う設定でビルドだと、AccessViolationでした。 tango-user-dmd.libを再makeすれば直るのかな??
784 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:37:12 ] >>783 budでOKということで,試しにDSSSでビルドしたら普通に動いた. これくらいは昨日試しておくべきだったorz 770の言うとおり,生成済みライブラリになんらかのバグ(コンパイル状況による?)があるっぽいね. Tangoのソースからのビルドが英語だらけで挫折.
785 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 06:46:04 ] >>782 ソースを落として、dmd.exeとdmc.exeにパスが通っている状態でlib内のbuild-tango.batとかを実行 …だと思うのだけど、再コンパイルできなかったりできてもやっぱりバグったリ…何かがおかしい。
786 名前:785 mailto:sage [2008/03/19(水) 06:47:12 ] >>782 じゃなかった… >>784 でした。申し訳ないorz
787 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:37:51 ] 今のところ2.0で動くGUIライブラリってない?
788 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 11:46:08 ] wxDの履歴にinvariant string対応とかあるけどどうなんでしょ
789 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:28:54 ] tangoのDateTimeとかはどこに消えたんですかね・・・ 似たようなクラスって何かありますか?
790 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:29:35 ] tango.time.Timeの中にあるようだけど
791 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:55:15 ] 久しぶりにPoseidon落としてみたが、キーボードショートカットでrun_projectの割り当てが出来るようになってた。 軽いし、やっぱり気軽にプログラミングするにはいいエディタだな。
792 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:22:35 ] D言語をMac OS Xで始めました。 目的はWin/Linux用のD言語で書かれたコンソールアプリの移植です。 最初に既存のソースコードをXcodeからコンパイルして勉強できる環境を構築しようと思い立ち いろいろ調べていますが、参考になるサイト等見つかりません。 どなたかMacでその道に足を踏み入れた方はいらっしゃいますか?
793 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 23:46:49 ] D1/D2どちらでもいいので C++のstringstreamみたいなのが欲しいんだけど ありませんでしたっけ? >>792 Macのは見かけたことないなー
794 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:02:49 ] MemoryStreamに書いて、readStringとか。
795 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:24:03 ] OutBufferに書いて、toBytesとか。 というかOutBufferの存在価値が昔から空気過ぎるんだけど必要なのかこれ。
796 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:27:01 ] >>794 こうだと何も表示されないんだけど何が足りないのでしょう? import std.stdio; import std.stream; void main(){ Stream ms = new MemoryStream; ms.writeLine("hello"); string s = ms.readLine().idup; writefln(s); } >>795 OutBufferはいらないよな・・・
797 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:29:54 ] Streamは読み書きでpositionを共有してるからpositionのリセットが必要。 import std.stdio; import std.stream; void main(){ Stream ms = new MemoryStream; ms.writeLine("hello"); ms.position = 0; string s = ms.readLine().idup; writefln(s); }
798 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:30:16 ] これでできたようです import std.stdio, std.stream; void main(){ Stream ms = new MemoryStream; ms.writeLine("hello"); ms.writeLine("world!"); string s = ms.toString(); writefln(s); }
799 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:31:30 ] >>797 もしかしてそうじゃないかなと思ってpositionを再設定しようと 思ったんだが 0 を入れればいいのかわからなかったので 発見した toString() を試してみたらいけました ありがとう
800 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:34:58 ] >>799 toStringでもOK。 ただ、toStringはread可能,seek可能かによって微妙に動作が変わるから注意な。
801 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:38:38 ] >>795 std.openrjと同じくらいは役に立つんじゃね?
802 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:47:09 ] >>790 これは・・・・・ もしかしてまだ作りかけなのかな・・・・
803 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:56:33 ] 壮絶な勘違
804 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:00:49 ] 単に.NETみたいにしたいだけなんじゃ…