D言語 Part17
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/02/10(日) 15:06:12過去スレは >>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)
0002デフォルトの名無しさん
2008/02/10(日) 15:07:24Part16 http://pc11.2ch.net/test/read.cgi/tech/1195394435/
Part15 http://pc11.2ch.net/test/read.cgi/tech/1191582990/
Part14 http://pc11.2ch.net/test/read.cgi/tech/1184807424/
Part13 http://pc11.2ch.net/test/read.cgi/tech/1177499924/
Part12 http://pc11.2ch.net/test/read.cgi/tech/1171037394/
Part11 http://pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 http://pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
0003デフォルトの名無しさん
2008/02/10(日) 15:07:51Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0004デフォルトの名無しさん
2008/02/10(日) 15:09:00D言語なら俺に聞け
http://pc11.2ch.net/test/read.cgi/tech/1108172110/
D言語を広めるスレ
http://pc11.2ch.net/test/read.cgi/tech/1175432606/
D言語は多分コケると思っている人の数→
http://pc11.2ch.net/test/read.cgi/tech/1136288019/
【次世代言語】D言語でOSを作ろう【Monaの移植?】
http://pc11.2ch.net/test/read.cgi/tech/1128794438/
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/
その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/
eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/
統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/
"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0005デフォルトの名無しさん
2008/02/10(日) 15:13:29乙!!
0006デフォルトの名無しさん
2008/02/10(日) 16:03:190007デフォルトの名無しさん
2008/02/10(日) 16:06:04めちゃめちゃ補完されてるな
ABA Gamesが入ってないのが不思議なくらいだ
0008デフォルトの名無しさん
2008/02/10(日) 17:01:50芝のゲーム面白いね。俺はちょっと作れない。待つのがだめなんで。
>>7
最近はC#+XNAいってるぽい。
0009デフォルトの名無しさん
2008/02/10(日) 17:12:560010デフォルトの名無しさん
2008/02/10(日) 17:22:31"thread_id": "1202623572",
"content": ">>1乙",
"mail": "sage"]);
0011デフォルトの名無しさん
2008/02/10(日) 19:31:23今はそんな泥臭いことしなくてもchar[]とかはscanされないよ
Chamgelog: D 1.001: 型情報を使う GC 参照
http://www.kmonos.net/alang/d/1.0/changelog.html#new1_001
あとそのページは想像で書かれたと思しき間違いが多くてあまり当てにならない。
たとえば当時std.gc.disable()は実装が空だったので対策にならない、とかね。
GC知りたきゃソース嫁(正直ソレもどうかと思うが)
0012デフォルトの名無しさん
2008/02/10(日) 21:30:50Microsoftは他をつぶすのは本当に得意ですね・・・
>>1
芝ゲー入れて、ABA games入れないとかどんだけwww
0013デフォルトの名無しさん
2008/02/10(日) 21:59:26GCは小ざかしいテクニック使わずにハンズフリーであるべきだよなあ。
C++風に完全に自分で管理するバージョンとか、
昨年のD言語フォーラムの例にあったフリーリスト使いまわし(配列のスライス返しとかで非常にうまくいくようで)とか、
いろいろあってもいいと思うけどね。
0014デフォルトの名無しさん
2008/02/10(日) 22:36:41phobosのGC部分をすっかり入れ替えてしまえば、何とでもなる筈だけど。
0015デフォルトの名無しさん
2008/02/10(日) 22:56:47ほぼすべてのプログラムで処理系お仕着せGCのみ自動的に使われるのと、
どっちが現実的にマシになるか、って判断をするとして
後者を選んだのがDだ、ってことだね。
GC停止できるしmalloc類も使えるしnewのオーバーライドできるしautoもあるし、
で実用上も問題ない感じか。
0016デフォルトの名無しさん
2008/02/10(日) 23:05:330017デフォルトの名無しさん
2008/02/11(月) 01:15:14おまいらは話題がないのですね
0018デフォルトの名無しさん
2008/02/11(月) 01:50:450019デフォルトの名無しさん
2008/02/11(月) 09:09:41ABAは……ごめんなさい、すっかりわすれてたorz
0020デフォルトの名無しさん
2008/02/11(月) 11:44:110021デフォルトの名無しさん
2008/02/11(月) 11:52:19今はstd.file.readでいったんファイルを全部読み込んで改行文字の個数を調べているが、
もう少し良い方法がないものか。
0022デフォルトの名無しさん
2008/02/11(月) 12:15:49少しずつ読み込んで改行数えればいい。
0023デフォルトの名無しさん
2008/02/11(月) 12:17:470024デフォルトの名無しさん
2008/02/11(月) 12:18:080025デフォルトの名無しさん
2008/02/11(月) 13:24:27足りなければどんどん前に進んでいけばおkっていうかD関係ねえwww
0026デフォルトの名無しさん
2008/02/11(月) 15:31:08version(Tango) { } else {
}
を、
version(!Tango) {
}
とか書けるようにならないかなあ。
0027デフォルトの名無しさん
2008/02/11(月) 15:40:560028デフォルトの名無しさん
2008/02/11(月) 18:35:42std/thread.dの修正ファイル持ってない?
0029デフォルトの名無しさん
2008/02/11(月) 19:40:02ttp://f17.aaa.livedoor.jp/~labamba/?BugTrack%2F26
のバグを修正したものらしいけど、既にバグ修正終わってるよ。
ttp://d.puremagic.com/issues/show_bug.cgi?id=645
> Fixed dmd 1.023 and 2.007
0030デフォルトの名無しさん
2008/02/11(月) 21:36:26ほんとだ
で、ちょっといろいろテストしてみたんだが新しいバグを見つけた
Thread.start()内の
state = TS.RUNNING;
hdl = _beginthreadex(null, cast(uint)stacksize, &threadstart, cast(void*)this, 0, &id);
003130
2008/02/11(月) 21:41:42state = 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にも設定できるようにするべきだと思う
0032デフォルトの名無しさん
2008/02/12(火) 00:02:53生成可能なスレッド数も4000までなんて制限ありそうなつくりっぽかったし。
std.thread 見て tango 使う決心した。
003332
2008/02/12(火) 00:13:560034デフォルトの名無しさん
2008/02/12(火) 00:50:0529を見ると、修正パッチが投稿されるまで、をるたん11ヶ月もバグ放置してる。
こちらから修正パッチ投稿しないと、なおしてくれないのかも
003530
2008/02/12(火) 00:57:35GCでpauseAllが呼ばれてもそのスレッドが停止されないままGCが実行されてしまう
というわけで誰か英語できる人パッチ投稿してもらえないだろうか
ttp://www.csync.net/service/file/view.cgi?id=1202744810
Linuxのほうは良くわからないので弄ってない
0036デフォルトの名無しさん
2008/02/12(火) 10:06:30投げてきた http://d.puremagic.com/issues/show_bug.cgi?id=1828
0037デフォルトの名無しさん
2008/02/12(火) 11:18:5030じゃないけど、テラ乙
あといつもお世話になってます
0038デフォルトの名無しさん
2008/02/12(火) 11:36:16だれか貼れよw
XNAいじってんだな
0040デフォルトの名無しさん
2008/02/12(火) 13:46:46英語って文法知ってるだけじゃ書けないよね。
さらにプログラムの話になってくると普通にはない用語とか言い回しとかあるし、どこで勉強すればいいのやら;
0041デフォルトの名無しさん
2008/02/12(火) 14:15:58それこそ、DのニュースグループやらBugzillaやらを毎日読んでみればいいんじゃね?
digitalmars.D.announce辺りなら流量もそんな多くないし、
ほとんど "すげー" とか "乙" だけみたいな短いレスが多いから、
楽に読み始められると思う。
0042デフォルトの名無しさん
2008/02/12(火) 14:31:19http://kb.iu.edu/data/adkc.html
Virtual Entity of Relevant Acronyms
http://olympus.het.brown.edu/cgi-bin/info2www?(vera)Top
学校では教えてくれないバッドノウハウ英語
http://0xcc.net/blog/archives/cat_24.html
用語集
http://www.kmonos.net/alang/d/2.0/glossary.html
0043デフォルトの名無しさん
2008/02/12(火) 14:48:310044デフォルトの名無しさん
2008/02/12(火) 15:02:030045デフォルトの名無しさん
2008/02/12(火) 15:29:53http://d.hatena.ne.jp/pyopyopyo/20070920/p1
Using Bugzilla
http://www.bugzilla.org/docs/2.20/html/using.html
0046デフォルトの名無しさん
2008/02/12(火) 16:18:59みんなで気楽に修正できるようにならんかなー
をるたんはコンパイラで忙しいみたいだし、
みんなでやればphobosの完成度も飛躍的に向上すると思うんだが
0047デフォルトの名無しさん
2008/02/12(火) 16:19:06そっちの方が断然楽
短い口語的な英語はノリが分からなさ過ぎる
0048デフォルトの名無しさん
2008/02/12(火) 16:26:53公式だったかは忘れた。
ttp://dsource.org/projects/phobos
0049デフォルトの名無しさん
2008/02/12(火) 16:29:09たまにウォルターとアンドレイ以外の名前でコミットされてるよね
あれのメンテナになるには直接掛け合わないといかんのかね
0050デフォルトの名無しさん
2008/02/12(火) 16:50:070051デフォルトの名無しさん
2008/02/12(火) 16:50:1848のページの Login → Register で登録して、ログインするのかな?
0052デフォルトの名無しさん
2008/02/12(火) 17:10:12http://www.kmonos.net/alang/d/2.0/statement.html#SynchronizedStatement
oが同じもの同士は同時実行されないんじゃないの?
0053デフォルトの名無しさん
2008/02/12(火) 17:18:01synchronized {} == synchronized(this){}
0054デフォルトの名無しさん
2008/02/12(火) 17:37:26それは間違いだろう
synchronizedだけだとそのスコープ内のみ保護される
005553
2008/02/12(火) 17:58:330056デフォルトの名無しさん
2008/02/12(火) 18:31:46・全国で同時に一人だけ、貯金を引き出せる。
・全国で同時に一人だけ、同じ口座番号から貯金を引き出せる。
この2つ、待ち時間がどう違うかを考える。
0057デフォルトの名無しさん
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)
0058デフォルトの名無しさん
2008/02/12(火) 22:37:130059デフォルトの名無しさん
2008/02/12(火) 23:28:58これで良くね? 未テスト注意。
string myprint(string code){
return "format(\"" ~ code.replace("${", "\",").replace("}", ",\"") ~ "\")";
}
void main(){
mixin(myprint("a == ${a}, a/2 == ${a/2}"));
}
0060デフォルトの名無しさん
2008/02/12(火) 23:32:400061デフォルトの名無しさん
2008/02/12(火) 23:37:12なんとかならんもんか。
0062デフォルトの名無しさん
2008/02/12(火) 23:48:18どのscopeのことだい?
変数に指定するscopeストレージクラスなら、変数の書き換えを抑制し、
変数がスコープアウトするときに、変数の指すオブジェクトをdeleteする。
仕様上は。
0063デフォルトの名無しさん
2008/02/12(火) 23:53:02定期的にGC走らせてやればいいんじゃないか?
GUIアプリケーションならユーザの入力がないときとか。
0064デフォルトの名無しさん
2008/02/13(水) 00:04:53fullCollect();
これを使えば良いのかな?
これを処理する関数が終わったところに書いてみたけどタスクマネージャーから見てわかるような開放はしてくれなかった。
0065デフォルトの名無しさん
2008/02/13(水) 00:20:10>>void minimize();
>>物理メモリの使用量を最小にします。
って言うの見つけた。試してないけど。
0066デフォルトの名無しさん
2008/02/13(水) 00:23:33fullCollectの後minimizeかな。phobosのGCはこれ実装してないけど。
tangoのほうはつい数日前に実装されたっぽい。
0067デフォルトの名無しさん
2008/02/13(水) 00:23:53回答どうもです。
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);
}
}
0068デフォルトの名無しさん
2008/02/13(水) 00:27:03fullCollect()でもminimize()でも一度増えたメモリ使用量は減ってない気がするな
これってこういうもんなの?それともバグか何か?
>>66
と思ったら実装されてないのかよ。。。
0069デフォルトの名無しさん
2008/02/13(水) 00:33:16うわっ
実装されてなかったのか…
どおりで何も起こらないわけだ。
0070デフォルトの名無しさん
2008/02/13(水) 00:35:02んー、それはリンカエラーだからscopeとは関係なさそうだ
WS2_32.LIBリンクするのやめてみたら。
0071デフォルトの名無しさん
2008/02/13(水) 00:39:00minimize()は参照されてないところのメモリを開放する
って感じか。でminimize()は未実装と
0072デフォルトの名無しさん
2008/02/13(水) 00:42:58リンクしないとプログラム動きません。。。
0073デフォルトの名無しさん
2008/02/13(水) 00:50:31this(){
writefln("A:constructer");
}
~this(){
writefln("A:destructer");
}
}
void main()
{
scope A a = new A();
a = null;
}
こうするとデストラクタが呼ばれないんだけどこういうもの?
0074デフォルトの名無しさん
2008/02/13(水) 00:54:36それずいぶん前にもここで見た気がするんだが、まだ直ってないのか
0075デフォルトの名無しさん
2008/02/13(水) 00:55:53そういうもの。スコープの最後でdestructorを呼ぶから。
0076デフォルトの名無しさん
2008/02/13(水) 01:01:57コードが不正だって結論じゃなかったっけ……と思ったけど
> scope への初期化以外の代入も禁じられています。
> Rationale: これらの制限は、 もっともな理由が見つかれば将来的には緩和されるかもしれません。
なんて書いてあるな。緩和された? ……これは緩和せんでもいいような。
0077デフォルトの名無しさん
2008/02/13(水) 01:04:21スコープの外れた時点で入ってるもののデストラクタを呼ぶってのはわかるんだけども、
scope A a = new A(); って感じに変数宣言と同時に代入したもののデストラクタが二度と呼ばれなくなるっぽい
scope A a;
a = new A("a");
a = new A("b");
こんな感じにわけると"b"の方のデストラクタがスコープ外れたときに呼ばれて
""
007877
2008/02/13(水) 01:05:57scope A a;
a = new A("a");
a = new A("b");
こんな感じにわけると"b"の方のデストラクタがスコープ外れたときに呼ばれて
"a"のほうはプログラム終了時にちゃんとデストラクタが呼ばれた
0079デフォルトの名無しさん
2008/02/13(水) 01:07:14a = null; を無くすと、デストラクタが呼ばれるんだが・・・。
0080デフォルトの名無しさん
2008/02/13(水) 01:08:40なるほど そしたらコンパイルエラー出してくれればいいのにな
0081デフォルトの名無しさん
2008/02/13(水) 01:10:54?
0082デフォルトの名無しさん
2008/02/13(水) 01:16:270083デフォルトの名無しさん
2008/02/13(水) 01:26:270084デフォルトの名無しさん
2008/02/13(水) 01:49:03緩和されてなくて、scope変数の中身を変えるコードの時点で未定義動作だろね。
エラーが出ないのは前からなんだけど、scopeはfinal扱いにすりゃいいんじゃないかと思う。
…って、もしかして変数宣言のfinal属性って仕様は消滅してる?
constな伝播性のない定数的扱いで使いがありそうだったのに。
どっかで話があった、「宣言時やコンストラクタ以降でも構わない、
一度だけ代入する変数」って概念を与える属性として復活してくれりゃいいなあ。
0085デフォルトの名無しさん
2008/02/13(水) 01:51:500086デフォルトの名無しさん
2008/02/13(水) 02:38:510087デフォルトの名無しさん
2008/02/13(水) 02:41:570088デフォルトの名無しさん
2008/02/13(水) 02:42:15それ2.0の話?
0089デフォルトの名無しさん
2008/02/13(水) 02:57:09ttp://www.dsource.org/projects/tango/wiki/Manual
これ分散コンピューティング用のライブラリか?
ttp://www.dsource.org/projects/tango/wiki/ChapterClustering
なんかすっげーのを入れる気なんだな
0090デフォルトの名無しさん
2008/02/13(水) 08:21:300091デフォルトの名無しさん
2008/02/13(水) 10:51:47phobosには実装されないんでしょうか…。
0092デフォルトの名無しさん
2008/02/13(水) 11:02:140093デフォルトの名無しさん
2008/02/13(水) 14:35:560094デフォルトの名無しさん
2008/02/13(水) 22:36:470095デフォルトの名無しさん
2008/02/13(水) 22:38:450096デフォルトの名無しさん
2008/02/13(水) 22:39:060097デフォルトの名無しさん
2008/02/13(水) 22:51:12UniformDistributionとかで使うから各エンジンのインターフェースは揃えてるわけで、こういうのって継承でやるのが普通だよね?
まあ軽いのかもしれないが、わざわざ値型を選択する理由になるのかなーとか思っていた。結構違うもんなのかね。サンクス。
0098デフォルトの名無しさん
2008/02/13(水) 22:52:23仮想関数の呼び出しコストを嫌ったんじゃね。
0099デフォルトの名無しさん
2008/02/13(水) 23:01:520100デフォルトの名無しさん
2008/02/13(水) 23:39:270101デフォルトの名無しさん
2008/02/14(木) 00:18:560102デフォルトの名無しさん
2008/02/14(木) 00:23:100103デフォルトの名無しさん
2008/02/14(木) 00:39:320104デフォルトの名無しさん
2008/02/14(木) 08:52:090105デフォルトの名無しさん
2008/02/14(木) 08:59:350106デフォルトの名無しさん
2008/02/14(木) 09:24:030107デフォルトの名無しさん
2008/02/14(木) 12:55:09索引は欲しかったな...
0108104
2008/02/14(木) 13:07:03こういうことじゃなくて?なんか勘違いしてたらごめん
0109デフォルトの名無しさん
2008/02/14(木) 13:52:15template Tuple(T...){ alias T Tuple; }の方のタプルだよ。
0110デフォルトの名無しさん
2008/02/14(木) 14:49:270111デフォルトの名無しさん
2008/02/14(木) 21:11:160112デフォルトの名無しさん
2008/02/14(木) 21:23:170113デフォルトの名無しさん
2008/02/14(木) 21:31:52そういえばそうだな。
フックさせるDLLはGC切りたくて、gcstub.objリンクする方法試してみたけど上手くいかなかった。
というかそもそもgcstub.objがtango+dmdのセットに入ってなかったからphobosの方から取ってきてた。
tangoは使えなくなるんだし、別にtangoセットのdmd使う必要もないな。...試してくる。
0114デフォルトの名無しさん
2008/02/14(木) 21:49:06/ ´_ゝ`)すいません、ちょっと場所お借りしますよ・・・
| /
| /| |
// | |
U .U
D言語BOF
オープンソースカンファレンス2008 Tokyo/Spring
http://www.ospn.jp/osc2008-spring/
サイトにて参加登録が始まりました。
空きがあれば当日参加できますが、申込数に応じて部屋(の大きさ)が変わるらしいので登録お願いします。
0115デフォルトの名無しさん
2008/02/14(木) 21:58:16void main(){
printf("Hello");
}
を
dmd main.d -c
dmd main.obj gcstb.obj
ってしたら、exeが出来たんだけど、実行しても何も表示されない。
0116デフォルトの名無しさん
2008/02/14(木) 22:22:23extern(C) int main(int argc, char* argv) {
main();
return 0;
}
0117デフォルトの名無しさん
2008/02/14(木) 22:33:14を追加したらちゃんと表示された。サンクス。
ってことはGCのコード外すとDプログラムの前処理や後処理のコードも消えるってことか。
Dのプログラムはどこにエントリポイントがあるのかと思ってたけど、そんなところにあったのか。
0118デフォルトの名無しさん
2008/02/14(木) 22:44:48様々な悪夢が起きるからやめたほうがいいと思うよ。
0119デフォルトの名無しさん
2008/02/14(木) 22:45:21エントリポイントはphobosが持ってる。
0120デフォルトの名無しさん
2008/02/16(土) 03:03:11この辺を参考にして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です。
0121デフォルトの名無しさん
2008/02/16(土) 04:19:43http://www.kmonos.net/alang/d/2.0/windows.html
0122デフォルトの名無しさん
2008/02/16(土) 04:31:54自分でWinMainを書くと、phobos側でやってくれたGCの初期化処理が行われないんですね。
納得です。
0123デフォルトの名無しさん
2008/02/16(土) 04:47:40公式だと書いてるけどわなDには「書く必要はない」ってあるし。引数が欲しいから?
0124デフォルトの名無しさん
2008/02/16(土) 05:41:03あ、そこら辺俺も知りたい。
普通の言語で、エントリポイントは何をしてからmainに回ってくるのか、mainの前にいくつ経由してくるのか、
WinMain/DllMainだとどう違うとか。それで、D言語だと他のと違ってこれをする。とか。
エントリポイントあたりを解説してるサイトとかないかな。
あと自分で調べたこともちょっとメモ。間違ってたら指摘ください。
GC切ったプログラムに挑戦してる中で、DllMain()で自分で呼んでる_minit()/_moduleCdtor()/_moduleUnitTests()/_moduleDtor()が何をしてるか知りたくてソース見てきた(Phobos)んだけど、
_minit()はModuleInfoって奴をD言語形式に変換してる。おそらく_moduleCdtorとか呼ぶ準備。アセンブリでたった数行だった。
_moduleCtorはコンストラクタ実行らしい。ソース読んでも良く分からなかったけど、コンストラクタ/デストラクタ/単体テストの準備をしてたと思う。あと中でnewが使われてたから、GC切った環境でこれ呼ぶと落ちる。
残りの二つはおそらく_moduleCtorの準備したデータにアクセスしてる。_moduleDtorはデストラクタ実行。_moduleUnitTestsは単体テスト実行。他のことはしてないっぽい。
というわけで今はモジュールコンストラクタも単体テストも書かず、↑の関数一つも呼ばずにDLL作ってます。
0125デフォルトの名無しさん
2008/02/16(土) 06:39:29Win32APIの勉強をするにあたって、
http://wisdom.sakura.ne.jp/system/winapi/win32/index.html
ここを参考にしてるからです。
形式を合わせただけなので、WinMainを自分で書いたことに特に意味はありません。
0126デフォルトの名無しさん
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等で手動でスタートアップの関数を書かなければいけないのは、この仕組みのため。
0127デフォルトの名無しさん
2008/02/16(土) 19:47:290128デフォルトの名無しさん
2008/02/16(土) 19:48:59パラメータじゃないメンバー
0129デフォルトの名無しさん
2008/02/16(土) 20:52:19*付けて with(*p) とかにすると大丈夫みたいだよ。
0130デフォルトの名無しさん
2008/02/16(土) 21:50:32う、うぃずぴー・・・
0131デフォルトの名無しさん
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スタイルと一緒っぽい。
0132デフォルトの名無しさん
2008/02/18(月) 06:42:17http://dsource.org/projects/tango/forums/topic/393
超期待
0133デフォルトの名無しさん
2008/02/18(月) 08:44:31おぉーこれは……
ってかTangoってなぜあのへんてこな構文なのか誰か教えてorz
0134デフォルトの名無しさん
2008/02/18(月) 09:17:40どのあたりが変?
実はphobosあまり知らずにtangoから入ったからあまり使いにくさを感じない。
結構すっきりしてて使いやすいと思う。
確かにモジュール名が大文字始まりなのは最初は変だと思ったけれども。
0135デフォルトの名無しさん
2008/02/18(月) 09:28:18モジュール名のこととか、なんかもうちょい足並みが揃って欲しい。
0136133
2008/02/18(月) 09:55:02ttp://www.dsource.org/projects/tango/wiki/TutSimpleIO
とか、とにかく \n が .newline ってのが馴れないんだよね。
0137デフォルトの名無しさん
2008/02/18(月) 09:59:55というかいつもStdout使ってる。あれ?Coutってもしかして\n使えない?
0138デフォルトの名無しさん
2008/02/18(月) 10:18:05そういや仕様書のCスタイル可変個引数の例文の方でも、
Cのリンケージと言いつつextern(C)しない_argptrのコード例しか
載ってないんだよな。
2.010で再現した。バグだろね。たぶんスレでは初出。
0139131
2008/02/18(月) 10:22:47ちなみにぐぐってみると
http://www.digitalmars.com/d/archives/digitalmars/D/What_happened_to_argptr_47894.html
なんてのがあった。
2007/2 ...もう一年前だな(遠い目
0140デフォルトの名無しさん
2008/02/18(月) 19:15:32まだ candidate だけど phobos にもこんなのがきているわけだが。
http://dsource.org/projects/phobos/browser/candidate/phobos/std/xml.d
0141デフォルトの名無しさん
2008/02/18(月) 19:38:040142デフォルトの名無しさん
2008/02/19(火) 01:06:32ウインドウを左クリックしたら、メニューを出すプロシージャを書いたんだけど
ちゃんと”終了”というメニューが出てこない。(何か短いメニューのようなものが出る)
どこが悪いんでしょう。
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;
0143デフォルトの名無しさん
2008/02/19(火) 01:19:200144デフォルトの名無しさん
2008/02/19(火) 02:07:31CreateMenu() じゃなくて CreatePopupMenu() じゃないでしょうか。
0145デフォルトの名無しさん
2008/02/19(火) 04:31:46cast(wchar[])でも問題無いが、cast(wchar*)を使うべき。
cast(wchar[])"終了"と書くと文字列が配列として作られるから、長さ情報とかも生成される。
cast(wchar*)"終了"と書くと文字列へのポインタとして作られるだけで、配列の情報は生成されない。
0146デフォルトの名無しさん
2008/02/19(火) 05:37:000147デフォルトの名無しさん
2008/02/19(火) 05:40:10でも毎回そう書くのは面倒だけどな。
0148デフォルトの名無しさん
2008/02/19(火) 07:00:55Phobosいろいろ修正されてるんだな
0149デフォルトの名無しさん
2008/02/19(火) 07:23:39それでした。
ありがとうございます。
>>143 >>145
わかりました。windowsapiに渡すときはそうすることにします。
0150デフォルトの名無しさん
2008/02/19(火) 09:25:39ゴルフ的な理由で俺はこう書いてる。
&*"終了"w
0151デフォルトの名無しさん
2008/02/19(火) 11:57:30cast(wchar*)"ほげ"
って末尾にナル文字は含まれてるんですか?
0152デフォルトの名無しさん
2008/02/19(火) 12:45:450153デフォルトの名無しさん
2008/02/19(火) 13:24:01調べても古いのしか出てこなくて。
0154デフォルトの名無しさん
2008/02/19(火) 14:19:27文字列リテラルはゼロ終端が保証されてる。
0155デフォルトの名無しさん
2008/02/19(火) 17:45:13assert( x == real.nan );
なぜこれが通らないんだ… @ DMD 1.026
0156デフォルトの名無しさん
2008/02/19(火) 18:01:02std.math.isnanを使うべし。
0157デフォルトの名無しさん
2008/02/19(火) 18:04:41なんかわかりにくいなぁ…
0158デフォルトの名無しさん
2008/02/19(火) 18:11:05>どちらか一方でも NaN であれば、 == はfalse、!=はtrueになります。
とあるような
0159デフォルトの名無しさん
2008/02/19(火) 18:12:48assert( x !<>= real.nan );
ttp://www.kmonos.net/alang/d/1.0/expression.html
isnanのほうがきれいだな
0160デフォルトの名無しさん
2008/02/19(火) 19:00:09浮動小数自体の仕様だよ
0161デフォルトの名無しさん
2008/02/19(火) 19:58:58(;´Д`)
0162デフォルトの名無しさん
2008/02/19(火) 20:03:39誰がうまいこと(ry
0163デフォルトの名無しさん
2008/02/19(火) 20:08:50http://www.kmonos.net/alang/d/2.0/interfaceToC.html
printf() の呼び出し
0164デフォルトの名無しさん
2008/02/19(火) 20:33:12wikipediaの中にあんな一文があると
どうしても声出して笑っちまうよな。
ちくしょう。油断してた。
0165デフォルトの名無しさん
2008/02/19(火) 20:41:51では0を0乗したら0か、それとも1か?
という話と同じ匂いがするな
0166デフォルトの名無しさん
2008/02/19(火) 20:45:17http://news24.2ch.net/test/read.cgi/bizplus/1202379742/
0167デフォルトの名無しさん
2008/02/19(火) 20:48:400168デフォルトの名無しさん
2008/02/19(火) 20:49:443! = 6
2! = 2
1! = 1
0! = 1 ?
0169デフォルトの名無しさん
2008/02/19(火) 20:58:410! = 1 はいちおう数学的に証明できますから
0170デフォルトの名無しさん
2008/02/19(火) 21:00:290171デフォルトの名無しさん
2008/02/19(火) 21:03:230/0
どちらも未定義なの?
0172デフォルトの名無しさん
2008/02/19(火) 21:11:05lim[x→0] x^0 = 1
lim[x→0] x^x = 1
あるえー?
0173デフォルトの名無しさん
2008/02/19(火) 21:19:390174デフォルトの名無しさん
2008/02/19(火) 21:25:090175デフォルトの名無しさん
2008/02/19(火) 21:29:530176デフォルトの名無しさん
2008/02/19(火) 21:37:370177デフォルトの名無しさん
2008/02/19(火) 21:52:360178デフォルトの名無しさん
2008/02/19(火) 22:08:18なんかこういうの出てくると、いよいよ作りかけの俺製XMLライブラリを世に出しがたい雰囲気になってきた。
0179デフォルトの名無しさん
2008/02/19(火) 22:15:25lim[x→0] n^x = ?
n<0のとき
lim[x→0] n^x = ?
0180デフォルトの名無しさん
2008/02/19(火) 22:16:43バグじゃなくて仕様でしょ。
_argptr は _arguments から計算されるけど、extern(C) だと _arguments が渡されない。
つまり _argptr が使えない。
0181デフォルトの名無しさん
2008/02/19(火) 22:25:22http://www.kmonos.net/alang/d/2.0/function.html
> Cスタイル可変個引数関数
(中略)
> Cスタイル可変個引数関数は、Cの可変個引数関数の呼び出し規約と一致していて、
> printf のような Cのライブラリ関数を呼び出すのに利用できます。
> 可変個引数関数の中では、 特別なローカル変数 _argptr が使えます。
0182デフォルトの名無しさん
2008/02/19(火) 22:27:18仕様書に_argptrが使えるって書いてあるから、
「バグじゃねえの」って話になってるんでしょ。
まあ、普通にstd.c.stdarg使うえばいいんだろうけどね。
0183デフォルトの名無しさん
2008/02/19(火) 22:31:53tangoだとstdargがまだ未実装みたいだった。
Phobosも使い方が良く分からない。
Cでも可変個引数は使ったことなかったから知らないんだけど、とりあえずCの解説サイトに載ってるように書いても使えなかった。
0184183
2008/02/19(火) 22:38:02>tangoだとstdargがまだ未実装みたいだった。
の行は無視してくれ。多分全然関係ないところで勘違いしてる。
0185デフォルトの名無しさん
2008/02/20(水) 01:39:19でももう更新されてないみたいだし、D->wxD->wxC->wxWidgetって中継が多いけど、実行速度は大丈夫なのかとか気にしてるんだが。
0186デフォルトの名無しさん
2008/02/20(水) 04:34:12A whole lotta library improvements.
http://www.digitalmars.com/d/1.0/changelog.html
http://ftp.digitalmars.com/dmd.1.027.zip
http://www.digitalmars.com/d/2.0/changelog.html
http://ftp.digitalmars.com/dmd.2.011.zip
I had planned on doing struct destructors for this update, but they are not done yet.
0187デフォルトの名無しさん
2008/02/20(水) 04:38:05New/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.
0188デフォルトの名無しさん
2008/02/20(水) 04:38:55# 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
0189デフォルトの名無しさん
2008/02/20(水) 04:39:47* 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
0190デフォルトの名無しさん
2008/02/20(水) 04:45:44New/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
0191デフォルトの名無しさん
2008/02/20(水) 05:29:340192デフォルトの名無しさん
2008/02/20(水) 06:24:510193デフォルトの名無しさん
2008/02/20(水) 06:28:320194デフォルトの名無しさん
2008/02/20(水) 07:58:43tangoの立ち位置がよくわからなくなってき……
0195デフォルトの名無しさん
2008/02/20(水) 08:19:290196デフォルトの名無しさん
2008/02/20(水) 08:58:39TangoはC++に対するboostのような道を模索した方がいいと思う
0197デフォルトの名無しさん
2008/02/20(水) 08:59:110198デフォルトの名無しさん
2008/02/20(水) 09:26:220199デフォルトの名無しさん
2008/02/20(水) 10:51:44"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を定義しろと?
0200デフォルトの名無しさん
2008/02/20(水) 11:11:21http://www.dsource.org/projects/bindings/wiki/WindowsApi
http://www.kmonos.net/alang/wnd/topics/winapi.ja.html
4年前のソースなど絶対コンパイル通らんよ。。。
0201デフォルトの名無しさん
2008/02/20(水) 11:44:42過去ログに話出ていて原因は定義順だったと思う
ちなみに解決済みのバージョンがどこかで公開された様子はない
0202デフォルトの名無しさん
2008/02/20(水) 11:56:09クロスプラットフォームのGUIライブラリって今あるのかねえ
今はDFLをGTKベースに書き直しているはずだからそのうちこれが使えるかもしれないけど
速度は実測しかない
0203199
2008/02/20(水) 12:10:02入れたらすんなり通りました。
ありがとうございます(・∀・)
>>201
いまんとこエラー吐いてないです。
と言ってもショボイAPIしか呼んでませんけど・・・
0204デフォルトの名無しさん
2008/02/20(水) 12:51:04trunkでは直ってると思った
0205デフォルトの名無しさん
2008/02/20(水) 12:53:17dwtの新しいのってどうなんだろ。Tango前提なので試せてないんだけど
0206デフォルトの名無しさん
2008/02/20(水) 14:35:370207デフォルトの名無しさん
2008/02/20(水) 16:25:18強化期間というより、dsourceで検証まで終わった新コードをまとめて承認したという感じじゃないのかな
しかしxml読みにこのスレでの頂き物を活用してた俺涙目
でも骨子は同じだからstd.xmlに切り替えてみる
omegaの方ありがとうございました
0208デフォルトの名無しさん
2008/02/20(水) 16:37:310209デフォルトの名無しさん
2008/02/20(水) 17:08:53WSAAsyncSelectを使おうとすると未定義のシンボルって言うリンクエラーがでる。
何ででしょう。
0210デフォルトの名無しさん
2008/02/20(水) 17:15:39でっかいXMLファイルもとにかく一度全部読み込む必要があるのか……
0211デフォルトの名無しさん
2008/02/20(水) 17:18:44リンケージが違うとか。
0212デフォルトの名無しさん
2008/02/20(水) 19:53:43それはきちぃ・・
けど、使いどころはあるけどね
0213デフォルトの名無しさん
2008/02/20(水) 20:04:10配列のように扱えるStreamがあればちょっと改造して使えるんじゃない?
0214デフォルトの名無しさん
2008/02/20(水) 21:51:17「Walterだけど何か質問ある?」
というネタをやるとしたら何か質問ある?
0215デフォルトの名無しさん
2008/02/20(水) 21:58:100216デフォルトの名無しさん
2008/02/20(水) 22:15:580217デフォルトの名無しさん
2008/02/20(水) 22:16:470218デフォルトの名無しさん
2008/02/20(水) 23:11:470219デフォルトの名無しさん
2008/02/20(水) 23:16:48どう訳せと?
「Dの開発は収入になりますか」とかそんなん?
「CD売れてますか?」とおもったけどこれDじゃなくてC++だな
0220デフォルトの名無しさん
2008/02/20(水) 23:20:590221デフォルトの名無しさん
2008/02/20(水) 23:25:150222デフォルトの名無しさん
2008/02/21(木) 00:00:46折角の機会だから、「ヲルタンに好き勝手要望・提案を伝えてもらえるコーナー」
なんてあったらすげー行きたくなるなぁ、と思いつつも
自分じゃ何も貢献出来なさそうなのであった。
0223デフォルトの名無しさん
2008/02/21(木) 00:14:220224デフォルトの名無しさん
2008/02/21(木) 00:17:40SAX 風のイベントモデルで DOM 風に一括読み込み必須というのはアレだな
この段階ではあんまり気にすることもないと思うけど
>>213
あれそれ何かなかったっけーと思ったら std.stream.TArrayStream は逆か
0225デフォルトの名無しさん
2008/02/21(木) 00:58:080226デフォルトの名無しさん
2008/02/21(木) 00:59:59うまくラップするのが賢そうだな
0227デフォルトの名無しさん
2008/02/21(木) 01:01:46各エンコーダやユーティリティは別途入れるとかの使いかたはできへん?
0228デフォルトの名無しさん
2008/02/21(木) 01:04:04ICUは糞でかいから普通はDLLにして動的リンクする。
0229デフォルトの名無しさん
2008/02/21(木) 02:40:18画面に表示するにはどうしたらよいのだろう
auto arr = [1,2,3,4,5];
assert(find!("a > 3")(arr) == begin(arr) + 3);//このfindは最初に見つかった要素しか返さない
foreach (i; /*findの結果を配列で返す方法があるとか?*/) {
writefln(i);
}
0230デフォルトの名無しさん
2008/02/21(木) 02:49:11writefln(i);
}
0231デフォルトの名無しさん
2008/02/21(木) 03:05:070232デフォルトの名無しさん
2008/02/21(木) 04:06:550233デフォルトの名無しさん
2008/02/21(木) 04:22:280234デフォルトの名無しさん
2008/02/21(木) 07:15:36やっぱスペース4個にするのがベターだろうか。
0235デフォルトの名無しさん
2008/02/21(木) 07:45:240236デフォルトの名無しさん
2008/02/21(木) 08:03:00しかし俺の伝説のIDEは行頭から連続したスペースは4文字ごとにタブに自動変換される仕様
スペースインデント派とのソース交換でもにゃる
0237デフォルトの名無しさん
2008/02/21(木) 08:06:25お前とソースを交換するスペースインデント派にはいい迷惑だな。
バージョン管理も狂うし。ダメダメじゃん、お前の伝説のIDE wwww
0238デフォルトの名無しさん
2008/02/21(木) 10:37:10本当に文頭のタブ桁ごとのインデントしか行わないならタブもありかもしれないけど、
大抵関数引数の整列とかでもインデント使ってて、それゆえにスペースが
混入してたりするから、結局そいつのタブ間隔以外では表示が崩れるんだよね。
0239デフォルトの名無しさん
2008/02/21(木) 11:25:28タブ派だがスペース混入とかしないぞ。
混在されるとタブストップによって表示が崩れるのが嫌ってのは同意。
インデントは全部スペースか全部タブかにしてほしい。
0240デフォルトの名無しさん
2008/02/21(木) 11:39:250241デフォルトの名無しさん
2008/02/21(木) 11:57:060242デフォルトの名無しさん
2008/02/21(木) 12:08:380243デフォルトの名無しさん
2008/02/21(木) 12:53:41タブ幅とインデント幅は別物なので注意な。
Windowsしか知らない連中はそこの区別が付いてないことが多いけど。
タブ幅は8で固定。WindowsのDOS窓とかもそうなってる。
インデントは主義によって4とか8とか2とか色々ある。
0244デフォルトの名無しさん
2008/02/21(木) 13:05:510245デフォルトの名無しさん
2008/02/21(木) 13:07:310246デフォルトの名無しさん
2008/02/21(木) 13:08:39「タブ幅は伝統的に8だから、8以外は間違ってる」
とか言い張る子が必ずいるよね(´・ω・`)
0247デフォルトの名無しさん
2008/02/21(木) 13:10:200248デフォルトの名無しさん
2008/02/21(木) 13:12:41・・・そんな目で見るなって。
0249デフォルトの名無しさん
2008/02/21(木) 13:22:400250デフォルトの名無しさん
2008/02/21(木) 13:40:05でも、ソースコードを扱うのはエディタだけじゃないからね
端末ソフトとかプリンタとかあるし
0251デフォルトの名無しさん
2008/02/21(木) 13:52:58インデント幅ははタブ幅の整数倍にしてくれないと困る。
0252デフォルトの名無しさん
2008/02/21(木) 14:16:41とっくに落ちたのか、コーディング規約スレの方に統一されたのか…
>>239
そういえば、スペース混入が無くても、行頭以外でタブ使ってて
幅によって整列が崩れることもよくあるんだよね。行末コメントの整列とか。
結局、スペースによる桁揃えの併用か、簡素なインデント以外の
桁揃え整形を諦めるか、って方向になっちゃうんだよな。
「インデントの幅」というコーディングスタイルの好みの違いたった一つを
緩和するためだけに他の整形を放棄するのは、可読性の点で
コーディングスタイルとして合理的なじゃない気がする。
完結してる環境で規約として採用するにしてもナシじゃない?
0253デフォルトの名無しさん
2008/02/21(木) 14:49:37body {
}
か
int func()
body {
}
みんなはどうしてる?
0254デフォルトの名無しさん
2008/02/21(木) 14:53:00前使ってたエディタが前者だとアウトラインを生成できなかったから。
0255デフォルトの名無しさん
2008/02/21(木) 14:57:24body
{
}
でいいじゃん
0256デフォルトの名無しさん
2008/02/21(木) 15:09:000257デフォルトの名無しさん
2008/02/21(木) 15:47:210258デフォルトの名無しさん
2008/02/21(木) 16:08:04in 使わないで最初に assert() 入れればよくね?
out 使わないでscope(exit) assert() 入れればよくね?
って思うのは俺だけかな…
0259デフォルトの名無しさん
2008/02/21(木) 17:21:22class 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);
}
}
0260デフォルトの名無しさん
2008/02/21(木) 17:27:32関数の使い方を表すドキュメントの一部なんだから、ddocにくらい出すべきだと思う。
ドキュメントに自動変換しようと思えば、いろいろ進化の方向が見えてくるんじゃないかと。
俺は前者派。body, in, outだけに1段階字下げを使うのが、なんか割りに合わない気がしてなー。
0261デフォルトの名無しさん
2008/02/21(木) 19:52:22ソースコードを見るのはテキストエディタだけだと思ってるのか?
ターミナルや、ブラウザの<pre>タグ内のタブ幅は弄れないことが多いし、弄れたとしてもいちいち設定を変えるのが面倒。
スペースインデントなら、タブ幅の違う環境に持っていっても問題がおきない。
逆に、プログラマがインデント一段文のスペースをまとめて処理できないテキストエディタなんて
使わないんだから、ハードタブ使う必要が全く無い。
0262デフォルトの名無しさん
2008/02/21(木) 19:58:02if((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……とさきほどの数字に限りなく近い数字できちんと表示されたのですが
バイナリエディタで見ると変な文字に変わってしまうのは、何が原因なのでしょうか?これをバイナリファイルとして正しく見れる方法はあるのでしょうか。
0263デフォルトの名無しさん
2008/02/21(木) 20:14:240264デフォルトの名無しさん
2008/02/21(木) 20:15:30コンテクスト的にそういう話じゃないだろ。
0265デフォルトの名無しさん
2008/02/21(木) 20:22:20D全く関係無いなw
ファイルの読み書きは出来るのに、文字列と数値の違いを理解してないってのは珍しいな。
それにパイを読み書きする必要があるって、学生か?
PC内で文字がどのように表現されているか、調べるべし。
0266デフォルトの名無しさん
2008/02/21(木) 20:27:10>247は>243の「タブ幅は8で固定」ってのに対するレスだと思うよ。
「お前はどんだけ限定された環境に棲んでるんだ」っていう感じの。
>>253
switch文のcaseに倣って前者だなあ。後者は意味のないインデントだし。
(ただ、>254みたいな場合には話は違うけど。)
>>258
一箇所にしか出現しない処理を、関数に分離するか直で書いちゃうか、って話と同じじゃね?
つまり両論あると。IDEでリアルタイムにドキュメント生成するくらいやってくれれば
その辺の処理分離もコード上の意思表示を超えた有用性を発揮するだろうけど…
というかリアルタイムにドキュメント生成して、しかも整形の仕方をHTMLの手書き
レベルでカスタマイズできたりしたら、本当に楽しいだろうなあ……
0267デフォルトの名無しさん
2008/02/21(木) 20:34:510268デフォルトの名無しさん
2008/02/21(木) 20:37:55bool 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]; }
0269デフォルトの名無しさん
2008/02/21(木) 20:43:50/// nullでない
/// $(var x) より小さい
とかコメントとつけとくと、IDEがこんな感じで表示してくれるの。
Class get(Class[] items, size_t index)
items: 〜
制約: nullでない
index: 〜
制約: items.length より小さい
戻り値: 〜
制約: nullでない
0270デフォルトの名無しさん
2008/02/21(木) 20:57:050271デフォルトの名無しさん
2008/02/21(木) 20:58:48もうそれは既に何度も書き込まれた情報。
0272デフォルトの名無しさん
2008/02/21(木) 21:24:470273デフォルトの名無しさん
2008/02/21(木) 21:35:480274デフォルトの名無しさん
2008/02/21(木) 22:23:57現状と比べて、ソースが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]; }
とかそんな感じの方が好みだなあ。
0275デフォルトの名無しさん
2008/02/21(木) 23:34:50瑛太:「僕にはなんか、わかりますけどねぇ」
0276デフォルトの名無しさん
2008/02/22(金) 00:31:32ドキュメンテーションコメントに結びつけたほうが見やすくない?
特定のセクションをコンパイラが展開してくれるとかで。ついでに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]; }
編集ボタン押すとソース表示に切り替わるの。
0277デフォルトの名無しさん
2008/02/22(金) 01:27:300278デフォルトの名無しさん
2008/02/22(金) 01:28:110279デフォルトの名無しさん
2008/02/22(金) 01:29:10動作そのものを左右する契約はコード本体に書いてあるべきだよ。
0280デフォルトの名無しさん
2008/02/22(金) 01:33:18仕様では、bodyを持たない関数には契約つけれない。
抽象関数でもbodyがあれば契約はかける。
0281デフォルトの名無しさん
2008/02/22(金) 07:17:330282デフォルトの名無しさん
2008/02/22(金) 08:40:15なんかもうmixinの制限ありで書くより、自動生成プログラム一つ組んで走らせた方が早いんじゃないかと思えてきた。
動的配列作れないとか、添え字に変数使えないとかが厳しい。
0283デフォルトの名無しさん
2008/02/22(金) 12:18:00Pythonの標準ライブラリにはユニットテスト用モジュールがいくつかあるんだが、
その中のdoctestという奴では、テスト内容をコメント部分に書くようになってる。
簡単なテストを書きたい場面ではよく使われてるよ。ご参考まで。
でもまあDではin/out/bodyとか用意されてるから、
そっちを素直に使う方がいいとは思うね。
0284デフォルトの名無しさん
2008/02/22(金) 13:08:11ありがとう。残念だ。
0285デフォルトの名無しさん
2008/02/22(金) 15:33:52if( this !is null ) {}
0286デフォルトの名無しさん
2008/02/22(金) 17:38:570287デフォルトの名無しさん
2008/02/22(金) 18:15:060288デフォルトの名無しさん
2008/02/22(金) 19:05:300289デフォルトの名無しさん
2008/02/22(金) 19:30:41それか、_argptrと_argumentsを引数に取るオーバーロードを用意するか。
0290デフォルトの名無しさん
2008/02/22(金) 19:39:510291デフォルトの名無しさん
2008/02/22(金) 20:04:42asmまでいかなくても出来るんじゃないか?メモリ確保して、コピーするだけだし。
0292デフォルトの名無しさん
2008/02/22(金) 20:07:21それをコールフレーム上でできるのか?
0293デフォルトの名無しさん
2008/02/22(金) 20:07:30再帰やマルチスレッドだと死亡しそうだな。
メモリ確保するにしても、その確保したアドレスを保持するポインタが必要だし。
静的な領域に複数のポインタの置き場所を作って
何とかやりくりすればましにはなるだろうが。
0294デフォルトの名無しさん
2008/02/22(金) 20:12:41Cの可変個引数関数の事考えてた。
0295デフォルトの名無しさん
2008/02/22(金) 20:26:40jmp するだけでおk。
asm なら。
0296デフォルトの名無しさん
2008/02/22(金) 21:45:57http://www.kmonos.net/alang/d/2.0/variadic-function-templates.html
あたりを参考に、 void func(T...)(T arg){ func2(arg); } とか。
0297デフォルトの名無しさん
2008/02/22(金) 23:52:10タプルって可変個引数関数にそのまま渡せるんだな。知らんかった。
テンプレートってすごいけど、使いこなせない。
0298デフォルトの名無しさん
2008/02/23(土) 01:19:49一応ヨガ教室には一とおり通いました。
0299デフォルトの名無しさん
2008/02/23(土) 02:22:260300デフォルトの名無しさん
2008/02/23(土) 02:24:26話はそれからだ
0301デフォルトの名無しさん
2008/02/23(土) 02:25:240302デフォルトの名無しさん
2008/02/23(土) 06:45:340303デフォルトの名無しさん
2008/02/23(土) 07:07:27学生で趣味のプログラミングでDに惚れ込んだ俺はどうなるw
0304デフォルトの名無しさん
2008/02/23(土) 07:21:060305デフォルトの名無しさん
2008/02/23(土) 07:30:530306デフォルトの名無しさん
2008/02/23(土) 07:55:340307デフォルトの名無しさん
2008/02/23(土) 07:57:31ノーカウント
0308デフォルトの名無しさん
2008/02/23(土) 10:43:300309デフォルトの名無しさん
2008/02/23(土) 13:31:070310デフォルトの名無しさん
2008/02/23(土) 13:58:37ホビープログラマが遊びつつ、バグや要望を出していく段階だと思うが。
0311デフォルトの名無しさん
2008/02/23(土) 14:09:34少なくとも客を納得させるのは難しいな。
0312デフォルトの名無しさん
2008/02/23(土) 14:12:300313デフォルトの名無しさん
2008/02/23(土) 14:41:50foreach(i; 0 .. 100) {
switch(i) {
case 42:
break foreach; // !!!
default:
writeln(i);
}
}
とか書けたら便利じゃね。
0314デフォルトの名無しさん
2008/02/23(土) 14:44:36例えば foreach の2重ループの中にそう書いてあって、
中の foreach を for に変更したくなった時とか。
現状のラベル付きの方がいいんじゃないかな。
0315デフォルトの名無しさん
2008/02/23(土) 14:47:440316デフォルトの名無しさん
2008/02/23(土) 14:53:46昔はFORとNEXTの対応があってなくてもよかったBASIC処理系あってカオスだったけど。
0317デフォルトの名無しさん
2008/02/23(土) 15:59:03つーか、大抵の処理系ではNEXTの変数は省略可だったような。
0318デフォルトの名無しさん
2008/02/23(土) 16:22:40Javaかなんかで多段breakできなかったっけ。
>>316
学生時代につかってたポケコンがそんな感じで、
if i>0 than for j=0 to 100
-hogehoge-
if i<0 than next
てな感じで、C系ではできないforの宣言ができたりしてた。next を最初に見つけるととまるんだよなぁ。
なつかしい。
0319デフォルトの名無しさん
2008/02/23(土) 16:53:18thanじゃなくてthenな。
0320デフォルトの名無しさん
2008/02/23(土) 17:47:51いや >>316 が言ってるのは
for i = 0 to 10
if hoge then next
next
とか書けたという意味かと
0321デフォルトの名無しさん
2008/02/23(土) 17:55:100322デフォルトの名無しさん
2008/02/23(土) 18:23:16普通にエラーだったような。
0323デフォルトの名無しさん
2008/02/23(土) 18:40:42asm C C++とどっぷりつかってた。
んで、D言語であそんでたくちだが、C#がすんなり使えた。
D言語しかつかわないようにするわけでは無い。
「現代的な言語」(プログラミング言語Dより引用)にふれることは
そう無駄じゃないと思う。
0324デフォルトの名無しさん
2008/02/23(土) 19:00:22Dを本格的に使う、という話からだいぶ横滑りしてるかと。
というか、それは最初からC#とか使ったほうがいいんじゃね?
向こうのが開発環境も充実してるし、現代的な言語に触れるって目的なら各種スクリプトも手軽……
……なんか悲しくなってきた。でもDが好きだよ、俺。
0325デフォルトの名無しさん
2008/02/23(土) 19:34:09> ……なんか悲しくなってきた。でもDが好きだよ、俺。
好きならイイジャマイカ
0326デフォルトの名無しさん
2008/02/23(土) 22:44:24まあ他にもインスピレーションを得るために、変わった環境に触れていくのは悪いことではないかと。
今のところDってそういう位置付けでもいいと思う。言語の成長とともに使う側も成長していける言語みたいな。
0327デフォルトの名無しさん
2008/02/23(土) 23:43:23C#(.net系全部)はネイティブはけないし、Javaは遅いし、C++は汚いし……
趣味にはぴったりジャマイカ。コードと仕様が美しいし(C++と比べて)
まぁぶっちゃけC#が高速で起動するネィティブ吐き出したら勝てないと思うが。
0328デフォルトの名無しさん
2008/02/24(日) 00:17:04つngen
0329デフォルトの名無しさん
2008/02/24(日) 02:50:17開発者側でネイティブ吐きたいよな。
0330デフォルトの名無しさん
2008/02/24(日) 03:04:35C#で作ったソフトの起動が遅すぎるんだが俺の何かがまずいのか?
ngen使っても起動時間は長いんだが
Dで作ったソフトは軽快だから好きだ!
0331デフォルトの名無しさん
2008/02/24(日) 03:36:51あれくらい使いこなせてるんなら本格的っていえるか
0332デフォルトの名無しさん
2008/02/24(日) 05:04:39TUMIKI Fighters は ABA さん
ちなみに Wii でゲーム化されるほど
ttp://www.gamespark.jp/modules/news/index.php?p=2808
0333デフォルトの名無しさん
2008/02/24(日) 06:05:330334デフォルトの名無しさん
2008/02/24(日) 06:52:44ngen使っても遅いのがちょっと速くなるくらいであまり変わらんよ。
0335デフォルトの名無しさん
2008/02/24(日) 06:59:180336デフォルトの名無しさん
2008/02/24(日) 07:06:08まあ冗談だがWiiの操作性には割とマッチすると思わなくもない
0337デフォルトの名無しさん
2008/02/24(日) 12:18:370338デフォルトの名無しさん
2008/02/24(日) 12:24:38保守・改変まで考慮する場合(それがよい習慣か否かとか)は話が別だけど。
0339デフォルトの名無しさん
2008/02/24(日) 12:39:48関数にデストラクタ機能欲しくね?
quitでユーザー定義なデストラクタへ抜けてreturnでdefaultなデストラクタへ処理を渡す。
0340デフォルトの名無しさん
2008/02/24(日) 12:41:560341デフォルトの名無しさん
2008/02/24(日) 12:45:02変数の初期化を飛び越える事ができない。
解決するにはコンストラクタと称して
デストラクタで使用可能な変数を宣言する場所が必要になるな。
0342デフォルトの名無しさん
2008/02/24(日) 12:52:190343デフォルトの名無しさん
2008/02/24(日) 12:54:510344デフォルトの名無しさん
2008/02/24(日) 13:12:38ABAはもうD使ってないよ
0345デフォルトの名無しさん
2008/02/24(日) 13:13:17撒き戻しとか後片付けならスコープガードや例外を使えばいいと思うよ。
0346デフォルトの名無しさん
2008/02/24(日) 14:52:28ngen使っても完全なネイティブじゃないでしょ。それに.net frameworkで動くからやっぱり遅い(初期起動が特に)
趣味で作る小さなプログラム起動するのに時間かかってたら腹が立つ。Office大きいものならば許せるが。その点Dは高速だし好きだ。IDEさえ何とかなれば……orz
0347デフォルトの名無しさん
2008/02/24(日) 15:19:160348デフォルトの名無しさん
2008/02/24(日) 15:21:470349デフォルトの名無しさん
2008/02/24(日) 16:00:32ってのが美しくないところだと思う。
関数を合成して処理を作ること、処理を連結してフローを作ること、
これはそれぞれ別のまとまりとして定義されないと、処理フローが
ぐちゃぐちゃになると思うよ。
0350デフォルトの名無しさん
2008/02/24(日) 16:16:090351デフォルトの名無しさん
2008/02/24(日) 17:02:44日程:3月1日(土) 10:15 - 12:00 開始時間が変わりました
時間変更に伴い、以前登録された方も前半/後半を個別に登録してください
http://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF
0352デフォルトの名無しさん
2008/02/24(日) 19:57:23俺もそう思ってたけどBOFのBillさんとか本気でつかってるぽい
まあ研究職だからできるのかもしれんが
0353デフォルトの名無しさん
2008/02/24(日) 20:04:33伝えるだけなら
ココで出たバグ報告をnewsにポストする人と手間はかわらん
しかしその後の議論についていきつつ説得するのは正直めんどい
あと >>214 はあまり集まらないので没りそう
0354デフォルトの名無しさん
2008/02/24(日) 21:33:32try ~ finally と違ってネストが深くならないしでかなり好きだ
0355デフォルトの名無しさん
2008/02/24(日) 21:37:420356デフォルトの名無しさん
2008/02/24(日) 22:57:49途端に一段のネストが憎たらしくなるよ。
0357デフォルトの名無しさん
2008/02/24(日) 23:20:150358デフォルトの名無しさん
2008/02/25(月) 00:20:23「実行される箇所ではなくそれが概念的に属する場所に配置されている」
というのがいい点だが、概念的にスコープに属している実行保障を
わざわざtryブロックに付け替えるのは分かりにくくなる原因だよなと思う。
0359デフォルトの名無しさん
2008/02/25(月) 00:57:430360デフォルトの名無しさん
2008/02/25(月) 06:28:560361デフォルトの名無しさん
2008/02/25(月) 14:38:36in {
}
out {
}
before {
}
after {
}
body {
}
上から読むとなかなかbodyにたどり着けないな
0362デフォルトの名無しさん
2008/02/25(月) 15:14:010363デフォルトの名無しさん
2008/02/25(月) 16:43:09自分は基本的にタブ8でインデント + 80桁でコーディングしてるのですごく気になる。
あと、
step1();
scope (failure) step1_end();
/* なんか処理 */
step2();
scope (exit) step2_end();
こんな感じのを try~finally で書くと鬱にならないか?
0365デフォルトの名無しさん
2008/02/25(月) 20:26:47それ、いわゆるtry…catch…finallyなパターンじゃない?
0366デフォルトの名無しさん
2008/02/25(月) 20:49:010367デフォルトの名無しさん
2008/02/25(月) 21:32:550368デフォルトの名無しさん
2008/02/25(月) 21:34:240369デフォルトの名無しさん
2008/02/25(月) 21:41:58これと等価かな
try {
step1();
step2();
} catch {
step1_end();
} finally {
step2_end();
}
0370デフォルトの名無しさん
2008/02/25(月) 21:46:17よくある
0371363
2008/02/25(月) 21:55:24なんでこんなミスを
step1();
scope (exit) step1_end();
/* なんか処理 */
step2();
scope (exit) step2_end();
0372デフォルトの名無しさん
2008/02/25(月) 22:01:09例外が発生した位置によってやるべきことが変わるから。
各段階にあわせた例外処理をするために別々のtry文を用意するか、
深くネストしたtry文で…って感じになるんじゃないかと。
0373デフォルトの名無しさん
2008/02/25(月) 22:53:05try-finallyがネストするのがそんなに嫌か?
巻き戻す環境が違うんだから、ネストして当然だと思うが。
むしろ>>371のほうが妙な制御依存が発生して嫌だ。
0374デフォルトの名無しさん
2008/02/25(月) 22:57:04マジでプログラムの質が悪いからネストした時辛くなるんだろ。
0375デフォルトの名無しさん
2008/02/25(月) 23:05:550376デフォルトの名無しさん
2008/02/25(月) 23:14:280377デフォルトの名無しさん
2008/02/25(月) 23:15:460378デフォルトの名無しさん
2008/02/25(月) 23:27:57http://www.kmonos.net/alang/d/2.0/exception-safe.html
>>373
> try-finally による方法は、 概念的に関連している値のセットと復元コードが、
> 間に関係のないコードが挟まることでいくらでも離されてしまう危険性を含んでいます。
>>374
> try-finally による解決は、 リソースの初期化コードと巻き戻し処理のコードが分離して記述され、
> 実際ソースコード上で視覚的に大きく離れてしまします。
> しかし、密接に関連した処理は一カ所にまとまっているべきです。
>>377
> scope文だけでは例外のcatchはできませんから、try-catch も必要です。
> try-finally は、scope文によって冗長な構文となったと言えます。
0379デフォルトの名無しさん
2008/02/26(火) 03:24:07ary = [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 }
御存知でしたら教えて下さい
0380デフォルトの名無しさん
2008/02/26(火) 06:52:40int 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;
};
}
0381デフォルトの名無しさん
2008/02/26(火) 08:35:49いつの時代の人間だよ。
こういうこと言う奴って ts とか hmi とか訳分からん略した変数名使ってんだよな。
そっちのほうが最悪だっつーの。
0382デフォルトの名無しさん
2008/02/26(火) 09:01:120383デフォルトの名無しさん
2008/02/26(火) 10:25:41独占権は当然なくなるが。
0384デフォルトの名無しさん
2008/02/26(火) 11:43:25http://info.2ch.net/kiyaku.html
0385デフォルトの名無しさん
2008/02/26(火) 11:58:54著作権は「創作性」なるものがないと認められないんだが、
Dスレで張られてる程度のサンプルないし言語仕様の検証コードなら、
創作性なしと判断されるのが通例と思われ。
0386デフォルトの名無しさん
2008/02/26(火) 13:22:14> 無償で非独占的に複製、公衆送信、 頒布及び翻訳する権利を投稿者に許諾します。
> また、投稿者は掲示板運営者が指定する第三者に対して、一切の権利(第三者に
> 対して再許諾する権利を含みます)を許諾しないことを承諾します。
あたりのせいで、ここでコードを聞いて流用するとなると適用できない
ライセンスが結構出てくる。
20行を越えるようなコードでも創作性はないってのが通例だってのは初めて聞いた。
そうなると、それよりはるかに大きい著作物の20行の断片だけを流用する場合でも、
その断片はもはや創作物として原形をとどめてないないんだな。
0387デフォルトの名無しさん
2008/02/26(火) 13:33:38とか3行で騒いでて何をやってるんだろうなあと思ったことはあるけどよくわからんな。
0388デフォルトの名無しさん
2008/02/26(火) 13:39:39Database 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すら不要だけど。
0389デフォルトの名無しさん
2008/02/26(火) 13:48:05Database 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();
}
0390デフォルトの名無しさん
2008/02/26(火) 17:28:56このスレで張られるサンプルって、ほとんどが機能的なものではなく「言語仕様の検証」であって、
言語仕様からほとんど一意に決まるものだから検証サンプルそのものには創作性は認められないのではないかと。
何らかの機能性を有していれば3行のコードでも創作性が認められるとは思うけどね。
0391デフォルトの名無しさん
2008/02/26(火) 17:45:29いずれにしても裁判所がそう認めない限りはわからないんだよね。
不確実なことを避ける考え方にも一理ある。
こういう話は嫌いじゃないけど、どうせ結論出せないんだし
気にする人だけ気にしてればいいんじゃね。
0392デフォルトの名無しさん
2008/02/26(火) 17:48:58気にする人だけ気にすればいいというのは同意かな。
多少気になったので裁判例を調べてみた。
ア プログラムの著作物性
プログラムは,その性質上,表現する記号が制約され,言語体系が厳格
であるため,計算式をプログラム言語で記述したような場合にはプログラムにおけ
る記述が相互に類似することがあり得る。仮に,簡単な内容とごく短い表記法によ
って記述したプログラムをも,著作権法上の保護対象とすると,コンピュータの広
範な利用を妨げ,経済活動や研究活動に多大な支障を来すことになる。また,著作
権法は,プログラムの具体的表現を保護するものであって,機能やアイディア,あ
るいは科学的な計算式やその採用を保護するものではない。当該プログラムがある
目的における公知の計算式の採用を保護対象とすることになると,結果的には計算
式そのものを独占させることとなるからである。
したがって,コンピュータに対する指令の組合せであるプログラムの具
体的表現がこのような記述からなる場合は,作成者の個性が発揮されていないもの
として創作性が否定されるべきである。
http://www.courts.go.jp/hanrei/pdf/683C8598E4E61EC4492570DF001C9775.pdf
図表又は図表の使用例に示される思想ないし
アイデアそのものは,著作権法によって保護されるものではない。また,このよう
な図表又は図表の使用例は,次に述べるとおり,かかる思想ないしアイデアを表現
する際にその個性が表れず,定型的な一般的にありふれた表現としかならないよう
な場合には,著作権法によって保護し得る表現上の創作性があるということはでき
ない。
http://www.courts.go.jp/hanrei/pdf/A04C1CFADEB110E7492570BD001A9BE1.pdf
0393デフォルトの名無しさん
2008/02/26(火) 17:59:34上のほうの裁判例、被告の主張部分で判決部分ではありませんでした(ただし被告勝訴)
しかし、控訴審で判断が一部ひっくり返ってた。
公知の式をプログラムにするだけなら創作性はないが、
それを含むシステム全体は創作性を有するとかなんとか
ttp://www.courts.go.jp/hanrei/pdf/20070104101733.pdf
自分の間違いを訂正したところで、
スレチなのでこの辺で打ち止め。
0394デフォルトの名無しさん
2008/02/26(火) 18:10:520395デフォルトの名無しさん
2008/02/26(火) 18:12:010396デフォルトの名無しさん
2008/02/26(火) 18:31:050397デフォルトの名無しさん
2008/02/26(火) 19:01:360398デフォルトの名無しさん
2008/02/26(火) 19:43:06どういう意味なのか、アホな俺にもう少し噛み砕いて説明してくれまいか。
>>389だと、openなどに対応するcloseがえらく離れちゃうし、
connection, compileQuery, executeという「本筋」の実行パスが分かりづらくて、
可読性の面で問題があるとおもうのだけど。
こう、gotoを忌避するあまり、関数呼び出しの度にif(!error){ ... が重なっていくCのコードみたいに。
0399デフォルトの名無しさん
2008/02/26(火) 20:20:32そりゃあ、どんな処理をしたかによって後始末の処理を予約・保証したいんだから、
処理によって動的に定まるのが自然じゃね?
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なコードに直訳できるけど、
こういう場合はよく分からん。フローの状態を記録する変数とか用意したりするのが
セオリーなんだろうか。でもそれじゃ結局フロー依存だしなあ。
0400デフォルトの名無しさん
2008/02/26(火) 20:40:460401デフォルトの名無しさん
2008/02/26(火) 21:31:550402デフォルトの名無しさん
2008/02/26(火) 21:44:240403デフォルトの名無しさん
2008/02/26(火) 22:00:23著作権は親告罪だから言語の作者がよほどの基地外じゃなかったら真っ白だよ
でも今居るGPL厨みたいな人間がしつこく言ってきて結果的な被害は変わらないだろうけどw
0404デフォルトの名無しさん
2008/02/26(火) 22:22:52>第十条 この法律にいう著作物を例示すると、おおむね次のとおりである。
>(中略)
>九 プログラムの著作物
>3 第一項第九号に掲げる著作物に対するこの法律による保護は、その著作物を作成するために用いるプログラム言語、規約及び解法に及ばない。この場合において、これらの用語の意義は、次の各号に定めるところによる。
>一 プログラム言語 プログラムを表現する手段としての文字その他の記号及びその体系をいう。
>二 規約 特定のプログラムにおける前号のプログラム言語の用法についての特別の約束をいう。
>三 解法 プログラムにおける電子計算機に対する指令の組合せの方法をいう。
なので少なくとも現在の日本では著作権法の保護は言語仕様に及ばないはず。
0405デフォルトの名無しさん
2008/02/26(火) 23:34:560406デフォルトの名無しさん
2008/02/26(火) 23:38:03ニュースの内容と、ニュース本文のような感じで。
0407デフォルトの名無しさん
2008/02/27(水) 00:25:330408デフォルトの名無しさん
2008/02/27(水) 00:58:46try {
starthoge();
finally endhoge();
}
0409デフォルトの名無しさん
2008/02/27(水) 01:10:57starthoge();
scope(exit) endhoge();
}
これと等価?
0410デフォルトの名無しさん
2008/02/27(水) 02:54:590411デフォルトの名無しさん
2008/02/27(水) 12:52:51http://www.dprogramming.com/dfl.php
Entice Designer 0.8.4.03 is a bug fix release:
http://www.dprogramming.com/entice.php
New Entice Designer and DFL Video Tutorials:
http://www.dprogramming.com/dfl/videos.php
0412デフォルトの名無しさん
2008/02/27(水) 23:10:20assert(0)
0413デフォルトの名無しさん
2008/02/27(水) 23:20:460414デフォルトの名無しさん
2008/02/27(水) 23:31:150415デフォルトの名無しさん
2008/02/28(木) 17:37:23同じスタイルのウインドウを表示するだけのサンプルなんだけど、CとDではなぜか表示スタイルが違ってしまう。
たぶんCの方が正しいと思うのだけど、どこが悪いんだろう。
import std.stdio;を消すとエントリポイントが無いエラーが出るし。
0416デフォルトの名無しさん
2008/02/28(木) 18:11:42Dの場合win.defをですね、
EXETYPE NT
SUBSYSTEM WINDOWS,4.0
って書き換えてみましょう。
0417デフォルトの名無しさん
2008/02/28(木) 18:16:07あっはっは。
前にそれどこかで見つけてそういう風にしていたのになぜか今見てみたら4.0が消えてたほうに変わってた。OTL
どうもです。
0418デフォルトの名無しさん
2008/02/29(金) 00:36:53メインのFormをいわゆるSW_HIDE状態にしたいのですが・・・できませんorz
visible=false; とか ShowWindow(cast(HWND)this.handle, SW_HIDE);
とか試したがうまくいかないです。
やりかたご存知の方いらっしゃいませんか?
0419デフォルトの名無しさん
2008/02/29(金) 09:34:45>>418
で、.netに似てるなら.netを調べたらいいんじゃないだろうかと思って調べて来たら、.netでフォームを非表示にするには
FormクラスのHide()を呼び出すみたいです。
DFLを見るとhide()があるので、これでいけるかも知れませんね。試してませんが。
0420デフォルトの名無しさん
2008/02/29(金) 09:51:590421418
2008/02/29(金) 10:45:48とりあえずhide()を呼び出して見ましたが変わりませんでした。
.netのHide()メソッドはvisibleをfalseにするのと同じとありました。
DFLにおいてvisibleプロパティについてはEnticeDesignerのメインformのvisibleプロパティのところに
"whether or not this form is visible"
と説明がでますのでどっちにしろ表示される・・・・( ;´Д`)ぇー!?
て思ってたんですが、hide()もこれと同じ結果のようです。
なんか方法ないもんですかねぇ;
0422419
2008/02/29(金) 10:46:49MSDNによると、.netではvisible=falseとHide()は全く同じ動作らしい。DFLでも同じ可能性大。
それと、DFLで試してきたけど、
一つFormを作り、そこにボタンを置き、ボタンをクリックするとフォームのvisibleをfalseにする。って組んでみたら普通に非表示にされた。
だけど、フォームの生成(Application.run(form);)の前にform.visible=falseを設定しても非表示にはされなかった。
これは多分.netと同じ挙動。
http://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。
0423419
2008/02/29(金) 10:54:09生成後ならちゃんと機能するってことだと思う。
0424418
2008/02/29(金) 11:27:24生成前に設定しているのが原因でした。
生成後に設定するにはどうしようかと考えていましたが、
わたしがやりたかったのはApplication.run()で実現できそうです。
使い方がよくわからなくてすみません。
ありがとうございました(・∀・)
DFLに関して検索するとC#とかの情報が役に立つのでその辺を意識して作られてるのだと思いますが、
.NETとかC#とかやらずにC++あたりからDにきた者にはDflDocはひどいです><;
0425デフォルトの名無しさん
2008/02/29(金) 11:39:20プログラムの流れやメッセージループも理解してないのにデザイナ使うと訳分からず混乱するw
0426デフォルトの名無しさん
2008/02/29(金) 14:45:33EXETYPE NT
SUBSYSTEM CONSOLE,4.0
0427デフォルトの名無しさん
2008/02/29(金) 18:35:42確認してないけど初期設定はonLoadとかloadとかでやったらどうだろう。
0428419
2008/02/29(金) 18:40:40まあいいかと思って書かなかったけど、追記。
load内でvisible=false;をするとフォームが一瞬表示された後に消えます。
0429デフォルトの名無しさん
2008/02/29(金) 22:37:54どうもです。出来ました。
0430デフォルトの名無しさん
2008/02/29(金) 23:15:02使わないけど。
0431デフォルトの名無しさん
2008/02/29(金) 23:44:38ここんとこ忙しくて予約とかさっぱり忘れてた
でも行ってみる
0432デフォルトの名無しさん
2008/03/01(土) 01:20:240433427
2008/03/01(土) 02:09:54あーそうだった。俺もそうなって、そこで妥協したんだった。
いい加減なこと言って申し訳ない。
しかしDFLのコード読んでみたら、初期化の最中にWinProcを介して
あっちこっち飛んでは3種類くらいの可視フラグを立ててはチェックしてで頭が爆発した。
0434デフォルトの名無しさん
2008/03/01(土) 02:17:58template<typename... T>
class C: T... {
C(const T&... t): T(t)... {}
}
0435デフォルトの名無しさん
2008/03/01(土) 02:22:520436デフォルトの名無しさん
2008/03/01(土) 02:32:38f(const_cast<const Args*>(&args)...);
}
こういうのはちょっと羨ましいかも
0437デフォルトの名無しさん
2008/03/01(土) 10:09:460438デフォルトの名無しさん
2008/03/01(土) 11:13:510439デフォルトの名無しさん
2008/03/01(土) 12:07:270440デフォルトの名無しさん
2008/03/01(土) 12:07:570441デフォルトの名無しさん
2008/03/01(土) 12:38:410442デフォルトの名無しさん
2008/03/01(土) 12:44:110443デフォルトの名無しさん
2008/03/01(土) 15:26:05ところで"Tuple"が複数のモジュールにあって
それらが全然違うものだから混乱したぞ
0444デフォルトの名無しさん
2008/03/01(土) 15:36:31object.dみたいなところにひとつTupleが書いてあればいいのに
0445デフォルトの名無しさん
2008/03/01(土) 15:38:420446デフォルトの名無しさん
2008/03/01(土) 16:42:23もしかしてABAさんと、をるたんの謝辞だけ?
0447Dubhead
2008/03/01(土) 17:14:32メモが追いつかなかった部分が多々あるけど許してね orz
http://d.hatena.ne.jp/Dubhead/20080301
0448デフォルトの名無しさん
2008/03/01(土) 17:19:47誰か録画してないのー?
0449デフォルトの名無しさん
2008/03/01(土) 17:32:04だがDでSIGGRAPH発表する伝説の勇者が出現
0450デフォルトの名無しさん
2008/03/01(土) 18:03:56GJ!
概要はなんとなくわかった。
読めば読むほど拝聴したかっただぜ!Orz
0451デフォルトの名無しさん
2008/03/01(土) 18:23:38ちくしょー見たかったぜ。
0452デフォルトの名無しさん
2008/03/01(土) 18:24:37>>Walterだけど何か質問ある?
0453デフォルトの名無しさん
2008/03/01(土) 18:37:45プレゼンまとめうpとかあったら神なんだが
0454デフォルトの名無しさん
2008/03/01(土) 18:51:390455デフォルトの名無しさん
2008/03/01(土) 18:57:45>だがDでSIGGRAPH発表する伝説の勇者が出現
kwsk
0456デフォルトの名無しさん
2008/03/01(土) 22:39:06ビルタンです
0457デフォルトの名無しさん
2008/03/02(日) 01:08:36話題に乗り遅れてるが、ぼちぼち見てくる。
0458デフォルトの名無しさん
2008/03/02(日) 01:35:24ちゃんとスライドが読める画質っぽいwww
0459デフォルトの名無しさん
2008/03/02(日) 10:53:47これかい。
0460デフォルトの名無しさん
2008/03/02(日) 11:40:110461デフォルトの名無しさん
2008/03/02(日) 11:54:28お前がするんだよ!
0462デフォルトの名無しさん
2008/03/02(日) 12:23:410463デフォルトの名無しさん
2008/03/02(日) 12:30:040464デフォルトの名無しさん
2008/03/02(日) 12:59:200465デフォルトの名無しさん
2008/03/02(日) 15:39:27コメントが少ないからじゃなく何となく。
0466デフォルトの名無しさん
2008/03/02(日) 15:52:450467デフォルトの名無しさん
2008/03/02(日) 16:47:440468デフォルトの名無しさん
2008/03/02(日) 18:26:20実際会場行った人、お願いします。
0469デフォルトの名無しさん
2008/03/02(日) 20:47:23import 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);
}
こういうのは駄目なんですか?
0470デフォルトの名無しさん
2008/03/02(日) 21:20:550471デフォルトの名無しさん
2008/03/02(日) 21:26:57しゃべってる人が俺の脳内イメージとは、悪くない意味で違ってた。・・・当たり前か。
理解できてるかはべつとしておもしろかた。
0472デフォルトの名無しさん
2008/03/02(日) 21:35:24ニコ動以外の所に上げて
0473デフォルトの名無しさん
2008/03/02(日) 22:23:29asmの話題はあんまり見たこと無いな。
俺はアセンブリ系はわかんないし。
0474デフォルトの名無しさん
2008/03/02(日) 22:26:520475デフォルトの名無しさん
2008/03/02(日) 22:28:40アカウント取ったほうが早い
異論は認める
0476デフォルトの名無しさん
2008/03/02(日) 23:08:260477デフォルトの名無しさん
2008/03/02(日) 23:50:100478デフォルトの名無しさん
2008/03/03(月) 07:34:28BOFのコンパイル時コンパイラに触発されて、
brainfuckを、Dの
delegate void(std.stream.InputStream, std.stream.OutputStream)
なデリゲートに変換するモジュールを書いてみた
以前D言語における日本語利用の話題になったときにインタプリタまで書いてたやつです
今度はきちんとDソースコード表現を経由してネイティブコードにコンパイルされます
文字列mixinを使うと素直な表現になりますね
0479デフォルトの名無しさん
2008/03/03(月) 07:59:26自己解決しました。と言うかあまりにあれだった。
結果として>>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);
}
0480デフォルトの名無しさん
2008/03/03(月) 08:13:00http://video.google.com/videosearch?q=D%E8%A8%80%E8%AA%9EBOF+2008-03-01
0481デフォルトの名無しさん
2008/03/03(月) 11:34:21見た感じないのだけど、どうしてだろう?
void thread_suspendAll() 内には void suspend( Thread t ) なるものが見えるけど外からは使えない…
0482デフォルトの名無しさん
2008/03/03(月) 11:58:460483デフォルトの名無しさん
2008/03/03(月) 12:54:04Thread.yield ではダメ? 実行権が勝手に戻ってきちゃうと都合悪いのかな。
だったらtango.core.Thread.Fiberで yield/callするコードを書いといて、
そのファイバーをスレッドで駆動するという手はある。
0484481
2008/03/03(月) 13:18:00そうなんですか?初めて聞きました。浅学なもので…
でも、使いたくなる時もあるんじゃないかと思うので、
設計の良し悪しは別にして、あってもいいような気がしないでもないのですが…
>>483
それはなんとも強引ですねw
とりあえず使うところはWindowsなので、スレッド内でGetCurrentThreadとかすればなんとでもなる…
けど、なんかスマートじゃない感じが…
0485デフォルトの名無しさん
2008/03/03(月) 13:44:550486デフォルトの名無しさん
2008/03/03(月) 14:08:39ってなんですか?
0487デフォルトの名無しさん
2008/03/03(月) 14:22:13bugzillaに報告しとけば一年ぐらいで直るよ。
0488デフォルトの名無しさん
2008/03/03(月) 15:08:080489デフォルトの名無しさん
2008/03/03(月) 19:15:410490イーペーコー
2008/03/03(月) 19:20:470491デフォルトの名無しさん
2008/03/03(月) 19:22:360492デフォルトの名無しさん
2008/03/03(月) 19:43:55なにやらアセブラはなんでもできるそうでD言語より高機能だそうです
0493デフォルトの名無しさん
2008/03/03(月) 19:45:37わー
サンクス
0494デフォルトの名無しさん
2008/03/03(月) 21:24:05あの膨大なライブラリを誰が書いたかってハナシだな。
キャパシティはあんま変わらん。
0495デフォルトの名無しさん
2008/03/03(月) 22:03:40アセンブリ言語でガリガリ効率的に書けるなら,確かに他の言語なんていらないなw
0496デフォルトの名無しさん
2008/03/03(月) 22:11:420497デフォルトの名無しさん
2008/03/03(月) 22:15:39チューリング機械があればという奴にかぎってチューリング機械でプログラミングした経験がない。
0498デフォルトの名無しさん
2008/03/03(月) 22:19:120499デフォルトの名無しさん
2008/03/03(月) 22:21:39別に限らないと思う。
0500デフォルトの名無しさん
2008/03/03(月) 22:30:380501デフォルトの名無しさん
2008/03/03(月) 22:37:07/ \
/ _ノ ヽ、_ \
/ o゚⌒ ⌒゚o \ また明日から無限に長いテープを前後に動かす仕事が始まるお
| (__人__) |
\ ` ⌒´ /
0502デフォルトの名無しさん
2008/03/03(月) 22:48:010503デフォルトの名無しさん
2008/03/03(月) 22:56:25D言語は量子コンピュータ上で動きますか?
0504デフォルトの名無しさん
2008/03/03(月) 23:07:26その仕事はいつ終わるんですか。
0505デフォルトの名無しさん
2008/03/03(月) 23:07:590506デフォルトの名無しさん
2008/03/03(月) 23:16:48現在のノイマン型だと非常に時間の掛かる問題(確か年単位オーダー)を解いたそうだが、計算は一瞬で終わっても解を取り出すのに数週間掛かったそうだ。
質的な差は確かに違うしできること、奥の深さの違いもあるだろうけど、現時点では量的な差がそれを打ち消してしまうほど使い物にならない。
例の様な特殊な事例でなければね。
というか量子的な動作を記述する言語ってどんなものになるんだろうな。
D言語は言語使用自体の例外的なものをできるだけ排除して、できるだけ簡素なものに帰納的に表現できるように
工夫がされているはず。
その“帰納的”という性質そのものがノイマン型コンピュータに依存するわけだから、勿論互換性なんてない。
量子コンピュータはその動作を確率的に、並列コンピュータはその動作を並列的つまり動的計画法バリバリに記述するんだろうねきっと。
0507デフォルトの名無しさん
2008/03/04(火) 00:29:370508デフォルトの名無しさん
2008/03/04(火) 00:52:33大量に右往左往する量子コンピューティングには
テキストでしこしこ記述する手法では太刀打ち出来ない。
0509デフォルトの名無しさん
2008/03/04(火) 07:29:30NOT, CNOT, CCNOT, SWAP っつー可逆な操作のみを使って計算する、
古典コンピュータとは根本的に異なる原理に基づいた計算になる。
その性質をフルに発揮するには、そもそも古典コンピュータ用の言語は向いていない。
さらには重ね合わせとかあるしね。
0510デフォルトの名無しさん
2008/03/04(火) 07:46:48> 工夫がされているはず。
正気か?
0511デフォルトの名無しさん
2008/03/04(火) 08:42:250512デフォルトの名無しさん
2008/03/04(火) 12:13:580513デフォルトの名無しさん
2008/03/04(火) 12:36:18運命についての質問とかな
0514デフォルトの名無しさん
2008/03/04(火) 12:58:390515デフォルトの名無しさん
2008/03/04(火) 20:24:23頑張れ↓
0516デフォルトの名無しさん
2008/03/04(火) 20:31:170517デフォルトの名無しさん
2008/03/04(火) 20:48:270518デフォルトの名無しさん
2008/03/04(火) 20:53:52動的コンパイル
0519デフォルトの名無しさん
2008/03/04(火) 21:29:36そんなこと言ってたらCコンパイラすら作れなくなるな
0520デフォルトの名無しさん
2008/03/04(火) 21:30:460521デフォルトの名無しさん
2008/03/04(火) 22:03:380522デフォルトの名無しさん
2008/03/04(火) 22:12:01何か便利なライブラリでも作って欲しいわ。
0523デフォルトの名無しさん
2008/03/04(火) 22:12:580524デフォルトの名無しさん
2008/03/04(火) 22:13:36でも同じ言語で新しいバージョンのものだったらまだ話は分かるけど、
同じバージョンなんて作っても・・・。
0525デフォルトの名無しさん
2008/03/04(火) 22:20:59その言語で書かれてる方がいいよね。
移行の過程を無視すれば、だけど。
> 複雑でデバッグ済みで既に完成しているアプリケーションを
> わざわざ他言語に 移植することにあまり利点はありません。
> 新しい Digital Mars のアプリは Dで実装されています。
http://www.kmonos.net/alang/d/2.0/faq.html#cpp_to_D
>517のような、新しくコンパイラを書き起こす場合は、Dで書くのも
普通に選択肢に入るんじゃない?
「すでにD言語のコンパイラは2つもあるのに、新しく作って何が楽しいの?」
ならともかく、D言語のコンパイラをD言語で書くこと自体はとくにおかしくないでしょ。
0526デフォルトの名無しさん
2008/03/04(火) 22:22:100527デフォルトの名無しさん
2008/03/04(火) 22:30:360528デフォルトの名無しさん
2008/03/04(火) 22:38:040529デフォルトの名無しさん
2008/03/05(水) 00:04:220530デフォルトの名無しさん
2008/03/05(水) 00:14:100531デフォルトの名無しさん
2008/03/05(水) 01:03:14readableとseekableが分かれているのだから言い切れないんじゃない.
ソースを上から全部読んでないので確証はないけど.
0532デフォルトの名無しさん
2008/03/05(水) 21:40:09人間が思ったとおりの動作を自動的にしてくれるんだって?
LL(0) 何世紀後の話になるやら・・・。
0533デフォルトの名無しさん
2008/03/05(水) 21:48:370534デフォルトの名無しさん
2008/03/06(木) 05:05:180535デフォルトの名無しさん
2008/03/06(木) 06:33:120536デフォルトの名無しさん
2008/03/07(金) 08:56:400537デフォルトの名無しさん
2008/03/07(金) 11:53:230538デフォルトの名無しさん
2008/03/07(金) 13:33:59その辺の工夫をすればかけるのではなかろうか。
0539デフォルトの名無しさん
2008/03/07(金) 14:47:190540デフォルトの名無しさん
2008/03/07(金) 15:03:510541デフォルトの名無しさん
2008/03/07(金) 15:22:35ハゲ同
今じゃVisual Basicですら簡単にC++並みのドライバが書けるのにD言語ときたら・・・
0542デフォルトの名無しさん
2008/03/07(金) 16:51:32http://d.puremagic.com/issues/show_bug.cgi?id=1828
> Fixed dmd 1.028 and 2.012 (and thanks for sorting this out)
0543デフォルトの名無しさん
2008/03/07(金) 17:32:57キタ━━━━━━(゚∀゚)━━━━━━!!!!!!
これで安心してマルチスレッドのコードが書けるわ
0544デフォルトの名無しさん
2008/03/07(金) 18:09:49アッパーコンパチなんで、やろうと思えばできるはず。効率的かはまた別だが。
まー、ビットフィールド位しかできないことおもいつかん。
アラインもいじれるし。ポインタもいじれるし。
>>541
なに?ドライバ入れるのに.NET入れないといけないの?
フロントエンドじゃなくて?
0545デフォルトの名無しさん
2008/03/07(金) 21:35:45ランタイムも全部sys 凄すぎるけどネタじゃないか
0546デフォルトの名無しさん
2008/03/07(金) 21:38:22Windows限定なら俺も書いたことがある
仕様が公開されてるキーボードのドライバをvb.netで
0547デフォルトの名無しさん
2008/03/07(金) 21:42:17auto ub = new ubyte[0x10];
auto ubs = ub[4..11];
uint* ui = cast(uint*)ubs;
要するにバイト列を任意の値型で再解釈するというモノです。
もっと安全な方法があるぜ!とかあったら教えてください
0548デフォルトの名無しさん
2008/03/07(金) 22:09:480549デフォルトの名無しさん
2008/03/07(金) 22:48:29VBの場合リトルエンディアンは静的なデストラクタとして扱われるから気をつけて。
uint* uiじゃなくてfile*uint[ui]の方がいいよ
0550デフォルトの名無しさん
2008/03/07(金) 22:56:30547じゃないけど、もう少し噛み砕いた説明plz
0551549
2008/03/07(金) 23:04:25静的(ガベージコレクタによって関数がオーバーロードされ変数のスコープからはずれたりするのを防ぐコア関数)
なデストラクタ(使い終わったオブジェクトをユーザーからのイベントパンドラ無しにイベント駆動型のラムダ式)
として扱われると言うこと。
uint* uiにするとβ変換(変数をグローバルなスコープから外し新しいシステム型変数として使うための変換)
が正常に行えなくなるのでfile*uint[ui]にしておいたほうがいいということ
0552デフォルトの名無しさん
2008/03/07(金) 23:08:460553デフォルトの名無しさん
2008/03/07(金) 23:21:18ゲームはあるみたいだが
0554547
2008/03/08(土) 00:09:13すいません全然意味がわからないです
エンディアンとガベージコレクタに何の関係が?
>file*uint[ui]
??file型のポインタの配列??
>VBの場合
???
0555デフォルトの名無しさん
2008/03/08(土) 00:40:40そして、ライブラリよりまず言語仕様の安定を・・・。
0556デフォルトの名無しさん
2008/03/08(土) 00:52:03Walterたんの突発的な変更に右往左往するのがD言語だ。
と俺は思っているが少数派だろうなぁ。まぁこんな考えだと一生D言語が流行らんけど
0557デフォルトの名無しさん
2008/03/08(土) 00:52:52早く実用したいという欲求もあるしなあ。
0558デフォルトの名無しさん
2008/03/08(土) 01:26:08ってそれが1.0系列と2.0系列か。
0559デフォルトの名無しさん
2008/03/08(土) 01:36:14ある程度賛否の賛の方が大きい機能を
1.0系列にマージした系列も欲しい所だな。
0560デフォルトの名無しさん
2008/03/08(土) 02:11:45dmd_2.012-030608_i386.debってのもあるけどなんだろうこれは。
0561デフォルトの名無しさん
2008/03/08(土) 02:14:580562デフォルトの名無しさん
2008/03/08(土) 03:14:570563デフォルトの名無しさん
2008/03/08(土) 06:58:060564デフォルトの名無しさん
2008/03/08(土) 09:46:55×イベントパンドラ
○イベントプロシージャ
×関数のオーバーロード
○関数のオーバーライド
0565デフォルトの名無しさん
2008/03/08(土) 09:52:21原因のコードを普通のブロックで囲んでも意味無かったので
(){
原因のコード
}();
こんなことしたらエラーでなくなった
でも顔はぐにゃってなった
0566デフォルトの名無しさん
2008/03/08(土) 11:04:33^ |
{ (
0567547
2008/03/08(土) 11:37:37ファイル型のポインタも知らなかったなんて・・・
今まで一体何を勉強してきたんだ…
http://www.geocities.jp/tor_park/Dlang/byte.html
0568デフォルトの名無しさん
2008/03/08(土) 12:01:12なんだこの6章だけデムパで残りはパクリのサイトは...?
0569デフォルトの名無しさん
2008/03/08(土) 12:26:470571547 ◆iBVPK4.Aq2
2008/03/08(土) 13:09:140572デフォルトの名無しさん
2008/03/08(土) 13:23:330573547
2008/03/08(土) 13:37:07自分で調べてきます
以降の547人は偽認定でお願いします
0574デフォルトの名無しさん
2008/03/08(土) 13:43:06だからhttp://www.geocities.jp/tor_park/Dlang/byte.html嫁
0575デフォルトの名無しさん
2008/03/08(土) 13:55:45その偽サイト作るのにどれだけ時間掛けたの?
0576デフォルトの名無しさん
2008/03/08(土) 13:59:15混乱するだけだ
0577デフォルトの名無しさん
2008/03/08(土) 14:04:230578デフォルトの名無しさん
2008/03/08(土) 14:10:39更新日時 2008年3月8日 10:19:16
ずいぶん新しいね
0579デフォルトの名無しさん
2008/03/08(土) 14:12:39は
暇人
0580デフォルトの名無しさん
2008/03/08(土) 14:14:220581デフォルトの名無しさん
2008/03/08(土) 14:15:33「細かい説明は後述するので、この場ではとりあえず文字を表示する方法を試してみましょう。
文字を表示するにはprintgokko命令を使います」
アホか
0582デフォルトの名無しさん
2008/03/08(土) 14:16:43文章は何年も前から変わってない。
C++だったらそれでもいいけど、Dじゃ駄目。
0583デフォルトの名無しさん
2008/03/08(土) 14:16:490584デフォルトの名無しさん
2008/03/08(土) 14:19:400585デフォルトの名無しさん
2008/03/08(土) 14:20:471 名前:以下、名無しにかわりましてVIPがお送りします。[] 投稿日:2008/03/08(土) 13:57:24.68 ID:oVsMTN3J0
次世代言語”D言語”を使ってプログラミングをしてみよう!
C++で挫折した君も、プログラミング初心者の君も今日からプログラマーだ!
D言語入門 http://www.geocities.jp/tor_park/Dlang/d2.html
0586デフォルトの名無しさん
2008/03/08(土) 14:26:25そのサイト>>567がついさっき作ったんでしょ?、と汲み取ってもらいたかったんだが
文章はWisdomSoftのパクリ
0587デフォルトの名無しさん
2008/03/08(土) 14:27:06printgokkoとかアホかと・・・
ptって感じで短くして欲しいぐらいだよ
0588デフォルトの名無しさん
2008/03/08(土) 14:27:11次世代言語”D言語”を使ってプログラミングをしてみよう!
C++で挫折した君も、プログラミング初心者の君も今日からプログラマーだ!
D言語入門 http://www.geocities.jp/tor_park/Dlang/d2.html
0589 ◆bNGw8Q1jYg
2008/03/08(土) 14:27:590590デフォルトの名無しさん
2008/03/08(土) 14:30:190591デフォルトの名無しさん
2008/03/08(土) 14:35:240592デフォルトの名無しさん
2008/03/08(土) 14:38:300593デフォルトの名無しさん
2008/03/08(土) 14:42:090594デフォルトの名無しさん
2008/03/08(土) 14:43:280595デフォルトの名無しさん
2008/03/08(土) 14:47:270596デフォルトの名無しさん
2008/03/08(土) 14:58:05釣られてる奴がいる
ワロタ
0597デフォルトの名無しさん
2008/03/08(土) 15:41:29なるほどこりゃ痛い
0598デフォルトの名無しさん
2008/03/08(土) 16:10:440599デフォルトの名無しさん
2008/03/08(土) 16:11:12順調に発展できたならば、5年後くらいには
Java vs C# vs D
とかでもできてるに違いない(と信じたい)
0600デフォルトの名無しさん
2008/03/08(土) 16:16:06逆に5年後、JAVAとC#があるのかどうか、という感じだな。
JAVAはマジで死滅するんじゃないかという危惧と
C#はMSが次の言語出してきたらどうなるかと。
0601デフォルトの名無しさん
2008/03/08(土) 16:20:570602デフォルトの名無しさん
2008/03/08(土) 16:29:070603デフォルトの名無しさん
2008/03/08(土) 16:31:420604デフォルトの名無しさん
2008/03/08(土) 16:46:105年後に日本のIT業界がJAVAを捨てられるほど熟練者が増えてるとは思えんがな……
0605デフォルトの名無しさん
2008/03/08(土) 16:48:24>細かい説明は後述するので、この場ではとりあえず文字を表示する方法を試してみましょう。
>文字を表示するにはprintgokko命令を使います
>printgokko ("表示したい文字列");
0606デフォルトの名無しさん
2008/03/08(土) 16:49:530607デフォルトの名無しさん
2008/03/08(土) 17:49:57C#無くなって困る人は少ない気が
0608デフォルトの名無しさん
2008/03/08(土) 18:07:060609デフォルトの名無しさん
2008/03/08(土) 18:34:130610 ◆bNGw8Q1jYg
2008/03/08(土) 18:40:35今度はもっとちゃんとした教材作るね
0611デフォルトの名無しさん
2008/03/08(土) 18:50:390612デフォルトの名無しさん
2008/03/08(土) 19:08:01衰退することはあっても、完全に無くなることは滅多に無いと思うけどなあ。
0613デフォルトの名無しさん
2008/03/08(土) 19:13:390614デフォルトの名無しさん
2008/03/08(土) 20:18:580615デフォルトの名無しさん
2008/03/08(土) 20:21:530616デフォルトの名無しさん
2008/03/08(土) 20:22:03そこまでしてかまって欲しいのか・・・
0617デフォルトの名無しさん
2008/03/08(土) 20:24:390618デフォルトの名無しさん
2008/03/08(土) 20:25:100619デフォルトの名無しさん
2008/03/08(土) 20:25:340620デフォルトの名無しさん
2008/03/08(土) 20:28:59知ったこっちゃねーけど
0621デフォルトの名無しさん
2008/03/08(土) 20:30:290622デフォルトの名無しさん
2008/03/08(土) 20:30:350623デフォルトの名無しさん
2008/03/08(土) 20:50:420624デフォルトの名無しさん
2008/03/08(土) 20:59:22あんまり嬉しくないけど
0625デフォルトの名無しさん
2008/03/08(土) 21:03:56一般的なプログラマー(昔)「Dはこける」
〃(今)「そろそろDもやっておくか」
C++「C++かわいいよC++」
0x「C++が使いやすくなってからD涙目wwwwwwwwwwwwwwwwwwwwwwww」
やねうらお「超素敵!!私の処女あげちゃう!」
0626デフォルトの名無しさん
2008/03/08(土) 21:05:34やねうらおwwwwwwwww
しかし正直俺あの人居なかったらDに興味持たなかったな。
0627デフォルトの名無しさん
2008/03/08(土) 21:30:100628デフォルトの名無しさん
2008/03/08(土) 21:33:300629デフォルトの名無しさん
2008/03/08(土) 21:34:200630デフォルトの名無しさん
2008/03/08(土) 21:43:27俺もやねうらおでちょっと敬遠してしまった。
0631デフォルトの名無しさん
2008/03/08(土) 22:07:39おれも
0632デフォルトの名無しさん
2008/03/08(土) 22:11:47ウォルたん(昔)「Boost対応めんど。新しい言語つくろ。」
〃(今)「バグ生まれすぎワロタ。」
一般的なプログラマー(昔)「D言語? 何それ?」
〃(今)「D言語? (Sun | Microsoft)が出してたやつ?」
C++「高給なのもC++のおかげ。むしろ皆は感謝すべき。」
0x「やっぱ後方互換と知名度が重要だよな。」
Java「結局ライブラリが全てなんだよね」
やねうらお「C#マンセーwwww」
0633デフォルトの名無しさん
2008/03/08(土) 23:29:19ま、おわったぽいからいいけどさ。
>632
C#かwwwww ってかDFLとかだとほぼC#だしなw
0634デフォルトの名無しさん
2008/03/08(土) 23:44:53Windows Formsはデザインがよく出来てると思う。
実装が悪くてもっさりしてるのがどうしようもないけど
0635デフォルトの名無しさん
2008/03/09(日) 08:37:54とりあえず最近の話で
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からサルベージとか
0636デフォルトの名無しさん
2008/03/09(日) 12:56:46http://www.kmonos.net/alang/wnd/topics/winapi.ja.html
0637636
2008/03/09(日) 12:58:170638デフォルトの名無しさん
2008/03/09(日) 13:01:12そのページどこか変わった?
前見たときから何も変わってないと思うのだけど。
0639デフォルトの名無しさん
2008/03/09(日) 13:13:16イカれ?
0640デフォルトの名無しさん
2008/03/09(日) 13:59:55ってあるが。
0641デフォルトの名無しさん
2008/03/09(日) 14:19:37処理するたびに仮想メモリを開放せずに食いつぶすんだがどうにかする手法はないかな。
このままだと他のアプリケーションのメモリをスワップアウトさせてしまう。
タスクマネージャで見てみるとメモリ使用量はウインドウを最小化させると減るみたいなんだけど、
仮想メモリは握ったまま。200MBとかしゃれにならん。
GCの挙動も良くわからないし…。
0642デフォルトの名無しさん
2008/03/09(日) 14:31:57下記の解説の「明示的なクラスインスタンス割り当て」の項参照
ttp://www.kmonos.net/alang/d/2.0/memory.html
0643デフォルトの名無しさん
2008/03/09(日) 15:11:12>タスクマネージャで見てみるとメモリ使用量はウインドウを最小化させると減るみたいなんだけど、
それページアウトしてるだけだよ。実際には減ってない。
0644デフォルトの名無しさん
2008/03/09(日) 15:32:15ヤマカンでどこら辺があやしと思う?
GC?ライブラリ?自前?
0645デフォルトの名無しさん
2008/03/09(日) 16:21:280646デフォルトの名無しさん
2008/03/09(日) 16:37:32TangoのGC使うとちょっとはマシになるかも(minimize実装されてる)。
phobosのGCの実装はプログラム終了時以外に確保したメモリを返却しない。
0647デフォルトの名無しさん
2008/03/09(日) 16:50:22>>646
ということはGCあってもfreeしろってことか。
freeつうかdelete
0648647
2008/03/09(日) 17:21:28静的(ガベージコレクタによって関数がオーバーロードされ変数のスコープからはずれたりするのを防ぐコア関数)
なデストラクタ(使い終わったオブジェクトをユーザーからのイベントパンドラ無しにイベント駆動型のラムダ式)
として扱われると言うこと。
uint* uiにするとβ変換(変数をグローバルなスコープから外し新しいシステム型変数として使うための変換)
が正常に行えなくなるのでfile*uint[ui]にしておいたほうがいいということ
0649デフォルトの名無しさん
2008/03/09(日) 17:21:46違う
0650デフォルトの名無しさん
2008/03/09(日) 17:35:34解放する手段は無いってこと。
0651デフォルトの名無しさん
2008/03/09(日) 17:49:230652デフォルトの名無しさん
2008/03/09(日) 18:01:55プロセスとして確保した領域を解放する話と、
各オブジェクトに使っていた領域を解放する話が
マゼコゼになってるぞ。
0653デフォルトの名無しさん
2008/03/09(日) 18:06:56ごめん、あまり読まずにレスしてた。
穴があったら埋まりたい・・・
0654デフォルトの名無しさん
2008/03/09(日) 18:16:510655デフォルトの名無しさん
2008/03/09(日) 21:00:460656デフォルトの名無しさん
2008/03/09(日) 21:21:27>>643
そうだったんですか。
最小化されるとページアウトさせるのはOSですよね。
>>644
疑おうと思えば全部と言えます。
ただ、自動で回収されるとなってる以上、malloc,freeを使わなきゃいけないのもおかしい気が。。。
>>645-646
以前同じようなことを聞いたときも同じような回答でした。
確かstd.gcの話だったと思います。
minimizeが動かないと言う結論でした。
>>655
mallocでメモリを確保することは出来ても、freeで開放されません。
0657デフォルトの名無しさん
2008/03/09(日) 21:22:56解放されてると思うんだけど
0658デフォルトの名無しさん
2008/03/09(日) 21:23:130659デフォルトの名無しさん
2008/03/09(日) 21:25:260660デフォルトの名無しさん
2008/03/09(日) 21:29:52void 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の方は開放されませんでした。
0661デフォルトの名無しさん
2008/03/09(日) 21:32:24dmd -release main
これで良いんでしょうか?
freeでは開放されませんでした。GCの方はまだ試してません。
DMDのパージョンは1.028です。
0662デフォルトの名無しさん
2008/03/09(日) 21:33:47Dのプロセスが一括してmallocしてきたメモリプールから小分けしているだけでは。
だからプロセスとしては使用メモリは増加する一方。minimizeしないから。
0663デフォルトの名無しさん
2008/03/09(日) 21:45:37newとdeleteでメモリ開放されてた気がするなぁ。
少なくとも増え続けることはなかった。
@Linuxだけど。
0664デフォルトの名無しさん
2008/03/09(日) 21:52:220665デフォルトの名無しさん
2008/03/09(日) 23:15:030666デフォルトの名無しさん
2008/03/09(日) 23:19:500667デフォルトの名無しさん
2008/03/09(日) 23:29:250668デフォルトの名無しさん
2008/03/09(日) 23:31:290669デフォルトの名無しさん
2008/03/09(日) 23:41:441. デストラクタが呼ばれる。
2. 内部的に free の処理が走る。
3. free したメモリが実際に OS に返される。
0670デフォルトの名無しさん
2008/03/09(日) 23:43:070671670
2008/03/09(日) 23:43:290672デフォルトの名無しさん
2008/03/09(日) 23:43:550673デフォルトの名無しさん
2008/03/09(日) 23:48:17おそらくfreeした領域は可能であれば適当な時期にOSに返還されるはず。
std.gc.mallocはGCの管理領域から割り当てられるから、
phobosの実装だと、freeしても永久にプールされつづける、と思う。
>>663
deleteした領域は、空き領域としてプールされて再利用されるから、
new/deleteの繰り返しで増え続けることはないよ。
0674637
2008/03/10(月) 00:02:51> おそらくfreeした領域は可能であれば適当な時期にOSに返還されるはず。
って書いたけど、Windows版DMDの場合は、DMCのsnn.libを使って、
linux版やGDCはglibcを使うと思うから、そこで実装の差が出てくる可能性はある。
0675デフォルトの名無しさん
2008/03/10(月) 00:33:17http://o.z-z.jp/thbbs.cgi?id=sasanunu&p3=&th=541
0676デフォルトの名無しさん
2008/03/10(月) 00:33:49import 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);
}
0677デフォルトの名無しさん
2008/03/10(月) 01:27:120678デフォルトの名無しさん
2008/03/10(月) 02:12:200679デフォルトの名無しさん
2008/03/10(月) 02:19:480680デフォルトの名無しさん
2008/03/10(月) 02:20:560681デフォルトの名無しさん
2008/03/10(月) 02:22:460682デフォルトの名無しさん
2008/03/10(月) 02:24:280683デフォルトの名無しさん
2008/03/10(月) 03:33:370684デフォルトの名無しさん
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;
}
0685デフォルトの名無しさん
2008/03/10(月) 09:55:180686デフォルトの名無しさん
2008/03/10(月) 10:03:030687デフォルトの名無しさん
2008/03/10(月) 17:49:060688デフォルトの名無しさん
2008/03/10(月) 18:26:39tango.text.convert.Sprint かな??
0689デフォルトの名無しさん
2008/03/10(月) 18:51:28どうもです。C#の文章整形というものははじめて見ましたが、結構使えそうですね。
phobosに比べてclassいっぱい日本語資料ほとんどなしで、
英語の資料もあるには有るけどなれない言語なので情報にたどり着くのが大変です。
0690デフォルトの名無しさん
2008/03/10(月) 22:36:00細かい挙動は英語読まなきゃいけないけど。
ただ、opCallのオーバーロードがキモイ。それだけ。
0691デフォルトの名無しさん
2008/03/10(月) 22:42:33ttp://dsource.org/projects/tango/wiki/0_99_5_release
0692デフォルトの名無しさん
2008/03/10(月) 22:43:550693デフォルトの名無しさん
2008/03/11(火) 02:29:180694デフォルトの名無しさん
2008/03/12(水) 03:20:020695デフォルトの名無しさん
2008/03/12(水) 04:35:54今どうなってるのかは俺は知らんが
0696デフォルトの名無しさん
2008/03/12(水) 10:28:44Subversionリポジトリの方では、1.024と2.008に追従する更新が
9日に来たばかりですね。
http://lists.puremagic.com/pipermail/d.gnu/2008-March/001474.html
0697デフォルトの名無しさん
2008/03/12(水) 14:38:12Tangoだとphobosと違ってmainへの一個目の引数がフルパスにならないんだな。
呼び出しに使ったコマンドそのものになる。
たとえばコマンドプロンプトで
tango使ってdmdでコンパイルしたmain.exeのあるディレクトリをカレントにして
mainと入力して実行すると、第一引数が"main"になる。
windows上での話だけど。
0698デフォルトの名無しさん
2008/03/12(水) 14:58:47phobosはCのargvをそのまま使ってるね。
ということは、phobosはマルチバイト文字でおかしくなる可能性があるのかも。
0699デフォルトの名無しさん
2008/03/12(水) 18:13:560700デフォルトの名無しさん
2008/03/12(水) 23:07:06import 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使っても制御が出来ないのはなぁ。
0701デフォルトの名無しさん
2008/03/12(水) 23:28:12GC周りはどうにかしないといけないよなあ。
0702デフォルトの名無しさん
2008/03/13(木) 00:11:060703デフォルトの名無しさん
2008/03/13(木) 00:40:03はずしてるかもだけど、この辺の話?
ttp://d.hatena.ne.jp/NyaRuRu/20080306/p1
ちょっと前に読んだなぁって、思い出した。
0704デフォルトの名無しさん
2008/03/13(木) 00:43:28#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();
}
0705デフォルトの名無しさん
2008/03/13(木) 00:52:06てか原因はそこじゃないかな?
0706デフォルトの名無しさん
2008/03/13(木) 00:59:57そのプロセスが使ってるメモリ領域を正確に表示した物じゃないらしいので、
freeしたら即減るかっつーとそう言うもんでもないようです。
あとDのメモリ管理ってメモリプールみたいな感じで一度メモリ領域拡張されると縮小されにくい物なんじゃ?
0707デフォルトの名無しさん
2008/03/13(木) 01:05:52http://www2s.biglobe.ne.jp/~hig/q_a/Programing_QA02.html#Q4
0708デフォルトの名無しさん
2008/03/13(木) 01:11:250709デフォルトの名無しさん
2008/03/13(木) 02:10:28ほぉ〜勉強になったさんくす
0710デフォルトの名無しさん
2008/03/13(木) 07:31:22VCのclやgccだとfreeですぐに減ってるので、多分2段落目のとおりだと思う。
これも実装の違いなんだろう。
結局、Cみたいにある程度管理しながらうまいことメモリを使わないといけないのは変わらないわけかな。
0711デフォルトの名無しさん
2008/03/13(木) 09:18:41メモリを圧迫し続ける心配がないっていう程度ですかねえ。
0712デフォルトの名無しさん
2008/03/13(木) 09:50:29VC++だかgccだかでDLL作ってそっちのmalloc/free使えばいいのか。
0713デフォルトの名無しさん
2008/03/13(木) 10:00:050714デフォルトの名無しさん
2008/03/13(木) 13:26:29すりゃいいってほど簡単じゃないけど。
0715デフォルトの名無しさん
2008/03/13(木) 21:16:30モジュール化がだいぶしょぼくなるな。
出来ればいいのになー。.NET環境だとそういうのもあるのになー。
OSはメモリもオブジェクトのメタデータも管理しちゃえばいいのに。
0716デフォルトの名無しさん
2008/03/13(木) 21:35:020717デフォルトの名無しさん
2008/03/13(木) 22:37:26モジュールをDLLとして作れば、Dのオブジェクトを渡したり
GCをプロセス間で共有したりできるみたいよ。
0718デフォルトの名無しさん
2008/03/14(金) 10:13:25「既存のD言語のライセンスはもちろん買収するつもりだ」――CEO会長坂田雄太
http://an.to/?microsoft01news
0719デフォルトの名無しさん
2008/03/14(金) 10:18:29Fxで開いたらrundll32.exe url.dll,TelnetProtocolHandlerとか出てきたが何をするつもりなんだ。
0720デフォルトの名無しさん
2008/03/14(金) 10:22:03正確に「潰す」とは言ってないんだろ?
だったら問題ないと思うが
0721デフォルトの名無しさん
2008/03/14(金) 10:33:200722デフォルトの名無しさん
2008/03/14(金) 10:35:460723デフォルトの名無しさん
2008/03/14(金) 11:24:11をるたんの友人がD言語って言い張るもんでいつの間にかDになったんじゃなかったっけ。
MSに名前押さえられても元のMars言語って名乗れば問題ないよね。
0724デフォルトの名無しさん
2008/03/14(金) 11:32:39マスコットキャラかわいそう・・・・・・
0725デフォルトの名無しさん
2008/03/14(金) 11:45:40あんなゴキブリみたいな顔してるムカつくマスコットなんだから
どこか別の場所に生きる術を見出せるさ。
0726デフォルトの名無しさん
2008/03/14(金) 11:54:18あれ、finalは・・・
0727デフォルトの名無しさん
2008/03/14(金) 13:17:300728デフォルトの名無しさん
2008/03/14(金) 13:58:12MSがお金払ってくれたら棚ぼたなのにw
0729デフォルトの名無しさん
2008/03/14(金) 15:05:36最初からそれ狙いでしょ。
つーか、世の中にD言語って、このD言語以前からも色々あるわけだが。
0730デフォルトの名無しさん
2008/03/14(金) 15:27:27思惑通りMSが金払ってくれるのは、むしろいいことじゃあないか
めでたしめでたし
0731デフォルトの名無しさん
2008/03/14(金) 15:57:120732デフォルトの名無しさん
2008/03/14(金) 16:05:100733デフォルトの名無しさん
2008/03/14(金) 16:12:380734デフォルトの名無しさん
2008/03/14(金) 16:36:420735デフォルトの名無しさん
2008/03/14(金) 18:08:000736デフォルトの名無しさん
2008/03/14(金) 18:36:280737デフォルトの名無しさん
2008/03/14(金) 18:53:46Linux使ってる俺にとってはどうでもいい話だが
0738デフォルトの名無しさん
2008/03/14(金) 19:12:14価値ないよ。
0739デフォルトの名無しさん
2008/03/14(金) 20:13:530740デフォルトの名無しさん
2008/03/14(金) 20:23:43Dから.NETのリフレクション機能をさわるのはできたけど、
CLRのGCとDのGCを上手いこと動かしてリークを防ぐのがめんどい。
0741デフォルトの名無しさん
2008/03/14(金) 20:28:300742デフォルトの名無しさん
2008/03/14(金) 20:38:430743デフォルトの名無しさん
2008/03/14(金) 22:08:430744デフォルトの名無しさん
2008/03/14(金) 22:23:18const string foo = "pal = 5;";
class Hoge{
int val;
void DoSomething(){
const string myfoo = static_replace(foo,"p","v");// <-こんなかんじ
mixin(myfoo); // val = 5; に展開して欲しい
}
}
0745デフォルトの名無しさん
2008/03/14(金) 22:24:550746デフォルトの名無しさん
2008/03/14(金) 22:33:36200 :login:Penguin :sage :2008/03/14(金) 18:53:16 ID:mDbK1QBH
マイクロソフトに期待してる人が結構いるんだね
Linux使ってる俺にとってはどうでもいい話だが
201 :login:Penguin :sage :2008/03/14(金) 18:54:22 ID:mDbK1QBH
↑誤爆
0747デフォルトの名無しさん
2008/03/14(金) 22:34:00ないんだったら作ればいいんだ。
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");
0748デフォルトの名無しさん
2008/03/14(金) 22:37:420749デフォルトの名無しさん
2008/03/14(金) 22:45:26残念ながらstd.string.replace君の中のstd.string.findはCTFEで対応していない機能(memchrとか)を使ってるんだよね。
個人的にはversion(compileTime)相当のものを処理系が用意するなりなんなりで、
std.stringとかはCTFE時にも動作するように作り直してほしいなあとか思ってたり。
0750デフォルトの名無しさん
2008/03/14(金) 22:49:400751744
2008/03/14(金) 22:50:11>>748
>>749
ありがとうございます
CTFE・・ 初めて聞く単語だ(実はD言語習いたて)
ググってきます
家の環境にはD言語入れてないのでこれからインスコして試してみます
0752デフォルトの名無しさん
2008/03/14(金) 23:01:480753デフォルトの名無しさん
2008/03/14(金) 23:05:39ソース
0754デフォルトの名無しさん
2008/03/14(金) 23:19:520755デフォルトの名無しさん
2008/03/14(金) 23:32:52サンクス!
0756デフォルトの名無しさん
2008/03/15(土) 00:23:300758デフォルトの名無しさん
2008/03/15(土) 04:08:08シンボルの検索は兎も角として、ポインタ使えないのにwithが使えてどうするという気が。
0759デフォルトの名無しさん
2008/03/15(土) 04:16:15with(std.stdio)みたいに普段は使わないモジュールを導入するとか
便利だと思うんだけどなあ。
withとポインタが使えないことに何の関係があるのかはよくわからない。
0760デフォルトの名無しさん
2008/03/15(土) 17:24:57sudo 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 のオブジェクトファイル渡してもいいのかな??
0761760
2008/03/15(土) 17:26:030762デフォルトの名無しさん
2008/03/15(土) 17:36:01なのになんでcrt3.oを探してるの?
0763760
2008/03/15(土) 17:53:03ld: file not found: crt3.o
だった
0764デフォルトの名無しさん
2008/03/15(土) 19:42:15TypeInfo type() const
{
return cast(TypeInfo)p_type;
}
こういうメソッドがあるけど、constがメソッド名の後ろにあるのってどんな意味があるんでしょう?
0765デフォルトの名無しさん
2008/03/15(土) 19:48:01constをつけたメンバ関数はconstメンバ関数とみなされて、
thisポインタを経由してオブジェクトの状態を変更しないことが保障される。
0766デフォルトの名無しさん
2008/03/15(土) 20:19:41なるほど、C++だとこういう風に表記するんですね。
わざわざ後ろにあるので何か特別な意味があるのかと思いました。
有難う御座いました。
0767デフォルトの名無しさん
2008/03/16(日) 21:43:32やりたいことは正規表現で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;
のようにするにはどうすれば良いのでしょうか。
0768デフォルトの名無しさん
2008/03/16(日) 23:19:16Tango使ってないけどソース見てみた.
>戻り値が無い
ということはnullということなんだろうけど,
ただ単にその正規表現だと見つけれてないだけな気がする.
ソース見る限りはsearchやってるだけだし.
Phobosのregexp.dの中にURL用の正規表現文字列があるからそれ使ってみるとか.
Phobosのregexp.dだと後方参照しないグループ化は出来なかったと思うんだけど(余り使ってないので自信なし),
TangoのRegexp.dだと出来るのか.
0769デフォルトの名無しさん
2008/03/17(月) 01:06:49俺もTangoは使ってないんだが、マニュアルを見る限り、
(?:ht|f)の所は(?ht|f)が正しいのではないかと思う。
あと、replaceAllで$1とかは使えないかもしれない。
ソースを見てみると単純に連結していて、$1とかでどうこうという処理はしていないようだから。
0770デフォルトの名無しさん
2008/03/17(月) 01:45:32searchやってるだけじゃないよ。
>>767
なんとか動いた。 $1とかは置換してくれないみたいだね
固定した文字列との置換なら、delegateのいらない方のreplaceAllでもOK
(?:)は使えないので()を使用する。 phobosのregexpもそうだったはず。
//tango-0.99.5 で新しくなったRegex用
import tango.text.Regex, tango.io.Stdout;
void main() {
char[] s = `hoge http://pc11.2ch.net/ hoge http://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;
}
0771デフォルトの名無しさん
2008/03/17(月) 01:57:58import tango.text.Regex, tango.io.Stdout;
void main() {
char[] s = `hoge http://pc11.2ch.net/ hoge http://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;
}
0772デフォルトの名無しさん
2008/03/17(月) 07:27:35どうもです。
そのソースをまるまるコピペして動かしてみたんですが、
object.Exception: Access Violation
となってしまいました。
うーん。
0773デフォルトの名無しさん
2008/03/17(月) 14:11:47とりあえずTangoを入れて動かしてみたけど
>object.Exception: Access Violation
となるのはStdoutのせいっぽい(俺の環境では).
tango.io.ConsoleのCoutを使ったら,771のソースでちゃんと置換されたのが表示された.
Stdoutでこのエラーになる原因は面倒なので追ってない.
0774デフォルトの名無しさん
2008/03/17(月) 16:32:06出力されたコードを少し書き換えたらCTFEでも動いた。
CTFEで正規表現使いたい時にいいかも。
単純な処理しかしてないから、
Cやアセンブラに書き換えるのも容易かも。しかし長いw
0775デフォルトの名無しさん
2008/03/17(月) 18:21:13Stdoutでバグるのは,Regex.dでdebug時にStdout.dをimportしてたから
コンパイル時にdebugオプションをつけたら動くようになった.
といってもdebugなしで普通にimportしてもエラーが出るので,
この辺の原因はよく分からない.
static thisとかの初期化とかで何か問題が発生してるのかも.
力になれなくて申し訳ない.
0776デフォルトの名無しさん
2008/03/17(月) 18:54:330777デフォルトの名無しさん
2008/03/17(月) 18:54:470778デフォルトの名無しさん
2008/03/17(月) 19:25:04うーむ、
Stdoutはデバッグで使いたいので、こうなると正規表現でURLを抜き出すのは面倒ですね。
別の手法も思いついたのでそっちで一度試して見ます。
どうもでした。
0779デフォルトの名無しさん
2008/03/17(月) 22:50:17もういいかもしれないけど,とりあえず追加で書いとく.
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)がまともに動くのは何故…
0780デフォルトの名無しさん
2008/03/18(火) 12:16:110781デフォルトの名無しさん
2008/03/18(火) 12:16:340782デフォルトの名無しさん
2008/03/18(火) 15:57:500783770
2008/03/18(火) 17:35:48こちらでも、dmdでビルドしたものはAccessViolation出ました。
budで、tango-user-dmd.libを使わずにビルドすると正常動作するけど、
使う設定でビルドだと、AccessViolationでした。
tango-user-dmd.libを再makeすれば直るのかな??
0784デフォルトの名無しさん
2008/03/18(火) 20:37:12budでOKということで,試しにDSSSでビルドしたら普通に動いた.
これくらいは昨日試しておくべきだったorz
770の言うとおり,生成済みライブラリになんらかのバグ(コンパイル状況による?)があるっぽいね.
Tangoのソースからのビルドが英語だらけで挫折.
0785デフォルトの名無しさん
2008/03/19(水) 06:46:04ソースを落として、dmd.exeとdmc.exeにパスが通っている状態でlib内のbuild-tango.batとかを実行
…だと思うのだけど、再コンパイルできなかったりできてもやっぱりバグったリ…何かがおかしい。
0787デフォルトの名無しさん
2008/03/20(木) 03:37:510788デフォルトの名無しさん
2008/03/20(木) 11:46:080789デフォルトの名無しさん
2008/03/20(木) 15:28:54似たようなクラスって何かありますか?
0790デフォルトの名無しさん
2008/03/20(木) 19:29:350791デフォルトの名無しさん
2008/03/20(木) 19:55:15軽いし、やっぱり気軽にプログラミングするにはいいエディタだな。
0792デフォルトの名無しさん
2008/03/20(木) 22:22:35目的はWin/Linux用のD言語で書かれたコンソールアプリの移植です。
最初に既存のソースコードをXcodeからコンパイルして勉強できる環境を構築しようと思い立ち
いろいろ調べていますが、参考になるサイト等見つかりません。
どなたかMacでその道に足を踏み入れた方はいらっしゃいますか?
0793デフォルトの名無しさん
2008/03/20(木) 23:46:49C++のstringstreamみたいなのが欲しいんだけど
ありませんでしたっけ?
>>792
Macのは見かけたことないなー
0794デフォルトの名無しさん
2008/03/21(金) 00:02:490795デフォルトの名無しさん
2008/03/21(金) 00:24:03というかOutBufferの存在価値が昔から空気過ぎるんだけど必要なのかこれ。
0796デフォルトの名無しさん
2008/03/21(金) 00:27:01import std.stdio;
import std.stream;
void main(){
Stream ms = new MemoryStream;
ms.writeLine("hello");
string s = ms.readLine().idup;
writefln(s);
}
>>795 OutBufferはいらないよな・・・
0797デフォルトの名無しさん
2008/03/21(金) 00:29:54import std.stdio;
import std.stream;
void main(){
Stream ms = new MemoryStream;
ms.writeLine("hello");
ms.position = 0;
string s = ms.readLine().idup;
writefln(s);
}
0798デフォルトの名無しさん
2008/03/21(金) 00:30:16import std.stdio, std.stream;
void main(){
Stream ms = new MemoryStream;
ms.writeLine("hello");
ms.writeLine("world!");
string s = ms.toString();
writefln(s);
}
0799デフォルトの名無しさん
2008/03/21(金) 00:31:30思ったんだが 0 を入れればいいのかわからなかったので
発見した toString() を試してみたらいけました
ありがとう
0800デフォルトの名無しさん
2008/03/21(金) 00:34:58toStringでもOK。
ただ、toStringはread可能,seek可能かによって微妙に動作が変わるから注意な。
0801デフォルトの名無しさん
2008/03/21(金) 00:38:38std.openrjと同じくらいは役に立つんじゃね?
0802デフォルトの名無しさん
2008/03/21(金) 00:47:09これは・・・・・
もしかしてまだ作りかけなのかな・・・・
0803デフォルトの名無しさん
2008/03/21(金) 00:56:330804デフォルトの名無しさん
2008/03/21(金) 01:00:490805デフォルトの名無しさん
2008/03/21(金) 16:03:44どこまで補完できるんだろ。
0806デフォルトの名無しさん
2008/03/21(金) 18:20:14どうやればいいんでしょうか。
External toolsではbuild -gui -clean ${resource_loc}って
いれても上手く動かないんですが。
0807デフォルトの名無しさん
2008/03/21(金) 20:03:43でもクラスメンバの補完は出来た。
0808デフォルトの名無しさん
2008/03/22(土) 13:56:130809デフォルトの名無しさん
2008/03/22(土) 15:21:170810デフォルトの名無しさん
2008/03/22(土) 15:30:15ノ L____
⌒ \ / \
/ (●) (●)\
/ (__人__) \ だからPascalライクな
| |::::::| | 列挙型と集合型を
\ l;;;;;;l /l!| ! 寄越せって言ってンだよ!
/ `ー' \ |i
/ ヽ !l ヽi
( 丶- 、 しE |そ ドンッ!!
`ー、_ノ 煤@l、E ノ <
レY^V^ヽl
0811デフォルトの名無しさん
2008/03/22(土) 15:32:410812デフォルトの名無しさん
2008/03/22(土) 15:46:220813デフォルトの名無しさん
2008/03/22(土) 15:58:390814デフォルトの名無しさん
2008/03/22(土) 17:07:13その挙動をデフォルトにするのは無理だし値型の変数への代入に副作用とかまっぴらごめんだが、
テンプレート+traistとかmixinとか使えば全てのenumに対して有効な汎用性の高いもん作れる
0815デフォルトの名無しさん
2008/03/22(土) 17:07:280816デフォルトの名無しさん
2008/03/22(土) 17:18:05名前付き限定
0817デフォルトの名無しさん
2008/03/22(土) 20:46:38何か代わりになるような方法はない?
0818デフォルトの名無しさん
2008/03/22(土) 23:27:050819デフォルトの名無しさん
2008/03/22(土) 23:46:48ありがとう。
使わせてもらいます。
0820デフォルトの名無しさん
2008/03/22(土) 23:51:26>817を見て作ろうとしてみたんだけど、
template verify(T...){
debug{
void verify_(typeof(T) t){ assert(t); }
}else{
alias T[0] verify;
}
}
void main(){
auto o = new class{ bool f(){return false;} };
verify!(o.f, "debug assert");
printf("done\n");
}
って書いたら
Error: need 'this' to access member f
って言われてだめだった。メンバ関数のエイリアスをとっただけなのが
だめなのは分かるけど、これはどうにもならないんだろうか。
0821デフォルトの名無しさん
2008/03/23(日) 10:16:40ライブラリもphobos使うのかTangoなのか迷うんだけどどの組み合わせがオススメですか?
0822デフォルトの名無しさん
2008/03/23(日) 10:41:110823デフォルトの名無しさん
2008/03/23(日) 10:46:00作れなくなったのは以下のパターン
enum Hoge {x, y};
class Foo {
alias Hoge Bar;
alias Bar.x X;
}
定数の評価順が変わったのかな
0824デフォルトの名無しさん
2008/03/23(日) 11:12:11組み合わせは目的による
何か作りたいならD1とphobosが一番ライブラリの選択肢が広い
Tangoに対応してるライブラリも若干存在する(DFLは両方対応)
D2だとライブラリはほぼ全滅だけどフルクロージャとかis式の拡張とか使えるね
最新の機能で遊びたいならD2で決まり
フルスクラッチで書いてなお仕様変更に着いていく気があるならD2でものを作ってもいい
0825デフォルトの名無しさん
2008/03/23(日) 15:19:15tangoは1にしか入れられない。
1を使うのを決めた上で、命名規則&解説英語が気にならんなら入れてみてもいい。
まあ、オススメを聞かれたらD2なわけだが。
0826デフォルトの名無しさん
2008/03/23(日) 16:38:57ところで2.013マダー?
0827デフォルトの名無しさん
2008/03/23(日) 17:02:18D2用
ttp://dsource.org/projects/tango/browser/branches/experimental/D2.0
0828デフォルトの名無しさん
2008/03/24(月) 08:42:230829デフォルトの名無しさん
2008/03/24(月) 22:12:10古いなあ
0830デフォルトの名無しさん
2008/03/24(月) 22:41:12例え話だけど
OpenPNEで構築されたサイトにログインして、自分や友達が書いたレビューやらなにやらを取得してきたい
みたいなイメージなんだけど
GUIの構築やらEXEでの配布やらがしたいのでRubyやらPerlでやるのはイヤなんだ
助けてくれおまいら
0831デフォルトの名無しさん
2008/03/24(月) 22:57:380832デフォルトの名無しさん
2008/03/24(月) 23:15:01よろしく
0833デフォルトの名無しさん
2008/03/24(月) 23:36:44スレ違いだけど、Rubyならexerbとか使えるんじゃないの?
tangoにはmango由来のHTTPライブラリあるみたいだけど、
そういう便利なのはきいたことないねえ。
0834デフォルトの名無しさん
2008/03/24(月) 23:47:16あなたが神か
>>833
そもそもexe化して使う言語じゃないしなぁ…
一応Rubyで動くもんは作ったんだけど、やっぱりCかDで書き直したいなぁと思ったのよ
自分でなんとかこしらえるしかないかなぁ
0835デフォルトの名無しさん
2008/03/25(火) 00:11:14RubyではNet::HTTPとか使えばそれなりのが作れるのだし(Mechanizeに拘らなければ)、
TangoのNetを使ってほぼ同じような形で作れるんじゃない?
TangoのNetパッケージがどこまで使い易いかにもよるだろうけど、
PhobosだとSocketとか使って一からHTTP話すクラスを構築しないと駄目かも。
0836デフォルトの名無しさん
2008/03/25(火) 00:35:43って具合にC経由でRubyを使えないかね
0837デフォルトの名無しさん
2008/03/25(火) 02:02:29UTF8だとあやしいけど、UTF16なら…
//@ dmd 1.028
//@ Tango 0.99.5 Jascha
import tango.text.Regex;
void main(){
auto regex = new RegExpT!(wchar)(".");
assert(regex.test("あ"w));
}
これで表明失敗するのおかしいよな?
0838デフォルトの名無しさん
2008/03/25(火) 07:35:28http://www.dsource.org/projects/tango/browser/trunk/tango/text/Regex.d#L719
を見る限りマッチせんね
0839デフォルトの名無しさん
2008/03/25(火) 13:16:28Regex.d#L4036の decode(input, next_p); 部分も
c = decode(input, next_p); にすべきなんじゃないかな
新Regex.d、まだバグ沢山ありそうだね
0840デフォルトの名無しさん
2008/03/25(火) 16:51:22コンパイル時実行可能にするのが難しくてうまく組めないし、組んでも、これならコピペのが分かりやすい、って思うくらい複雑なコードになってしまう。
0841デフォルトの名無しさん
2008/03/25(火) 17:04:34シンボルのmixinならそこそこ使ってるが。
0842デフォルトの名無しさん
2008/03/25(火) 17:05:37てか、下手にCTFEで書くよりstd.metastrings.Format+αでどうにかする方が簡単だと思う。
0843デフォルトの名無しさん
2008/03/25(火) 17:15:19複雑でも再利用できるなら(ry
ってことで正規表現を事前にコードに落としこむとかが良い例。
0844デフォルトの名無しさん
2008/03/25(火) 18:46:42そのデリゲート自体も引数によって呼び出される関数変わるの?
0845デフォルトの名無しさん
2008/03/25(火) 18:47:28結構便利な気がする。やっぱ気分悪くてなかなか使えないが。
0846デフォルトの名無しさん
2008/03/25(火) 18:49:45引数の同じ奴が選択される。
0847デフォルトの名無しさん
2008/03/25(火) 22:08:44TangoでPhobosが公式にリプレースされることってねーのかなー?
0848デフォルトの名無しさん
2008/03/25(火) 22:15:01metastrings使いやすそうだな。でもtangoにはないみたい?
0849デフォルトの名無しさん
2008/03/26(水) 00:24:34http://codepad.org/
コードを書いて実行した時のURLを記録しておけば、
実行結果も一緒にさらす事が出来て幸せです。
0850デフォルトの名無しさん
2008/03/26(水) 00:51:35デリゲートには型があるからそうなるよね
逆にデリゲートのオーバーロードがしたいなあと思ってちょっと考えたが、
衝突の回避がまた面倒そうだとか思った覚えが。
オーバーロードセットに取り込めるかな?
ところで、デリゲートにデフォルト引数を与えることは可能ですかね。
宣言部でやればいちおうできそうな気もする。
0851デフォルトの名無しさん
2008/03/26(水) 01:24:362.0系の新し目の機能を使ったコードは動かんかったけど、
実行せずにコードを単に貼ってURLを得る、というのも出来るみたいね。
ちょっと試すつもりで、表示されてたフォームにコードをコピペして
Just Pasteってボタンを押したら、それでURLができてしまってビビった。
http://codepad.org/jWRH15Hy
Edit欄を書き換えてPasteボタンを押す度に新しいURLが次々と生成されるっぽい。
けど、
> By default, pastes will be available for at least 24 hours.
> Save this paste permanently
って表示を見る限り、放っておけば消えるみたいね。saveとやらは怖くてやってない。
なんにしろ便利そう。空白を に置換したりせずに済むし。
0852デフォルトの名無しさん
2008/03/26(水) 02:25:32Tangobosの方使ってみたら?
入ってるみたいだけど
0853デフォルトの名無しさん
2008/03/26(水) 12:20:03void hoge(int i){}
auto dg = &hoge;
↑これはどっちになるの?
0854デフォルトの名無しさん
2008/03/26(水) 13:14:50コンパイルエラー
Error: cannot infer type from overloaded function symbol & hoge
0855デフォルトの名無しさん
2008/03/26(水) 13:27:15ちょっと感動。
0856デフォルトの名無しさん
2008/03/26(水) 19:46:11void func(in int param){...}
記憶域クラス'in'は'const scope'と等価だと言語仕様の所にも書いてありますし、
typeof(param).stringof とすると、文字列"const(int)"が返ってくるんですけど、
実際、引数paramを書き換えてもコンパイルエラーになってくれません。
void func(const(int) param){...}
こう書き換えるとちゃんとコンパイルエラーになってくれるんですけど、
どうしてでしょうか? dmd v2.012
0857デフォルトの名無しさん
2008/03/26(水) 20:08:28前からinの挙動はおかしいと言われてたような希ガス
PODの型じゃなくて参照型でも同じなのかな
0859デフォルトの名無しさん
2008/03/27(木) 14:45:380860デフォルトの名無しさん
2008/03/27(木) 17:04:20呼び出すたびにメモリ使用量が増えて一向に減りません。
(1回の呼び出しで10〜20Mくらいずつ)
なにか開放処理とかいるのでしょうか・・・
0861デフォルトの名無しさん
2008/03/27(木) 17:10:57641から読むといいよ
0863860
2008/03/27(木) 18:35:46Tangoにすれば効きますか?
0864デフォルトの名無しさん
2008/03/27(木) 18:42:00>>646
お前はどこを読んだの?
0865860
2008/03/27(木) 18:47:253回目だけど
0866860
2008/03/27(木) 19:12:14void[] pln = uncompress(enc);
これをコメントアウトすると増えないが、いれるとここを通るたびに増える。
MemoryStreamなんかを使ってるとこも通るたびに増える。
0867デフォルトの名無しさん
2008/03/27(木) 19:17:370868860
2008/03/27(木) 19:55:15が、そこで無関係なfirefoxを立ち上げるとえらーが出るまで消費しやがる。
どうなってんだ・・・
0869デフォルトの名無しさん
2008/03/27(木) 20:25:02Dの場合は他のアプリケーションの領域までスワップアウトさせてくれるよ。
ずーっと起動して何らかの処理をするアプリケーションには向いてないかも。
0870デフォルトの名無しさん
2008/03/27(木) 21:46:530871デフォルトの名無しさん
2008/03/28(金) 05:54:350872デフォルトの名無しさん
2008/03/28(金) 06:53:560873デフォルトの名無しさん
2008/03/28(金) 08:41:340874デフォルトの名無しさん
2008/03/28(金) 08:47:260875デフォルトの名無しさん
2008/03/28(金) 10:00:560876デフォルトの名無しさん
2008/03/28(金) 16:40:390877デフォルトの名無しさん
2008/03/28(金) 17:31:09でもTuple!(int, string)ってやっても受け付けてもらえなかった。
0878デフォルトの名無しさん
2008/03/28(金) 17:41:40Tuple!(int,double,char[]) func()
{
return tuple(cast(int)19, cast(double)40.6, "abcde".dup);
}
void main()
{
auto val = func();
assert(val._0 == 19);
assert(val._1 == 40.6);
assert(val._2 == "abcde");
}
0879デフォルトの名無しさん
2008/03/28(金) 17:44:26名前つきタプルとか使えれば色々あそべそうなのに。
0880デフォルトの名無しさん
2008/03/28(金) 19:13:222.0用のものはありませんか?
0881デフォルトの名無しさん
2008/03/28(金) 19:51:270882デフォルトの名無しさん
2008/03/28(金) 21:48:02じゃあメジャーなのはないんですね
ありがとうございました
0883デフォルトの名無しさん
2008/03/28(金) 22:51:27商用利用しても問題ない?
0884デフォルトの名無しさん
2008/03/28(金) 23:08:06dmdのソースはデュアルライセンスだね
http://www.kmonos.net/alang/d/2.0/dcompiler.html
0885デフォルトの名無しさん
2008/03/28(金) 23:23:20いたらバージョンおしえて欲しいインですが。
0886デフォルトの名無しさん
2008/03/29(土) 00:21:090887デフォルトの名無しさん
2008/03/29(土) 01:54:08自分の勘違いでした。
consoleをvariableと同じタブに入れたのが原因みたいです。
エラーでConsoleが反応してると思ったら、
単にVariableを表示するたびにConsoleが反応してただけみたいです。
0888デフォルトの名無しさん
2008/03/29(土) 05:27:15C:/MinGW/lib/libgphobos.a(cmain.o):(.text+0x19): undefined reference to `_Dmain'
こんなエラー出るんだけどなんで?
0889888
2008/03/29(土) 07:06:000890デフォルトの名無しさん
2008/03/29(土) 18:01:06作ってるものはread.cgiみたいに2ちゃんねるのdatを読み込んでhtmlに変換するもの。
今はファイルをreadでchar[]に読み込んで加工してchar[][]に加工したデータを順次入れていってjoinで結合してる。
結合するときにデータのコピーがあるのでそこで大きいコピーが有るだけだけど、
大体もとのデータの三倍強のメモリを消費してる。もうすこしへらせないだろうか。
参考までに、
元はchar[]に ~= で結合していくようにしていたんだけど、そのときには6倍程度のメモリを消費していた。
0891デフォルトの名無しさん
2008/03/29(土) 18:07:440892デフォルトの名無しさん
2008/03/29(土) 18:30:50出力先がネットワーク(http)なので、出来ることなら作成されたデータをそのままメモリ上に配置したいのです。
あまり何度も小分けされたデータを送りたくは無いですし。
0893デフォルトの名無しさん
2008/03/29(土) 18:52:100894デフォルトの名無しさん
2008/03/29(土) 19:26:05俺はMemoryStreamに適当にreserveしてから、だらだら出力してる。
0895デフォルトの名無しさん
2008/03/29(土) 19:30:17元のデータの三倍強ものメモリを消費することは無いと思うが。
実際にどんなテキストファイルで、どんな加工をするのかが分からんとね。
だが、D言語とどう関係ある?
0896890
2008/03/29(土) 20:17:37>>895
そういわれてみれば変だな、と思い、
とりあえず、内部でコピーが起きていそうなところをchar[][]に読み込むように直してみたら2倍程度になりました。
テキストファイルは例えば
http://pc11.2ch.net/tech/dat/1202623572.dat
これを
http://pc11.2ch.net/test/read.cgi/tech/1202623572/
こんな感じのHTMLに変換するものです。
//ここで聞いたのは、言語に結構依存するんじゃないかと思ったからです。
0897デフォルトの名無しさん
2008/03/29(土) 21:06:37Web鯖でCGIとして動くのかそのプログラムが直接接続を受けるのか
0898デフォルトの名無しさん
2008/03/29(土) 21:18:40物自体はCGIの処理を組み込んだ簡易的なweb鯖といった感じです。
read.cgiの機能はひとつの関数になっています。
0899デフォルトの名無しさん
2008/03/30(日) 08:04:12元データと変換後データで3倍弱はいるんじゃねえの。
変換したところからストリーミングするしかないと思うが。
0900888
2008/03/30(日) 23:30:46ますますなんでだろう・・・
0901デフォルトの名無しさん
2008/03/31(月) 15:42:08これはやっちゃいけないことなんでしょうか。
0902デフォルトの名無しさん
2008/03/31(月) 16:06:400903デフォルトの名無しさん
2008/04/01(火) 01:15:500904デフォルトの名無しさん
2008/04/01(火) 02:21:100905デフォルトの名無しさん
2008/04/01(火) 02:26:560906デフォルトの名無しさん
2008/04/01(火) 02:40:300907デフォルトの名無しさん
2008/04/01(火) 02:57:520908デフォルトの名無しさん
2008/04/01(火) 09:36:110909901
2008/04/01(火) 12:15:01ここにある一番したの奴をこぴぺで使ってみたんですが
WndProc関数の中でクラスをnewすると落ちてしまうんです。
0910デフォルトの名無しさん
2008/04/01(火) 12:45:120911デフォルトの名無しさん
2008/04/01(火) 14:12:17保証されてる。
http://www.digitalmars.com/d/1.0/attribute.html のAlign Attributeのとこ参照。
0912デフォルトの名無しさん
2008/04/01(火) 14:21:180913デフォルトの名無しさん
2008/04/01(火) 14:44:430914911
2008/04/01(火) 15:20:07処理系のバグをすぐ修正してもらえるかどうかは別問題。
この辺でバグあるんなら、ぜひ報告してくれ。
ソケットから取ってきたデータをalign(1) な構造体にキャスト、とか時々やるけど
まだ問題おきたことない (gdc 0.24 x86_64)。バグあるんなら教えてほしい。
0915デフォルトの名無しさん
2008/04/01(火) 17:08:43ありがとう。
いろんな箇所に散らばってて探しづらいね
0916デフォルトの名無しさん
2008/04/01(火) 22:55:20Xcode用の拡張を書くのがだるいので、これはこれでいいかも。
あとはGDCのSVNから2系対応版を……と思ったら2.008止まり。
コミットするのは大変そうだなあと思ってできない俺ガイル。
0917デフォルトの名無しさん
2008/04/02(水) 04:01:04http://dsource.org/projects/tango/forums/topic/451
曰く「Tangoでは、importでより素早いタイピングが可能になるよう、パッケージ名はすべて1文字か2文字にします!」
つまり import tango.io.FilePath; が import ta.io.fp; になる…
曰く「をるたーは、すべてのDのキーワードを1文字にすることに同意した」
つまり class キーワードが c になる…
お茶目すぎるww
0918デフォルトの名無しさん
2008/04/02(水) 07:11:390919デフォルトの名無しさん
2008/04/02(水) 15:46:350920デフォルトの名無しさん
2008/04/03(木) 00:45:32ってエラーはどういう意味なんでしょうか。
定義されてないって言われるならわかるんですが。
0921デフォルトの名無しさん
2008/04/03(木) 00:51:28「そのシンボル名は既に型として使われています」
ってことじゃまいか?
0922デフォルトの名無しさん
2008/04/03(木) 01:03:43Pointクラス作ってgetter/setterでやりとりしようと思ったんですが
名前そのまま使っちゃ駄目なんですね。
0923デフォルトの名無しさん
2008/04/03(木) 01:07:230924デフォルトの名無しさん
2008/04/03(木) 01:12:43{
int x,y;
}
class Test
{
Point _point;
void Point(Point point)
{
this._point = point;
}
Point Point()
{
return this._point;
}
}
こんな感じです。
0925デフォルトの名無しさん
2008/04/03(木) 01:19:50そこにあるシンボルが型として定義されたもののリストに入ってない場合、という感じらしい。
詳しくはフロントエンドのソース(parse.*, mtype.*, statement.*, template.*)でも眺めればいいかと。
俺もちゃんと読んだわけじゃないけど。
典型的にはこんなケース。
1)未定義なシンボルを含む単純な例
Hoge hoge;
Error: identifier 'Hoge' is not defined
Error: Hoge is used as a type
2)型以外の意味で宣言されたシンボルを型として使っている場合
int foo;
class Foo(X : foo);
Error: foo is used as a type
0926デフォルトの名無しさん
2008/04/03(木) 01:25:12class Point
{
int x,y;
}
class Test
{
.Point _point;
void Point(.Point point)
{
this._point = point;
}
.Point Point()
{
return this._point;
}
}
0927デフォルトの名無しさん
2008/04/03(木) 01:28:34class Test内で`Point'というシンボルが与えられたとき、
スコープの関係でTest内で定義されたPointという名前の関数が優先されるので、
外側のスコープのPointを示すにはスコープ解決演算子を使う
ttp://codepad.org/xm6Ed4Ae
926とだだかぶりなのは勘弁してくれ
0928デフォルトの名無しさん
2008/04/03(木) 01:31:56へえ
シンボル名をフルネームで指定すればいいのか
勉強になった
0929デフォルトの名無しさん
2008/04/03(木) 01:41:49ここのログとしての価値が失われてしまわね?
0930デフォルトの名無しさん
2008/04/03(木) 09:55:480931デフォルトの名無しさん
2008/04/03(木) 10:45:33コンパイルもあっさり通りました。
ありがとうございました。
0932デフォルトの名無しさん
2008/04/03(木) 11:14:470933デフォルトの名無しさん
2008/04/03(木) 12:51:310934デフォルトの名無しさん
2008/04/03(木) 16:42:280935デフォルトの名無しさん
2008/04/03(木) 17:01:01ZeroBUGSの作者さんは「DMD 2.014のテストビルドを受け取った」らしいよ。
http://the-free-meme.blogspot.com/2008/03/final-bugs.html
0936デフォルトの名無しさん
2008/04/03(木) 20:11:08DMDはどうだか知らんな。
0937デフォルトの名無しさん
2008/04/05(土) 00:40:100938デフォルトの名無しさん
2008/04/06(日) 06:45:11wstringが使えるといろいろ便利なのだが。
0939デフォルトの名無しさん
2008/04/06(日) 11:20:180940デフォルトの名無しさん
2008/04/07(月) 12:21:32【目的】
街中をオニが駆け巡ります。
オニは聖火を持って移動します。これを消すのが目的です。
ただし、今回は参加者が多いため難易度がはね上がりました。
今回のみ、オニは壁役に守られながら走ります。
壁役を突破して聖火を消せばゲームクリアとなります。
【ルール】
〜勝ち〜
オニが持っている聖火を消すとその時点でゲームクリアとなります。
〜負け〜
オニが若里公園まで逃げ切るとその時点でゲームオーバーとなります。
【日時 】 2008年4月26日(土)8:30スタート
【場所 】 長野県長野市
【ルート地図】 ttp://www.city.nagano.nagano.jp/upload/1/taiiku_lane.pdf
【詳細情報 】 ttp://www.joc.or.jp/beijing/torchrelay/index.html
-------------------------------------------------------------
イギリスで行われたイベントの様子
ttp://jp.youtube.com/watch?v=1-KMVWRFLes
フランスで行われたイベントの様子(1分30秒から)
ttp://jp.youtube.com/watch?v=9mYEtkW2bsw
『2ch大規模OFF会場』
ttp://sports11.2ch.net/test/read.cgi/offmatrix/1207495088/
ttp://sports11.2ch.net/test/read.cgi/offmatrix/1207418064/
『各国の競技結果』
ttp://ja.uncyclopedia.info/wiki/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%83%BB%E8%81%96%E7%81%AB%E3%83%AA%E3%83%AC%E3%83%BC
0941デフォルトの名無しさん
2008/04/08(火) 12:09:560942デフォルトの名無しさん
2008/04/08(火) 23:48:110943デフォルトの名無しさん
2008/04/09(水) 00:38:570944デフォルトの名無しさん
2008/04/09(水) 01:13:540945デフォルトの名無しさん
2008/04/09(水) 01:49:30http://www.digitalmars.com/d/2.0/accu-functional.pdf
0946デフォルトの名無しさん
2008/04/09(水) 15:20:54とても読み易かった。
流石アンドレタン
0947デフォルトの名無しさん
2008/04/10(木) 01:20:43-- ドキュメントより
確かにD言語のコンパイラが最適化するとはどこにも書いてない
とか言うことになったらがっかりだぜ
0948デフォルトの名無しさん
2008/04/10(木) 07:27:40version (UNICODE)
wchar[] _T(wchar[] s){ return s; }
else
char[] _T(char[] s){ return s; }
で大丈夫?
0949デフォルトの名無しさん
2008/04/10(木) 07:56:36Win32APIに渡すならポインタ返したほうがいいんじゃないか
0950デフォルトの名無しさん
2008/04/10(木) 08:07:160951デフォルトの名無しさん
2008/04/10(木) 08:07:430952デフォルトの名無しさん
2008/04/10(木) 08:22:01これ面白いね
成果が楽しみだ
0953デフォルトの名無しさん
2008/04/10(木) 18:07:370954デフォルトの名無しさん
2008/04/10(木) 18:45:33これかな。
ttp://www.digitalmars.com/d/2.0/phobos/std_complex.html
極座標表現をしたいが言語仕様に追加するのがいや、という発想かと。
個人的にはfortran的range表現の充実を期待したいところだが。
0955デフォルトの名無しさん
2008/04/10(木) 21:09:21このモジュール使うと基本型の複素数よりも拡張されたものを使えるって
風にも読めるんだけど・・・
0956デフォルトの名無しさん
2008/04/10(木) 22:18:520957デフォルトの名無しさん
2008/04/10(木) 22:37:070958デフォルトの名無しさん
2008/04/10(木) 22:41:39ライブラリに出来る事を言語に組み込むのは無駄。
ただ、複素数は数値計算やってた身としては、
速度的な観点から見て組み込みな方がいいとは思う。
0959デフォルトの名無しさん
2008/04/10(木) 22:47:59複素数ぐらいは言語組み込みでなんとかしてほしい。
0960デフォルトの名無しさん
2008/04/10(木) 22:54:000961デフォルトの名無しさん
2008/04/10(木) 23:08:49おもしろそうだな。
0962デフォルトの名無しさん
2008/04/10(木) 23:10:530963デフォルトの名無しさん
2008/04/10(木) 23:34:34use feature 'switch';
0964デフォルトの名無しさん
2008/04/10(木) 23:49:230965デフォルトの名無しさん
2008/04/10(木) 23:55:42静的言語だと・・・コンパイル時間は減るかも?
0966デフォルトの名無しさん
2008/04/10(木) 23:56:410967デフォルトの名無しさん
2008/04/11(金) 11:14:26http://d.hatena.ne.jp/Dubhead/20080410#p1
>>958
上のとこからリンクされてるうぉるたん発言によると、
コンパイラ技術が進んできたから、
複素数を言語組込みで持っておく利点がなくなってきてるってさ。
だから速度的な心配はないんじゃないの。記述がちょっと面倒になるかもしれないけど。
0968デフォルトの名無しさん
2008/04/11(金) 11:38:580969デフォルトの名無しさん
2008/04/11(金) 14:14:39その問題はライブラリにしても実は解決できたっていうのかな
テンプレートとか増えて解決できるようになったのか?
0970デフォルトの名無しさん
2008/04/11(金) 14:42:04こう書くの気に入っていたんだけどなあ
複素数対応の数学関数周りとか鬱陶しくなりそう
0971デフォルトの名無しさん
2008/04/11(金) 15:00:45どのライブラリパッケージを使うかって話にならね?
数値計算だけのやつはC言語やFortranに戻れってこと?
0972デフォルトの名無しさん
2008/04/11(金) 15:07:27static invariant(Complex) opPostfix("i")(real n) {
return Complex(0, n);
}
とかできたらちびっちまうぜ
角度をあらわすリテラルでdegを使うかradを使うかで困るときがあるから、
こういう単位系を接尾辞で指定できるとすごくよい。
0973デフォルトの名無しさん
2008/04/11(金) 15:30:560974デフォルトの名無しさん
2008/04/11(金) 15:34:52class i{
static invariant(Complex) opCall(real n){
return Complex(0, n);
}
}
として、i(10)のシンタックスシュガーとして10iで良くね? lexer/parser分離の問題も無いし。
0975デフォルトの名無しさん
2008/04/11(金) 17:30:44実際そうやってるけど読みづらいのは確か。
>>974
その方法だとシンボルの衝突が結構面倒そうだというのが私見。
見つけにくいバグの原因になりやすいかと思う。
0976デフォルトの名無しさん
2008/04/11(金) 17:53:19180.0 deg
てな感じにできるかな。
0977デフォルトの名無しさん
2008/04/11(金) 18:08:36オーバーロードセットもあるし、シンボル衝突は問題ない気ガス。
0978デフォルトの名無しさん
2008/04/11(金) 20:34:30【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/
を
Eclipse統合M24【Java/C/PHP/Ruby/Python/Perl】
http://pc11.2ch.net/test/read.cgi/tech/1200918324/
に差し替えです。
0979デフォルトの名無しさん
2008/04/11(金) 21:26:05deg,radが予約語になっちゃうのも如何な物かと
0980デフォルトの名無しさん
2008/04/11(金) 22:22:580981デフォルトの名無しさん
2008/04/11(金) 22:54:37C++の言う「intがふるまう様にすれ」が完全に実践できるな
0982デフォルトの名無しさん
2008/04/11(金) 22:59:400983デフォルトの名無しさん
2008/04/11(金) 23:57:00今でも既にmixin周りとか、コード文字列の断片が入り乱れて大変なのに。
0984デフォルトの名無しさん
2008/04/13(日) 00:37:13ニヤニヤしながら新しく出たバグをつぶしている俺がいた。
俺はマゾかもしれん。
0985デフォルトの名無しさん
2008/04/13(日) 14:07:08どんなバグだったよ
0986デフォルトの名無しさん
2008/04/13(日) 20:13:22修正する気持ちよさとみた
0987デフォルトの名無しさん
2008/04/13(日) 20:14:59わかります
0988デフォルトの名無しさん
2008/04/14(月) 12:02:46よう、俺
そろそろ次スレか
0989デフォルトの名無しさん
2008/04/14(月) 15:18:25たてたD
0990デフォルトの名無しさん
2008/04/14(月) 20:16:540991デフォルトの名無しさん
2008/04/14(月) 20:22:310992デフォルトの名無しさん
2008/04/14(月) 20:29:510993デフォルトの名無しさん
2008/04/14(月) 22:02:440994デフォルトの名無しさん
2008/04/14(月) 22:09:130995デフォルトの名無しさん
2008/04/14(月) 22:14:360996デフォルトの名無しさん
2008/04/15(火) 09:55:07assert(>>989.is乙 == true);
0997デフォルトの名無しさん
2008/04/15(火) 11:08:140998デフォルトの名無しさん
2008/04/15(火) 11:08:350999デフォルトの名無しさん
2008/04/15(火) 11:11:231000小倉優子 ◆YUKOH0W58Q
2008/04/15(火) 11:11:2910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。