D言語 Part20
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/11/14(金) 12:05:16過去スレ、関連スレは >>2
■前スレ
http://pc11.2ch.net/test/read.cgi/tech/1217813098/
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
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動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
■ 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/11/14(金) 13:43:23http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000
その他関連スレ
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/
Eclipse統合M26【Java/C/PHP/Ruby/Python/Perl】
http://pc11.2ch.net/test/read.cgi/tech/1224536200/
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/
0003デフォルトの名無しさん
2008/11/14(金) 13:45:200004デフォルトの名無しさん
2008/11/14(金) 19:41:220005デフォルトの名無しさん
2008/11/14(金) 20:22:38DFLつかえねー
0006デフォルトの名無しさん
2008/11/15(土) 01:28:58うぉるたんかわいいようぉるたん
0007デフォルトの名無しさん
2008/11/15(土) 16:36:07おっさんだぜ?
0008デフォルトの名無しさん
2008/11/16(日) 05:40:160009デフォルトの名無しさん
2008/11/16(日) 14:00:58うぉるたんもあんな感じなんだろうか
0010デフォルトの名無しさん
2008/11/16(日) 14:23:13wikipediaに>1979年にカリフォルニア工科大学を卒業、とあるのでもう50前半ぐらい?
歳取った人の書いたプログラムって命名規則とかモジュールの作り方が今風じゃなくて
なんとなくわかるものだけどD見てると全然そんなの感じないな・・・
0011デフォルトの名無しさん
2008/11/16(日) 14:41:230012デフォルトの名無しさん
2008/11/16(日) 14:45:460013デフォルトの名無しさん
2008/11/16(日) 14:50:360014デフォルトの名無しさん
2008/11/16(日) 18:11:180015デフォルトの名無しさん
2008/11/16(日) 18:59:400016デフォルトの名無しさん
2008/11/16(日) 21:15:49real t;
ref real f(S)(S rhs) {
size_t tmp;
return t;
}
z.f(1.0);
z.f("hoge");
variable f!(double).f.tmp only parameters or foreach declarations can be ref
variable f!(invariant(char[4u])).f.tmp only parameters or foreach declarations can be ref
# 返値を ref T から T にすると通る
# 関数テンプレートでなければ通る
# ローカル変数を作らなければ通る
0017デフォルトの名無しさん
2008/11/16(日) 23:22:590018デフォルトの名無しさん
2008/11/17(月) 00:20:16C言語では生かしきれない、Lisp/Haskelマンセー
って記事を見たんだけど、D言語はこの先生きのこれるのか?
0019デフォルトの名無しさん
2008/11/17(月) 00:41:240020デフォルトの名無しさん
2008/11/17(月) 00:50:290021デフォルトの名無しさん
2008/11/17(月) 01:03:18標準ライブラリにスレッドもあるからCよりはやりやすかろう。
並列化をカプセル化しての隠蔽もやりやすいし、
デリゲートもあるからイベントドリブンなコードを並列化するのもやりやすいと思う。
しかし何より配列演算が定義されたことがうれしい。
あれがあるとないとでは、直感的にベクトル演算が使えるかどうかで大きく差がある。
あとは実装されるのを待つだけだな。
固定長配列の"rectangular"なalignmentも含めてFORTRANを知っている人間ならうれしいはず。
gotoもあるから移植も楽にできるしね。
……やっぱDプログラマって古い作法が好みなのか
0022デフォルトの名無しさん
2008/11/17(月) 01:07:20すでにマンセー状態になっていないとおかしくない?って思うんだけど
0023デフォルトの名無しさん
2008/11/17(月) 01:08:490024デフォルトの名無しさん
2008/11/17(月) 01:18:34なんとかみつけた
ttp://mobile.2chsearch.net/news/1221201654/?guid=ON
主にゲーム開発向けだった
0025デフォルトの名無しさん
2008/11/17(月) 01:30:19個人的にはGLSLを隠蔽したいと思ったときがある
expression templateを使って普通の式を書くようにシェーダを記述するとか夢があるなあと。
Cellは設計の概要しか見たことがないが、ローカルストレージの小ささが印象的
アセンブラが書ける人でないとつらいかなという気もするが、
DでもGCを書き換えるか、struct/unionと固定長配列を使い倒せば結構いけると思ったなあ。
0026デフォルトの名無しさん
2008/11/17(月) 01:41:38ところでシェーダといえばCgの次はDgでおk?
0027デフォルトの名無しさん
2008/11/17(月) 01:59:00乙であります
理想 > 副作用ないから並列化できるぜ、富豪プログラミングマンセー
現実 > in-placeな書き換えがないとメモリ足りん速度も出ないぞゴルァ
こんな感じ?
>>25
C#とHLSLだけどまんまそれやってる人がいるね
ttp://blogs.msdn.com/hiroyuk/archive/2008/10/17/9002752.aspx
0028デフォルトの名無しさん
2008/11/17(月) 02:22:45標準で便利なコンテナライブラリないとめちゃくちゃ不便なんですけど…
0029デフォルトの名無しさん
2008/11/17(月) 02:24:56DFLがdmd2.020サポートktkr
うまく動いたわほーい
0030デフォルトの名無しさん
2008/11/17(月) 03:19:52STLのIteratorみたいにinsertとかremoveとかできないし、種類も足りてないしdelegateでsortできないし。
せめてdcollectionsくらいの性能はほしいなぁ
DFLまじだ…!SVNの更新とかないからどうしたのかと思っていたが…
0031デフォルトの名無しさん
2008/11/17(月) 13:53:12DTLってまだ開発続いてるの?
ずっと止まってる気がするし誰かが引き継いでいるようにも見えないんだけど…
0032デフォルトの名無しさん
2008/11/17(月) 16:00:170033デフォルトの名無しさん
2008/11/17(月) 17:31:00コンパイルエラーが出てしまい、解決できません。
ソースはこちらのをコピペして使っています。
ttp://www.thrudr.net/wiki/index.php?D%B8%C0%B8%EC%2FDirectX%2FCreateDevice
エラーコードはこれ(Poseidonを使ってビルドしています)
C:\dmd\dmd\bin\dmd.exe Main.d -ofDirectXTest d3d9.lib
OPTLINK (R) for Win32 Release 8.00.1
Copyright (C) Digital Mars 1989-2004 All rights reserved.
DirectXTest.obj(DirectXTest)
Error 42: Symbol Undefined _D5win328winerror6FAILEDFiZb
DirectXTest.obj(DirectXTest)
Error 42: Symbol Undefined _D5win327directx9d3d9types13D3DCOLOR_XRGBFhhhZT5win327directx9d3d9types8D3DCOLOR
DirectXTest.obj(DirectXTest)
Error 42: Symbol Undefined _D5win328winerror9SUCCEEDEDFiZb
DirectXTest.obj(DirectXTest)
Error 42: Symbol Undefined _D5win327winuser13CreateWindowWFPxuPxukiiiiT5win325winnt6HANDLET5win325winnt6HANDLET5win325winnt6HANDLEPvZT5win325winnt6HANDLE
DirectXTest.obj(DirectXTest)
Error 42: Symbol Undefined __moduleUnitTests
--- errorlevel 5
dmdのバージョンは2.020、DirectXのヘッダはdsource.orgで落としたのを使っています。
d3d9.libはcoffimplibで変換出来たのですが、
dxguid.libは"not an import library"というエラーが出てしまい、変換出来ません。
どなたかお分かりの方がいらっしゃいましたらご教示下さい...
0034デフォルトの名無しさん
2008/11/17(月) 18:51:27使っているwin32(とDirectX)ライブラリをコンパイルしてlibファイルを作って、
それもリンクする必要がある。
0035デフォルトの名無しさん
2008/11/17(月) 18:54:400036デフォルトの名無しさん
2008/11/18(火) 00:53:450037デフォルトの名無しさん
2008/11/18(火) 03:30:45TimerCallback的なことをThread使ってやろうと思ってるんだけどいい方法あれば教えて下さい。
class CTimerCallback : Thread
{
public:
this (void delegate() dg) { _dg = dg; super(&run); }
private:
void run() { sleep(10_000_000_0); _dg(); }
private:
void delegate() _dg;
}
これで10s後にdg()が動くって認識だけどあってますか?
0038デフォルトの名無しさん
2008/11/18(火) 08:12:03PASCALとFORTRANの世代でcollege卒でengineerだったと言ってるから、40〜50代の工員さんだろうな。
教育言語について語ってるから指導的立場だろう。
0039デフォルトの名無しさん
2008/11/18(火) 08:14:59RTOSでない限りは、スレッドのスケジューリングで10秒開けたら平均10秒、標準偏差1秒以内でやってくれる。
忙しい時にそのスケジューリングが守られる保証はどこにもない。
0041デフォルトの名無しさん
2008/11/18(火) 23:03:24import std.stdio;
import std.string;
import core.thread;
void main()
{
real r = 12.0L;
string inThread;
string outThread;
auto t = new Thread({
inThread = format("%.20f", r);
});
t.start;
t.join;
outThread = format("%.20f", r);
writefln(inThread); // 11.99999999999999964400
writefln(outThread); // 12.00000000000000000000
assert(inThread == outThread); // core.exception.AssertException@main(17): Assertion failure
}
何でこんな結果に…?
0042デフォルトの名無しさん
2008/11/18(火) 23:09:09バグ
0043デフォルトの名無しさん
2008/11/18(火) 23:43:590044デフォルトの名無しさん
2008/11/19(水) 00:21:46004541
2008/11/19(水) 00:46:560046デフォルトの名無しさん
2008/11/19(水) 01:30:25浮動小数点といえど整数表現可能なものなら精度というのもどうかと思う、
とはいえ桁を数えて引き算したりしてるのかなと思ってソースを読もうとしたが、
最終的にsnprintfを呼んでいたので読む気がなくなった
0047デフォルトの名無しさん
2008/11/19(水) 01:31:040048デフォルトの名無しさん
2008/11/19(水) 01:40:19それは同じ。
10進数変換時のミスだと思われる。
しかし有効桁数以内の整数なのになあと
0049デフォルトの名無しさん
2008/11/19(水) 10:48:06どうやって探すかな・・・
0050デフォルトの名無しさん
2008/11/19(水) 12:39:39現実問題としては、そもそも浮動小数を==で比較するのが間違いの元なんじゃないかと。
「浮動小数 比較」でググるとそういう話がいっぱい出てくる。
0051デフォルトの名無しさん
2008/11/19(水) 13:30:420052デフォルトの名無しさん
2008/11/19(水) 13:36:20これはstd.formatのバグ
0053デフォルトの名無しさん
2008/11/19(水) 13:37:12比較してるのは文字列なんだが^^;
0054デフォルトの名無しさん
2008/11/19(水) 13:58:300055デフォルトの名無しさん
2008/11/19(水) 19:27:520056デフォルトの名無しさん
2008/11/19(水) 19:28:360057デフォルトの名無しさん
2008/11/19(水) 20:11:29005841
2008/11/19(水) 20:48:24でも、文字列と数値の変換の段階で再現性が出ないというのは
保存とかのあたりで困るので、やっぱりバグにしておきたい気分だね。
12.0という値をiniとかxmlに保存するとき、
容易に編集可能な"12"という文字列と、
Base64エンコードされた"AAAAAAAAAMACQA=="とかいう文字列
前者がいいと思うのは俺だけではないハズ。
編集させたくない場合はエンコードでもいいと思うけど。(バイナリファイル使えよとも)
0059デフォルトの名無しさん
2008/11/20(木) 02:51:11なんでそういう方向に話が行ってるんだ?
同じ入力からは同じ出力が出ないとおかしいだろ。
12 は 1.8p+3 で表現できてるから、2進-10進変換問題とも微妙に違う気がする。
どっかで80bit精度失うようなことしているんだろうか?
0060デフォルトの名無しさん
2008/11/20(木) 06:54:34ただアクセスするだけのプロパティを関数一つで出来そうだなと思ったんだけど、
class A
{
private int n;
ref int count()
{
return n;
}
}
auto a = new A;
a.count() = 5;//呼び出しに括弧つけないとプロパティ用意しろと怒られる
これ括弧取れるようにならないかなぁ…
void size(int m)とかあればそっち優先なのは分かるんだけども、
通常引数が無い奴は省略できる構文規則があるはずだよね…
構文解析の時に関数がマッチしなかったら、
先にプロパティとして呼び出し規則適用してみる、とかできないのかな
0061デフォルトの名無しさん
2008/11/20(木) 09:05:30俺は関数コールで()をつけなくていいっていうこと事態がキモイんで
早く直してほしいと祈るばかりです
0062デフォルトの名無しさん
2008/11/20(木) 12:30:39というかJava7のプロパティ、
アレならprivateプロパティ使えばメンバ変数はもう要らなくできるんじゃ……
Dならメンバ変数と同レベルまで最適化できるはずだし
0063デフォルトの名無しさん
2008/11/20(木) 13:15:45・メンバ変数への直接get/setとしてほしい場合
・get/setのどちらかが直通になって片方は関数を噛ませる場合
・プロパティをインターフェースに記述した際の、変数アクセスと関数アクセスのオーバーライドと選択
この辺を整理すると結構面倒なことは確か。
0064デフォルトの名無しさん
2008/11/22(土) 12:47:300065デフォルトの名無しさん
2008/11/22(土) 13:09:310066デフォルトの名無しさん
2008/11/22(土) 13:38:280067デフォルトの名無しさん
2008/11/22(土) 14:37:52まーだなの?
0068デフォルトの名無しさん
2008/11/22(土) 14:48:230069デフォルトの名無しさん
2008/11/22(土) 15:12:160070デフォルトの名無しさん
2008/11/22(土) 15:29:370071デフォルトの名無しさん
2008/11/23(日) 04:13:170072デフォルトの名無しさん
2008/11/23(日) 05:08:200073デフォルトの名無しさん
2008/11/23(日) 08:01:060074デフォルトの名無しさん
2008/11/23(日) 09:21:550075デフォルトの名無しさん
2008/11/23(日) 09:44:50……あれ? ヘッダ内でstruct内に普通にメンバ関数っぽく関数宣言があるけど、
Cってstructの中に関数をメンバとして書けたっけ? DMの拡張?
0076デフォルトの名無しさん
2008/11/23(日) 09:50:030077デフォルトの名無しさん
2008/11/23(日) 11:27:58//に関しては最近のC言語だと使えるはず
0078デフォルトの名無しさん
2008/11/23(日) 11:40:01ライブラリは当然Dだよ
0079デフォルトの名無しさん
2008/11/23(日) 11:52:010080デフォルトの名無しさん
2008/11/23(日) 12:46:110081デフォルトの名無しさん
2008/11/23(日) 17:06:29今手元にあるのは2.020っていうバージョンなんだけど
srcフォルダの中にdmdっていうのと、druntimeの下にもdmdっていうのがあるじゃん?
前はC++で後ろはDだと思うんだけどこれってどう繫げてるのかなって。
C++の方は構文解析とかでDの方はオブジェクトとかの内部実装に見えるんだけど
0082デフォルトの名無しさん
2008/11/23(日) 17:09:31CallExpなど+リンカで。というかソース嫁。
0083デフォルトの名無しさん
2008/11/23(日) 20:35:130084デフォルトの名無しさん
2008/11/23(日) 20:43:00druntimeの下のはライブラリだ。
コンパイラ(src/dmd, C++)とリンクされるものじゃなくて
dmdでコンパイルした*.dとリンクするためのもの
0085デフォルトの名無しさん
2008/11/23(日) 21:00:42日本人感覚から行くと違うよな?
指摘しようにもどこでいえばいいのかわからん…匿名でのバグ報告ってできないのか?
0086デフォルトの名無しさん
2008/11/23(日) 21:12:23>>84
思いっきり勘違いしてた。
C++からDに書き直しているんだと思ってて、どうなってんだろうと
すっきり出来た、有難う。
0087デフォルトの名無しさん
2008/11/23(日) 21:15:17ちなみにDで書かれたdmdfeが欲しいならdparserってのがある。
008887
2008/11/23(日) 21:16:53http://svn.dsource.org/projects/dparser/trunk/
0089デフォルトの名無しさん
2008/11/23(日) 21:21:43gccとかと連携取れるの?
0090デフォルトの名無しさん
2008/11/23(日) 21:28:56dmdfeはdmdのフロントエンド部分をコンパイルできるようにしたもので、それをD言語に直した物がdparserね…といいたいのだが、何かdparserにllvm_backendの文字が…。
0091デフォルトの名無しさん
2008/11/23(日) 21:48:18どんな形式で抽象構文木を出力するの?
0092デフォルトの名無しさん
2008/11/23(日) 21:55:11ちなみにパーサは再帰下降の手書きパーサね。
0093デフォルトの名無しさん
2008/11/23(日) 21:59:160094デフォルトの名無しさん
2008/11/23(日) 22:59:29よく見たらdelphi用だった。
0095デフォルトの名無しさん
2008/11/24(月) 00:12:49http://dsource.org/projects/dmocks/wiki/DUnit
DUnitはアナウンスがあったばっかでまだバージョンは0.2
まだまだかなぁという感じ
0096デフォルトの名無しさん
2008/11/24(月) 03:03:430097デフォルトの名無しさん
2008/11/24(月) 03:38:09安定したバージョンって無いですかね?
0098デフォルトの名無しさん
2008/11/24(月) 08:21:270099デフォルトの名無しさん
2008/11/24(月) 11:09:17あれだけじゃユニットテストは出来ないよ
総合件数、成功件数、失敗件数、失敗メッセージを羅列するようなのが必要
assertで一回失敗しただけで止まるようなのは困る
0100デフォルトの名無しさん
2008/11/24(月) 16:13:41assert しなければ良い、とかじゃなく?
UnittestAssert みたいなの定義して、件数カウントしたりメッセージ保持したり
するシステム作れば。
というか、そういうことをしてくれるのが DUnit ってことか?
0101デフォルトの名無しさん
2008/11/24(月) 16:15:590102デフォルトの名無しさん
2008/11/24(月) 16:59:46ロックとかそういうのじゃなくて
staticとconstの中性的な存在
0103デフォルトの名無しさん
2008/11/24(月) 17:03:05const
0104デフォルトの名無しさん
2008/11/24(月) 17:04:350105デフォルトの名無しさん
2008/11/24(月) 17:04:450106デフォルトの名無しさん
2008/11/24(月) 17:45:06そうそう、これです。
初期化を死ぬまで忘れない、
first impression never forgetな感じです。
0107デフォルトの名無しさん
2008/11/24(月) 18:48:13そもそも unittest には assert 使わなければならないなんて仕様はないわけだが。
まぁ、他のライブラリで assert 突っ込んであって、止まるってのはありがちだけど。
ちゃんとテスト管理してるやつはそのくらい自前でやってるだろ。
0108デフォルトの名無しさん
2008/11/24(月) 19:11:50Tango & DFLを使っています。
"main.d"
import win32.core;
void main()
{
Beep(440, 1000);
}
というのを"dfl -gui main.d"だとうまくコンパイルできるのですが、
"dsss build -gui main.d"とすると
C:\tango\bin\..\import\win32\winnt.d(47): template instance
forward reference to template declaration CPtr(T)
とエラーが出ます。どうすればいいでしょうか。
0109デフォルトの名無しさん
2008/11/24(月) 20:02:480110デフォルトの名無しさん
2008/11/24(月) 20:31:17http://www.kmonos.net/alang/d/2.0/const3.html
>初期化子を与えていない場合、 invariant を対応するコンストラクタで初期化することが可能です:
例がstatic thisで分かり難いけど一応書いてある
>>107
自前もいいけど共通なテストライブラリは欲しいとは思う
assertだけじゃなくて,Mockとかbehaviorなものとか
0111デフォルトの名無しさん
2008/11/24(月) 20:46:33バージョンの情報とかがないから何とも言えませんが
dsssの問題かもしれません。dmdだけでいけるか試してみるといいと思います。
その程度のコードなら
dmd win32.lib main.d
とかでいけるはず。
0112デフォルトの名無しさん
2008/11/24(月) 21:16:07「テンプレートの宣言の前にテンプレートが参照されている」
ということでしょうか?
win32\basetsd.dを修正してみたところ、うまくいきました。
ありがとうございます。
0113デフォルトの名無しさん
2008/11/24(月) 21:18:17その方法でも大丈夫ですね。
ありがとうございます。
0114デフォルトの名無しさん
2008/11/25(火) 15:53:440115デフォルトの名無しさん
2008/11/25(火) 20:05:530116デフォルトの名無しさん
2008/11/26(水) 01:52:530117デフォルトの名無しさん
2008/11/26(水) 02:12:450118デフォルトの名無しさん
2008/11/26(水) 03:40:410119デフォルトの名無しさん
2008/11/26(水) 06:35:040120デフォルトの名無しさん
2008/11/26(水) 08:38:51文字列 mixin が増えたところで
単にめんどくさい機能が増えたくらいの印象だろう。
新機能増えてもしばらく移植性ないから使えないし。
新機能増えて移植性下がって喜びまくるのはD言語くらいだぜ。
0121デフォルトの名無しさん
2008/11/26(水) 08:42:50D2.021&D1.037きたっ
0122デフォルトの名無しさん
2008/11/26(水) 11:56:28ちゃんとバグ投票の結果が拾われているようだ
0123デフォルトの名無しさん
2008/11/26(水) 13:01:290124デフォルトの名無しさん
2008/11/26(水) 13:05:26OutOfMemory以外のエラーはコーディングのエラーだからから悪くないと思うが。
でも何でOutOfMemoryまで?
0125デフォルトの名無しさん
2008/11/26(水) 16:13:190126デフォルトの名無しさん
2008/11/26(水) 16:18:31前のdruntimeは削除
sc.iniをdruntimeからruntimeへ
0127デフォルトの名無しさん
2008/11/26(水) 17:53:22何気にdruntime分離したけどやっぱりそのうちlibphobos2.aに統合するよって書いてある?
0128デフォルトの名無しさん
2008/11/26(水) 20:40:190129デフォルトの名無しさん
2008/11/26(水) 22:00:25ちょっとググろうとしたけど産総研のCコンパイラとか出てきたりよくわからなかった…誰か解説ぷりーず
0130デフォルトの名無しさん
2008/11/26(水) 22:04:11http://www.kmonos.net/alang/d/2.0/safed.html
0131129
2008/11/26(水) 23:24:28外部から見たらそれを隠蔽してSafeDのように動作するという保証をつける、ということかな?
んで、-safeスイッチはSafeDのみのコードで構成することを強制するってことかな?
0132デフォルトの名無しさん
2008/11/26(水) 23:30:45orz lenny入れるか
0133デフォルトの名無しさん
2008/11/27(木) 01:19:09畜生やっぱダメなんだーぁ俺の英語力じゃその程度なんだー
くっそぉー、明日こそ正しい翻訳を……
0134デフォルトの名無しさん
2008/11/27(木) 02:01:59開区間を閉区間の設定を(正しくない用法と知りつつ)opCall, opIndexで代用しています。
interval[min, max]
この方法だと半開区間が表現できないし汚いので、なにかうまい方法がないかなと模索しています。
実装が必要なだけなら上限加減と両者の開閉の4引数関数を作るだけでいいのですが、
Dらしい変態的方法があればなあと存じます。
0135デフォルトの名無しさん
2008/11/27(木) 02:04:500136デフォルトの名無しさん
2008/11/27(木) 06:23:080137デフォルトの名無しさん
2008/11/27(木) 15:51:41文字で渡すとか
0138デフォルトの名無しさん
2008/11/27(木) 18:28:310139デフォルトの名無しさん
2008/11/27(木) 18:32:470140デフォルトの名無しさん
2008/11/27(木) 20:30:46だいたい同じ機能のプログラムをVC++でコンパイルしたものとDMDでコンパイルしたもの
を比べると1桁サイズが違ってワロタ
0141デフォルトの名無しさん
2008/11/27(木) 21:59:19それはVCランタイムは外部DLLを使うようになってないか?
あとDMDはリリースコンパイルしてる?
それなら差は100KB以下になるはず
0142デフォルトの名無しさん
2008/11/28(金) 00:09:26らんた(ry
0143デフォルトの名無しさん
2008/11/28(金) 01:14:290144デフォルトの名無しさん
2008/11/28(金) 01:24:28ユーザサイドの努力では辛いものがあるような
0145デフォルトの名無しさん
2008/11/28(金) 12:05:48std.string.toString
std.conv.toXxxxxx
0146デフォルトの名無しさん
2008/11/28(金) 15:07:42----------------------------------
// hello.d
import std.stdio;
import hello2;
int main(char[][] args){
int z = hello2();
writef(z);
return 0;
}
-^--------------------------------
// hello2.d
int hello2(){ return 0;}
----------------------------------
>C:\Dev\DSciTE\bud.exe -DCPATHC:\Dev\DSciTE\dmd\bin -IC:\Dev\DSciTE\lib -I.. -I..\.. -full -debug -g -unittest -w hello.d
hello.d(5): Error: function expected before (), not module hello2 of type void
>Exit code: 1
0147デフォルトの名無しさん
2008/11/28(金) 15:29:51モジュール名と同じ名前の関数は定義できない
0148デフォルトの名無しさん
2008/11/28(金) 16:22:10出来ないなら無駄な宣言に警告でも出してくれればいいのに…
0149デフォルトの名無しさん
2008/11/28(金) 17:58:27上手くいった、ありがとう・・・本当に・・・ありが・・・と・・・ぅ・・・
0150デフォルトの名無しさん
2008/11/28(金) 18:31:430151150
2008/11/28(金) 18:56:42//std.file
foreach (string name; dirEntries("destroy/me", SpanMode.depth)){
writef(name);
}
http://www.kmonos.net/alang/d/2.0/phobos/std_file.html
0152デフォルトの名無しさん
2008/11/29(土) 11:57:200153デフォルトの名無しさん
2008/11/29(土) 20:04:310154デフォルトの名無しさん
2008/11/29(土) 21:03:49ttp://d.hatena.ne.jp/repeatedly/20081129/1227956126
0155デフォルトの名無しさん
2008/11/29(土) 21:22:32既存のものを非破壊的に拡張するには foreach(iter; agg.iter) が一番楽なのかな
0156デフォルトの名無しさん
2008/11/29(土) 22:02:38後で使いたいならコピーをとっとかないといけないのか。
0157デフォルトの名無しさん
2008/11/29(土) 22:08:160158デフォルトの名無しさん
2008/11/30(日) 00:48:32それは辛いぞ
0159デフォルトの名無しさん
2008/11/30(日) 11:46:11前置(int[] a;)と後置(int a[];)があるって余計な気がする。
0160デフォルトの名無しさん
2008/11/30(日) 12:33:500161デフォルトの名無しさん
2008/11/30(日) 13:10:10void main(){
{
int[] a,b;
}{
int a[], b[];
}{
int a[], b;
}
}
a.d(6): multiple declarations must have the same type, not int[] and int[] <=== ちょ
a.d(8): multiple declarations must have the same type, not int[] and int
0162デフォルトの名無しさん
2008/11/30(日) 14:48:430163デフォルトの名無しさん
2008/11/30(日) 14:53:270164デフォルトの名無しさん
2008/11/30(日) 17:29:41>import std.stdio;
>int main(){
> char [] a = "123";
> return 0;
>}
>test.d(4): Error: cannot implicitly convert expression ("123") of type invariant(char[3u]) to char[]
>>163
ガーーン
0165デフォルトの名無しさん
2008/11/30(日) 17:33:08文字列リテラルの型は、invariant(char[N])
これは、char[]に変換できない。
const char[] a = "123";
char[] a = "123".dup;
のどちらかにする必要がある。
0166デフォルトの名無しさん
2008/11/30(日) 17:40:30じゃなくて
string a = "123"; // string is invariant(char)[]
const(char)[] a = "123";
const(char[]) a = "123";
const char[] a = "123";
を使うべし
string推奨
0167デフォルトの名無しさん
2008/11/30(日) 17:52:39動いたー、ありがとー
どっかのサイトをコピペしたコードも動かなかったけど、どこのサイトだったんだろ。
これもD2.0になってからの仕様変更かな。
0168デフォルトの名無しさん
2008/11/30(日) 18:23:12D_Try.d(6): function std.file.mkdir (const(invariant(char)[])) does not match parameter types (const(char[]))
とりあえず文字列はstring使ってみます。
0169デフォルトの名無しさん
2008/11/30(日) 19:00:10今度プログラムを分割して、複数のファイルから
import win32.DirectX.d3dx9;
というようにインポートしたところ、
module win32.directx.d3dx9 is in multiple packages win32.directx.d3dx9
というようなエラーが出るようになってしまいました。
初歩的な問題で申し訳ありませんが、どなたか対処法を教えて下さい。
0170デフォルトの名無しさん
2008/11/30(日) 19:44:36module foo.bar;
/* foo\hoge.d */
module foo.bar;
/* main.d */
import foo.bar;
void main(){}
module foo.bar is in multiple packages foo.bar
0171デフォルトの名無しさん
2008/11/30(日) 20:09:57constは何でもそのまま受けられる
void main(){
char[] m;
const(char)[] c;
invariant(char)[] i;
char[] mm = m;
char[] mc = c.dup;
char[] mi = i.dup;
const(char)[] cm = m;
const(char)[] cc = c;
const(char)[] ci = i;
invariant(char)[] im = m.idup;
invariant(char)[] ic = c.idup;
invariant(char)[] ii = i;
}
0172169
2008/11/30(日) 20:14:50import Win32.DirectX.d3dx9;
と大文字にしていたのがまずかったようです。
import win32.directX.d3dx9;
と小文字に統一したら通りました。
お騒がせして申し訳ありませんでした。
0173デフォルトの名無しさん
2008/11/30(日) 22:43:49c++0cのconcept_map相当を導入できないもんかな
0174デフォルトの名無しさん
2008/11/30(日) 22:49:56って要るの?
0175デフォルトの名無しさん
2008/11/30(日) 22:53:11どういう意味か分からんけど、object.dに書かれているので自分で宣言する必要は無い。
0176デフォルトの名無しさん
2008/11/30(日) 23:55:32コンセプト導入するよ!とかいつか言い出すかもしれない
0177デフォルトの名無しさん
2008/12/01(月) 00:13:55どこかから持ってきた文字列を切り貼りすれば事足りるなら、
迷いなくstringでいいと思われ。
>>171
constはスコープの中では書き換えないという表明ですからな。
書き換える予定がある(constでもinvariantでもない)なら書き換えてはいけないもの(constやinvariant)は渡せないが、
書き換える予定がない(const)なら書き換える予定のものも書き換えてはいけないものも渡せる。
0178デフォルトの名無しさん
2008/12/01(月) 17:58:130179デフォルトの名無しさん
2008/12/01(月) 19:50:030180D2.0 Phobos
2008/12/01(月) 20:29:520181デフォルトの名無しさん
2008/12/01(月) 20:34:210182デフォルトの名無しさん
2008/12/01(月) 20:38:210183デフォルトの名無しさん
2008/12/01(月) 20:39:08マルチバイトとか考えるのならstd.utfで正しいシーケンスかどうかは確認できる
0184デフォルトの名無しさん
2008/12/01(月) 20:53:050186デフォルトの名無しさん
2008/12/01(月) 23:29:07原因を追究した結果、TangoのUnicodeBomのソースが2か所間違ってることがわかった。
それがD言語です。
0187デフォルトの名無しさん
2008/12/01(月) 23:35:570188デフォルトの名無しさん
2008/12/02(火) 00:18:52文字列長ってどうやってとればいい?
0189デフォルトの名無しさん
2008/12/02(火) 00:34:01関数名でググればすぐに詳細が見つかるはず。
もしくは、\0で終わっているはずだから
int len;
while (str[len] != '\0') len++;
とかすればいいと思うよ
0190デフォルトの名無しさん
2008/12/02(火) 14:14:22Programming Language Usage Graph
http://www.cs.berkeley.edu/~flab/languages.html
0191デフォルトの名無しさん
2008/12/02(火) 14:20:42ttp://www.tiobe.com/index.php/paperinfo/tpci/D.html
まあ、次世代言語としては期待を持たれているが、実用品としてはまだまだ普及していない、ということですな。
0192190
2008/12/02(火) 14:40:35http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
0193デフォルトの名無しさん
2008/12/02(火) 15:33:47news groupeが盛り上がっていれば数字が上がる
0194デフォルトの名無しさん
2008/12/02(火) 17:02:090195デフォルトの名無しさん
2008/12/02(火) 19:03:540196デフォルトの名無しさん
2008/12/02(火) 19:10:340197デフォルトの名無しさん
2008/12/02(火) 19:19:55Rubyは一瞬で起動・処理して終了するけど、Dは1・2秒処理まで間が空く
Rubyってなんか常駐してたっけ。
0198デフォルトの名無しさん
2008/12/02(火) 19:29:21正規表現使いまくるなら外部ライブラリ使ったほうがいい
0199デフォルトの名無しさん
2008/12/02(火) 19:39:49foreach (string path; listdir("source", "*.html")){ (ry }
・・・書いてて気づいた、Dの方がフォルダを深く検索してる。sourceフォルダだけでいいのに。
0200デフォルトの名無しさん
2008/12/02(火) 20:08:02やっぱりWin32APIつかわんとだめか。
なるだけDで完結させたかったんだが、そういうところcharがUTF8になったおかげで
不便になったなぁ。
std.encodingとかがその辺解決してくれんのかね。
0201デフォルトの名無しさん
2008/12/02(火) 20:12:370202デフォルトの名無しさん
2008/12/02(火) 20:18:56で行けるが、パターンマッチを逐次人力で行う必要があるな
if書いてcontinueするだけとは言え
0203デフォルトの名無しさん
2008/12/02(火) 20:28:260204デフォルトの名無しさん
2008/12/02(火) 20:37:05toMBSzで変換後もinvariant(char)*ならfromMBSzで低コストで配列として読めるはず
日本語も使うならむしろtoUTF16zとWin32 APIのワイド文字関数(Wで終わるやつ)を組み合わせた方が安全
しかし古ハングルとかいう非実用的な文字を5千字もねじ込んでUTF-16の固定長性を破壊した韓国は万死に値する
サロゲートペアを無視すればいいのだが、セキュリティーホールになる可能性を考えるとやりたくないのが実情
0205デフォルトの名無しさん
2008/12/02(火) 20:39:44toMBStringの再発明しかないな。
ポインタで返すからいけないんであって、配列を返せばいい。
0206デフォルトの名無しさん
2008/12/02(火) 21:18:56再発明したほうがよさそうだよね。
0207デフォルトの名無しさん
2008/12/02(火) 22:24:09void main() {
writefln("test.");
}
-----------------------
dmd test.d -release -inline -w
_, ._
( ゚ Д゚)
0208デフォルトの名無しさん
2008/12/02(火) 22:38:17これってどういうこと?
どれか一つでもオプション削れば通るし
0209デフォルトの名無しさん
2008/12/02(火) 23:03:410210デフォルトの名無しさん
2008/12/02(火) 23:19:25いまさらというかDっぽいというか、
標準ライブラリが警告に引っかかるってどうよ?
0211デフォルトの名無しさん
2008/12/02(火) 23:28:200212デフォルトの名無しさん
2008/12/02(火) 23:44:420213デフォルトの名無しさん
2008/12/02(火) 23:59:09windows版のlistdirfやdirEntriesは、必要ないのにファイルスタンプを毎回取得するから、
それで信じられないくらい遅かったりするのだが、それは関係……なさそうだな
0214デフォルトの名無しさん
2008/12/03(水) 18:14:400215デフォルトの名無しさん
2008/12/03(水) 18:57:55値を一個ずつコピーする
0216デフォルトの名無しさん
2008/12/03(水) 19:51:02ひでえw Dならタプルで美しくできるだろ
0217デフォルトの名無しさん
2008/12/03(水) 19:53:430218デフォルトの名無しさん
2008/12/03(水) 20:07:40ちょっと俺には難しい話はよくわからんのだがワイド文字使えってことだよね。
まぁそうしたほうがいいんだろうけど。
結局、sjisの文字列の長さを数えるにはubyte*にキャストして\0までを数える
くらいしか今のところ方法はない?
0219デフォルトの名無しさん
2008/12/03(水) 20:53:300220デフォルトの名無しさん
2008/12/03(水) 21:27:32s.length -> 12
hogelen(s) -> 6
配列の長さも重要だけどUnicodeが文字というなら文字列長を標準ライブラリ(ry
0221デフォルトの名無しさん
2008/12/03(水) 21:41:46Unicodeでは組み合わせ文字とかあるから「文字」数に大した意味がないんだよ。
0222デフォルトの名無しさん
2008/12/03(水) 21:53:52Unicodeの突っ込んだ部分はロクに知らんけど、1文字という単位をそんな簡単に放棄できるもんなのか?
0223デフォルトの名無しさん
2008/12/03(水) 21:55:090224デフォルトの名無しさん
2008/12/03(水) 22:23:48import std.stdio , std.string;
void main(){
writef( cmp("ooo","ooo")); //0
writef( cmp("ooo","oxo")); //-1
writef( cmp("ooo","oxx")); //-1
writef( cmp("ooo","oooooo")); //-3
writef( cmp("ooo","ooxxxx")); //-1
}
0225デフォルトの名無しさん
2008/12/03(水) 22:30:44そのユーザってのはどういうレベルの人種を意図してるのかわからんけど、
プログラマならとりあえずUTF-32のコードポイント数を教えとけばいいと思うよ。
視覚的な文字数が必要なら、膨大な文字情報データベースが必要になって
標準ライブラリに入れられるようなもんじゃないと思う。
0226デフォルトの名無しさん
2008/12/03(水) 22:32:590か負か正で順序を返す関数だから、-1と-3に深い意味の違いはないよ。
0227224
2008/12/03(水) 22:40:460228デフォルトの名無しさん
2008/12/04(木) 01:36:040229デフォルトの名無しさん
2008/12/04(木) 18:08:18http://www.prowiki.org/wiki4d/wiki.cgi?ReferenceForTools/ExuberantCtags
日本語版にパッチを当ててみたが、うまく動作することを確認した。
しかしc.cを拡張しているからなのか、classのメンバはタグが作られていなかった。
本家でオフィシャルでサポートしてくれれば、状況は改善するだろうが……。
0230デフォルトの名無しさん
2008/12/04(木) 20:32:10Dをはじめようと思い、以下のソースを書きました。
import std.stream;
import std.cstream;
void main()
{
File inp = new File("input.txt", FileMode.In);
File oup = new File("output.txt", FileMode.OutNew);
foreach( string line; inp )
{
oup.writeLine(line);
dout.writeLine(line);
}
}
が、std\std.stream が見つかりませんエラーが発生します。
なぜなんでしょうか?
dmd1.030 を展開した状況でコンパイルしております。
0231デフォルトの名無しさん
2008/12/04(木) 21:43:53コマンドラインから?
0232デフォルトの名無しさん
2008/12/04(木) 21:51:050233デフォルトの名無しさん
2008/12/04(木) 22:43:14始めたきっかけは思い出せない。
0234デフォルトの名無しさん
2008/12/04(木) 23:14:19まあ、「D言語を題材としたプログラミング例」が少ないのは確かですな。
0235デフォルトの名無しさん
2008/12/05(金) 00:50:01sc.iniのDFLAGSどうなってるよ
0236デフォルトの名無しさん
2008/12/05(金) 01:01:070237デフォルトの名無しさん
2008/12/05(金) 09:07:16>>231
はい、インストールできたか確認をするために、簡単なものを確認しました。
>>235
DFLAGS="-I%@P%\..\import" -version=Tango -defaultlib=tango-base-dmd
-debuglib=tango-base-dmd
となっております。
これかなあ・・・phobosがないですし
0238デフォルトの名無しさん
2008/12/05(金) 09:38:290239デフォルトの名無しさん
2008/12/05(金) 12:22:31std.streamはphobosなんだから使えなくて当然。
Tango版をインストールしたならTangoを使わないと
0240デフォルトの名無しさん
2008/12/05(金) 12:43:01ありがとうございます。
やっぱり、そうですよねえ・・・・
夕べ自分で見直していて、そう思いました。
0241デフォルトの名無しさん
2008/12/06(土) 00:29:260242デフォルトの名無しさん
2008/12/06(土) 03:54:55次はwritef?(ln)?にフィルタを被せられるようにして欲しいな
0243デフォルトの名無しさん
2008/12/06(土) 13:01:01なんだってー
>>242
どんなのかコードで
0244デフォルトの名無しさん
2008/12/06(土) 14:23:560245デフォルトの名無しさん
2008/12/06(土) 18:57:52それをD向けに移植すればいいのではないかと思うのだが(Javaのは俺は見たことない)
0246デフォルトの名無しさん
2008/12/06(土) 19:36:54とかやらねばならんのは勘弁して欲しい
0247デフォルトの名無しさん
2008/12/06(土) 20:09:05というのは前に提案されているが
auto file = new EncordedStream(new File("hoge.txt"), "cp932"); // ファイルをcp932とする
auto eout = new EncordedStream(dout, "cp932");
eout.writefln("ほげ");//utf8からcp932に変換される
auto ein = new EncordedStream(din, "cp932");
string line = ein.readln(); // cp932からutf8に変換される
こんなんはどう?
0248デフォルトの名無しさん
2008/12/06(土) 21:16:110249デフォルトの名無しさん
2008/12/06(土) 21:38:550250デフォルトの名無しさん
2008/12/06(土) 23:57:45改めて見直すとtxとさほど変わらないわけですが
module std.estream;
のようなものを入れるとしたらtxにどんな不満がある?
tx.argvfix()はようやくいらなくなったね
0251デフォルトの名無しさん
2008/12/07(日) 04:05:25文字コードが打ち決めなのさえ変えればいいと思うよ。
0252デフォルトの名無しさん
2008/12/07(日) 07:27:040253デフォルトの名無しさん
2008/12/07(日) 12:50:51それを何らかの形に翻訳したデータ構造の入出力を行うリーダライタの二段階構造に
すべきだと思うんだよね。
要するに、入出力デバイスに関するコードはストリームに、
データの解釈や整形に関するコードはリーダライタに書いて、
それらを自由に組み合わせられるようにする。
現状の、ストリームにフィルタを被せるという方式だと、
派生ストリームを使うプログラマも、低レベルな入出力関数を
使えるけど、そういう状況はよろしくないと思う。
0254デフォルトの名無しさん
2008/12/07(日) 13:10:040255デフォルトの名無しさん
2008/12/07(日) 13:16:090256デフォルトの名無しさん
2008/12/07(日) 13:16:58.NETみたいなのがいいのか?
でもそれ
>>246
が面倒がってるんじゃないか?
0257デフォルトの名無しさん
2008/12/07(日) 13:34:55StreamとReader/Writerの2層はともかく
Encording層をどこに置くべきか悩む
0258デフォルトの名無しさん
2008/12/07(日) 13:37:06C++のstring = basic_string<char>みたいによく使う組み合わせにaliasがあるんなら
特に文句は無いのです。
当時はなんでこんなに標準クラス名が長いんだとか、Eclipse糞重たいとか、
演算子オーバーロード無いくせにStringで+演算子が使えるのは何故だとか
Javaにげんなりしていたので単にトラウマが刺激されただけです。
0259デフォルトの名無しさん
2008/12/07(日) 13:39:58encode、な。
0260デフォルトの名無しさん
2008/12/07(日) 13:42:31ほんとだすまん
0261デフォルトの名無しさん
2008/12/07(日) 13:43:16文字コード変換はTextReaderなりなんなりの仕事じゃないか。
現状ではStreamに文字列を書き込んだときのフォーマットは、
「自分が書き込んだのを読み込んだら同じになる」程度しか既定されてないのに
そこに文字コード変換の機能をつけるなんて無理無理だよ。
0262デフォルトの名無しさん
2008/12/07(日) 13:50:200263デフォルトの名無しさん
2008/12/07(日) 13:51:10Dangoじゃね?
0264デフォルトの名無しさん
2008/12/07(日) 13:59:33TextReaderとFileStreamをくっつけて
TextFileReaderとかはありだろうな。
名前が長くなるのはIDEでなんとかなる……と思う。
0265デフォルトの名無しさん
2008/12/07(日) 14:18:25じゃあnew EncodedStream(din, "cp932");じゃなくて
new EncodedTextReader(new File("hoge.txt", "cp932");
もしくは
new TextReader(new File("hoge.txt"), EncodingScheme.create("cp932"));
あとTextReader+FileにはTextFileReaderも用意して
ちなみに誰かEncodingSchemeCP932書いてない?
不勉強なので既にあったとしてもどれがShiftJIS相当なのかわからん
0266デフォルトの名無しさん
2008/12/07(日) 15:03:221つめの例、括弧たりないね。
new EncodedTextReader(new File("hoge.txt"), "cp932");
こういうことでいいのかな?
0267デフォルトの名無しさん
2008/12/07(日) 15:10:430268デフォルトの名無しさん
2008/12/07(日) 15:30:40/+
class EncodingSchemeUtf8 : EncodingScheme
{
static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeUtf8");
}
+/
auto e = EncodingScheme.create("std.encoding.EncodingSchemeUtf8");
>a.exe
std.encoding.EncodingException: Unrecognized Encoding: std.encoding.EncodingSchemeUtf8
なんて書けばいいの
0269デフォルトの名無しさん
2008/12/07(日) 15:50:56EncodingScheme.createの引数は、
Object.create("std.encoding.EncodingSchemeUtf8").toString
0270デフォルトの名無しさん
2008/12/07(日) 15:59:530271デフォルトの名無しさん
2008/12/07(日) 16:14:37auto e = EncodingScheme.create(Object.create("std.encoding.EncodingSchemeUtf8").toString);
a.d(5): Error: no property 'create' for type 'object.Object'
...
なので
auto e = EncodingScheme.create(Object.factory("std.encoding.EncodingSchemeUtf8").toString());
object.Error: Access Violation
あれ?
0272デフォルトの名無しさん
2008/12/07(日) 16:58:53Tangoのこの辺がわかりにくいのだが・・・こうか?
Conduit(FileConduit/SocketConduit/...) * Stream(LineStream/UtfStream/...)
>>265は
Stream(ConsoleStream/FileStream/StringStream/SocketStream/...)
* Reader/Writer(LineReader/FormattedWriter/...)
* Encoding("CP932"/...)
対応関係は
>>265 | Tango
Stream | Conduit
Reader/Writer | Stream
Encoding | Streamの一部
Encodingを一般化したTranslater(Filter)も考えたが
そもそもReader/WriterとTranslaterを別にしてもメリットないか?
0273デフォルトの名無しさん
2008/12/07(日) 17:48:19それで、土管の中を流れるのがStreamなのか。
0274デフォルトの名無しさん
2008/12/07(日) 18:50:05ttp://codepad.org/jTNOTqcL
0275デフォルトの名無しさん
2008/12/07(日) 19:29:030276デフォルトの名無しさん
2008/12/07(日) 22:53:460277デフォルトの名無しさん
2008/12/08(月) 10:32:18文字列から文字列へ変換する関数がないのは使いづらすぎる。
0278デフォルトの名無しさん
2008/12/08(月) 11:43:33よりハイレベルのライブラリをこの上に構築せねば
0279デフォルトの名無しさん
2008/12/08(月) 11:54:51typedef ubyte CHAR;
alias invariant(CHAR)[] STRING;
でエンコードごとに文字列型を作るアプローチを採ってるじゃないか!
0280デフォルトの名無しさん
2008/12/08(月) 20:52:17import std.bigint;
void main(){
BigInt x,y;
x = "1_0000_0000_0000_0000_0000_0000_0000_0000"
~"_0000_0000_0000_0000_0000_0000_0000_0000";
y = "1_0000_0000_0000_0000_0000_0000_0000_0000"
~"_0000_0000_0000_0000_0000_0000_0000_0000";
writefln(x*y);
}
なぜか結果が99999999999960597993785257531857664400770054262477057386034207
084416955692331543239945395293578420218806492958866804047385460736になった。
いつのまにか多倍長整数が標準になってると思ったけどまだダメか。
0281デフォルトの名無しさん
2008/12/09(火) 03:25:47BigInt x,y;
x = 1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
y = 1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
writefln(x*y);
}
0282デフォルトの名無しさん
2008/12/09(火) 12:25:18void main(){
BigInt x = 1_000_000_000_000;
writefln(x * x); // 999981553255926290448384
}
bigint信用できなすぎワロタ
std.bigint.mulInner内のupdateShrをupdateUShrにすれば直せるってことは分かったが
libの再コンパイルの仕方が分からん
0283デフォルトの名無しさん
2008/12/09(火) 12:56:180284282
2008/12/09(火) 20:49:42druntime.libがないと言われてどーなってるんだと悩んでたが
普通にこっちもmakeすればいいだけだった…
いわれるまで気付かなかったorz ありがとー
0285デフォルトの名無しさん
2008/12/09(火) 21:05:150286デフォルトの名無しさん
2008/12/09(火) 23:26:33EncodingSchemeUtf8が抽象クラスになってて実体化できない。
0287デフォルトの名無しさん
2008/12/09(火) 23:58:39えええええええええ(´・ω・`)
0288デフォルトの名無しさん
2008/12/10(水) 11:37:08std.encodingはそういうものなのか?
本当にインタフェース だけ を規定しているのか?
0289デフォルトの名無しさん
2008/12/10(水) 13:01:17いや、そんな大げさなことじゃなくて、単にvtblに穴があるからアクセス違反なってるだけなんだけど。
0290デフォルトの名無しさん
2008/12/10(水) 13:51:01でも EncodingSchemeUtf8の static thisが実行されてなくて
Unrecognized Encoding:〜が出る。
それだけの話。
スキームの別名は、std.encodingのページを見るか
ソースを見るかすれば書いてある。
0291デフォルトの名無しさん
2008/12/10(水) 16:13:320292デフォルトの名無しさん
2008/12/10(水) 17:13:18EncodingScheme.register("std.encoding.EncodingSchemeUtf8");
auto e = EncodingScheme.create("UTF-8");
直接作るか
auto e = new EncodingSchemeUtf8;
で使えるんじゃね?
0293デフォルトの名無しさん
2008/12/10(水) 21:10:530294デフォルトの名無しさん
2008/12/11(木) 01:05:30せめてデストラクタでオブジェクトのインスタンスのdeleteが行えたり
確実に呼ばれる保証がないと使いようがないんじゃないかと思うんだが…
0295デフォルトの名無しさん
2008/12/11(木) 01:15:15いまのところscopeクラスにしてRAII強制するしか使い道がない。
でもこれも、scopeメンバフィールドがないと意味がない。
0296デフォルトの名無しさん
2008/12/11(木) 01:20:21既に破棄されているオブジェクトをdeleteするのもダメだっけ?
0297デフォルトの名無しさん
2008/12/11(木) 01:58:020298デフォルトの名無しさん
2008/12/11(木) 02:00:44再利用されてたら関係ないオブジェクト消しそうな気がするが…
0299デフォルトの名無しさん
2008/12/11(木) 10:11:30class Point {
int x , y;
this(int x , int y) {
this.x = x;
this.y = y;
}
~this() {
stdout.printf("Delete Point Object %d, %d\n" , x , y);
}
}
int main() {
Point point = new Point(100 , 70);
stdout.printf("1\n");
delete point;
stdout.printf("2\n");
Point point2 = new Point(100 , 70);
stdout.printf("3\n");
delete point;
stdout.printf("4\n");
delete point2;
return 0;
}
0300デフォルトの名無しさん
2008/12/11(木) 10:19:450301デフォルトの名無しさん
2008/12/11(木) 10:22:490302デフォルトの名無しさん
2008/12/11(木) 10:31:00アウトだね。これがあるからdeleteは完全に自分で寿命管理できるオブジェクトにしか使えない。
import std.stdio;
class C {
int x;
this(int x) { this.x = x; }
~this() { writefln("C(%s) deleted", x); }
}
void main() {
auto c1 = new C(1);
auto c1p = c1;
delete c1p;
auto c2 = new C(2);
delete c1;
}
0303デフォルトの名無しさん
2008/12/11(木) 13:14:24http://codepad.org/FPc7ZrRp
0304デフォルトの名無しさん
2008/12/11(木) 14:46:11auto c1p = c1;
delete c1p;
によってc1pはnulになっても
c1がnulにならないのが問題なんでしょ
単に二回dekete(delete c1p; delete c1p;)とかと
既に破棄されているオブジェクトをdelete
とはニュアンスが違うような
>>298>>302-303の言いたいことはわかる
0305デフォルトの名無しさん
2008/12/11(木) 14:50:23(呼ばれても実行されないから)
意味がないって言ってるんじゃないかな
これも>>301に書いてあるけど
0306デフォルトの名無しさん
2008/12/11(木) 15:01:240307デフォルトの名無しさん
2008/12/11(木) 17:03:16ptr = nul; を徹底した方が良いじゃないかな
0308デフォルトの名無しさん
2008/12/11(木) 17:12:500309294
2008/12/11(木) 20:38:17デストラクタは呼ばれない可能性を考慮すると、C言語のfree関数みたいなことをすることができない。
デストラクタからオブジェクトへのアクセスも不正だから明示的なメモリ開放も不可能。
(というかそもそもdeleteでのメモリ開放は望めないのか…)
…じゃあデストラクタで何すればいいの?ってかなんであるの?というのが本来の疑問。
0310デフォルトの名無しさん
2008/12/11(木) 20:50:04が
auto x = expr;
scope(exit) delete x;
のシンタックスシュガーで、一応deleteも直接使えるようにしてあるだけなんだと思う。
0311デフォルトの名無しさん
2008/12/11(木) 20:55:080312デフォルトの名無しさん
2008/12/11(木) 22:12:14リソースを close すべき時は、きっちり close しておけ。
ptr = null; なんてのはタイミング不明瞭なんだからそんなものに期待しちゃいかん。
中身が純粋データなら何の問題もないが。
0313デフォルトの名無しさん
2008/12/11(木) 22:18:35auto f = new File(...);
scope(exit) f.close;
0314デフォルトの名無しさん
2008/12/11(木) 22:20:04リソース解放の最終手段のためにあるんだ。
うっかり close 忘れちゃってポインタも破棄された場合に、
ガベコレで回収されるときに、オイオイまだリソース残ってやがるぞといいながら close すると。
リソースを持つクラスを作るなら、close メソッドの実装は必須、
同時にデストラクタにも解放機能をつけておく。
ただ、あくまで「保険」であって、クラスを使う側はデストラクタが解放してくれると期待してはいかんのよ。
0315デフォルトの名無しさん
2008/12/11(木) 22:31:400316デフォルトの名無しさん
2008/12/11(木) 23:29:02それがDのポリシーじゃなかったのか
0317デフォルトの名無しさん
2008/12/11(木) 23:40:14IDisposableだっけ。あれはいいアイデアだと思う
0318デフォルトの名無しさん
2008/12/12(金) 05:24:06>クラスを使う側はデストラクタが解放してくれると期待してはいかんのよ。
まさかのときに期待できないのに保険ですかw
0319デフォルトの名無しさん
2008/12/12(金) 08:36:38それなりにありがたみがあるんですよ。
バグっていてもそれなりに動くというのがミソ。
0320デフォルトの名無しさん
2008/12/12(金) 08:46:48close しないとリソース駄々漏れってケースもあるんだよなぁ。
ガベコレしてるから大丈夫なんて考えてると痛い目にあう。
0321デフォルトの名無しさん
2008/12/12(金) 11:10:13どうすればええんでしょう。
0322デフォルトの名無しさん
2008/12/12(金) 11:20:200323デフォルトの名無しさん
2008/12/12(金) 11:42:00何がおかしいんでしょうか。
0324デフォルトの名無しさん
2008/12/12(金) 11:46:31dsss --help
とかしてもそのエラーが出るのか?
0325デフォルトの名無しさん
2008/12/12(金) 11:46:34何をやってもって、dsssを無引数で実行してもそうなったってこと?
0326デフォルトの名無しさん
2008/12/12(金) 13:04:40>ガベコレでしか呼ばれないデストラクタは
>リソース解放の最終手段のためにあるんだ。
scope outで呼ばれる関数がないと使い物にならんという話だろ
0327デフォルトの名無しさん
2008/12/12(金) 13:09:25ガベージコレクト時に駆動される関数って必要か?
0328デフォルトの名無しさん
2008/12/12(金) 13:13:49結局のところ、scope out でのデストラクタと、GC でのファイナライザの
両方の関数が必要ってことかなぁ。
個人的には scope out で close 実行させとけばいいじゃんと思ってるので、
あんまり気にしてないんだけど。
0329デフォルトの名無しさん
2008/12/12(金) 14:49:28そのcloseを自動化するためのシンタックスシュガーが欲しいって話だよ。
プログラマがclose書き忘れたらリソースリークするんじゃ、GCがあっても何の意味もない。
0330デフォルトの名無しさん
2008/12/12(金) 15:06:18しかもその(ガベコレ時でない)場合はメンバ触ってもOK、って仕様に書いてあるっぽいけど、
問題あるの?
0331デフォルトの名無しさん
2008/12/12(金) 15:22:13プログラマがdeleteしたかGCかdeleteしたかをデストラクタから判別する方法がないから、
デストラクタでメンバを触りたいときはscopeクラスにする必要がある。
で、scopeクラスは非常に使い勝手が悪い。
0332デフォルトの名無しさん
2008/12/12(金) 15:26:24そういえば人生のデストラクタまだ書いてないわ
もれの死体はだれが片付けてくれるんだろう
0333デフォルトの名無しさん
2008/12/12(金) 15:27:410334デフォルトの名無しさん
2008/12/12(金) 15:28:19super.sleep;
delete this;
}
0335デフォルトの名無しさん
2008/12/12(金) 16:17:55お前のリソースの所有権は俺が引き継ぐようにしとこう
0336デフォルトの名無しさん
2008/12/12(金) 17:18:140337デフォルトの名無しさん
2008/12/12(金) 18:27:07> プログラマがdeleteしたかGCかdeleteしたか
メンバを触れるか否かが(scopeクラスか否かではなく)その一点で
決まるわけだから、それは判定できる仕様であるべきだろな。
0338デフォルトの名無しさん
2008/12/12(金) 19:28:28>>314の言うような保険や、リソースのリーク検出のためのassert文を書くのはいいかもしれない。
scopeクラスなら確実にデストラクタが呼ばれるけれど、やはりあれは使い勝手悪過ぎだと思う…
0339デフォルトの名無しさん
2008/12/12(金) 19:42:38死して屍拾うもの無し 死して屍拾うもの無し
0340デフォルトの名無しさん
2008/12/12(金) 20:17:39僕は、
「このプログラムは不正な処理を行ったので強制終了されます。保存していないデータはすべて失われます。」
という意味に理解しています。
0341デフォルトの名無しさん
2008/12/12(金) 20:31:22KYすぎてわらたw
0342デフォルトの名無しさん
2008/12/12(金) 20:32:04KYすぎてわらた
0343デフォルトの名無しさん
2008/12/12(金) 20:32:530344デフォルトの名無しさん
2008/12/12(金) 20:35:120345デフォルトの名無しさん
2008/12/12(金) 20:36:440346デフォルトの名無しさん
2008/12/12(金) 20:39:140347デフォルトの名無しさん
2008/12/12(金) 22:14:190348デフォルトの名無しさん
2008/12/12(金) 22:44:360349デフォルトの名無しさん
2008/12/12(金) 22:57:44デストラクタが呼ばれない状況ってどんなの?
0350デフォルトの名無しさん
2008/12/12(金) 23:11:20ttp://d.hatena.ne.jp/yukkepc/20081119/1227056997
scopeクラスってそんなに使いづらい?
0351デフォルトの名無しさん
2008/12/13(土) 00:12:37そんなこと分からなくても、メンバオブジェクトが既にdeleteされているかを知れれば十分なんでない?
そのくらいGCに問い合わせれば分かりそうだけど、そういう機能ないのかな。
0352デフォルトの名無しさん
2008/12/13(土) 00:32:08ファイナライザが二度呼ばれないことは保証されてるから、
GC.getAttr(cast(void*)obj)&GC.BlkAttr.FINALIZE
でいいのかもしれない。
とりあえず、
void f(){
auto o = new Object;
auto o2 = o;
assert(GC.getAttr(cast(void*)o)&GC.BlkAttr.FINALIZE);
delete o2;
assert(GC.getAttr(cast(void*)o)&GC.BlkAttr.FINALIZE);
}
は、期待通りdelete後のassertでAssertion failureになった。
0353デフォルトの名無しさん
2008/12/13(土) 00:50:05auto o = new Object;
auto o2 = o;
writeln(GC.getAttr(cast(void*)o)&GC.BlkAttr.FINALIZE); // 1
delete o2;
writeln(GC.getAttr(cast(void*)o)&GC.BlkAttr.FINALIZE); // 0
new Object;
writeln(GC.getAttr(cast(void*)o)&GC.BlkAttr.FINALIZE); // 1
}
0354デフォルトの名無しさん
2008/12/13(土) 00:58:380355デフォルトの名無しさん
2008/12/13(土) 01:02:050356デフォルトの名無しさん
2008/12/13(土) 03:52:40とりあえずこうすれば確実にデストラクタを呼ぶようになるかな?
確実に呼ばれるならデストラクタでリソースの解放とかができる。
0357デフォルトの名無しさん
2008/12/13(土) 08:39:41class X
{
Resource r = null;
this()
{
r = new Resource();
}
void close()
{
if (r)
{
r.close();
r = null;
}
}
~this()
{
close();
}
}
この程度で必要十分だと思ってるけど、それ以上必要か?
0358デフォルトの名無しさん
2008/12/13(土) 08:43:340359デフォルトの名無しさん
2008/12/13(土) 09:04:09class A{
~this(){ writefln(`~this!`); }
static ~this(){ writefln(`static ~this!`); }
}
void main(){
auto a = new A;
}
で試したけど呼ばれてるよ?
tangoだとダメとか?
0360デフォルトの名無しさん
2008/12/13(土) 09:18:240361デフォルトの名無しさん
2008/12/13(土) 09:39:16GodJob ! b
0362デフォルトの名無しさん
2008/12/13(土) 10:00:01static ~thisを利用すれば、終了時に漏らさず各~thisを呼べるわけか。
オブジェクトのポインタ値はGCによる再配置で変わりうるらしいから、
private static bool[void*] _map;
ってのの、ポインタをキーにするのはまずいかも。
>>357
ガベージコレクトで~this経由でclose呼び出された場合に、
rが解放済みだとまずいことになるよ。rの参照オブジェクトが先に解放されても、
rが自動的にnullになってくれたりはしなかった。
>>359
tangoだと普通に呼ばれないのか。
aがstaticだったりグローバル変数だったりするとDMDでも呼ばれなかったよ。
0363デフォルトの名無しさん
2008/12/13(土) 13:08:04静的デストラクタの呼ばれる順序って制御できないから、
まだ必要なのに解放されちゃうことあるよね。
0364デフォルトの名無しさん
2008/12/13(土) 13:45:23foreachで列挙中にremoveするのって大丈夫だっけ?
0365デフォルトの名無しさん
2008/12/13(土) 14:35:14>>356のような方法で解放して良いのはGCで管理してないリソースだけになると思う
ただ、確実に解放したいものってCのライブラリのハンドルとかそういうものなので、
今のところそれで困らないかなぁ
0366デフォルトの名無しさん
2008/12/13(土) 14:58:46継承したとき親のstatic~thisは呼ばれるのか
0367デフォルトの名無しさん
2008/12/13(土) 17:48:040368デフォルトの名無しさん
2008/12/13(土) 17:58:350369デフォルトの名無しさん
2008/12/13(土) 18:06:31rがnullにならないのはgcがたぶん別スレッド扱いになってるから。
その場合は r.close(); r = null; をアトミックになるようにすればいい。
0370デフォルトの名無しさん
2008/12/13(土) 18:14:11いや、そういうこと言ってるんじゃないでしょ。
GCがrをdeleteしてから、Xのデストラクタが呼ばれる場合があるってこと。
そのばあい、rはnullにはならないからr.closeが実行されてしまう。(が、これは不正)
0371358
2008/12/13(土) 20:40:58GCによる再配置と静的デストラクタ内での利用か…これは考えてなかった…
あと、静的コンストラクタ内でも使えないな。
ちょっと正直あれ以上は思いつかない…
(というかこういうことを考えると、静的コンストラクタと静的デストラクタではオブジェクトは使わない方がいいのでは…という気も)
後はみんなで煮るなり焼くなり好きにして…
0372デフォルトの名無しさん
2008/12/13(土) 21:38:160373デフォルトの名無しさん
2008/12/13(土) 21:39:37・オブジェクトの持つリソースの解放
・オブジェクトの後片付け
はどこに書けばいいんだ?
0374デフォルトの名無しさん
2008/12/13(土) 21:40:39同じ場所で表示するために、バックするかリフレッシュしたいのですがどうすればいいでしょうか。
0375デフォルトの名無しさん
2008/12/13(土) 22:13:440376デフォルトの名無しさん
2008/12/13(土) 22:26:040377デフォルトの名無しさん
2008/12/13(土) 22:54:080378デフォルトの名無しさん
2008/12/13(土) 22:58:470379デフォルトの名無しさん
2008/12/13(土) 23:51:08まえはあった
0380デフォルトの名無しさん
2008/12/14(日) 09:44:12いつかのバージョンから駄目になった
0381デフォルトの名無しさん
2008/12/14(日) 09:52:58ループ中PC全体が操作できなくなるので、sleep挟みたいんですが。
>import std.stdio , std.thread;
>void main(){
> for(int i = 0 ; i < 100000 ; i ++){
> writef(i );
> Thread.sleep( 500 );
> }
>}
>hell.d(5): Error: no property 'sleep' for type 'std.thread.Thread'
>hell.d(5): Error: function expected before (), not 1 of type int
0382デフォルトの名無しさん
2008/12/14(日) 13:12:030383デフォルトの名無しさん
2008/12/14(日) 14:44:10レス遅くてすいません。
その通りです。
0384デフォルトの名無しさん
2008/12/14(日) 14:44:490385デフォルトの名無しさん
2008/12/14(日) 14:45:32Error: 4invalid UTF-8 sequence
こんな感じです
0386デフォルトの名無しさん
2008/12/14(日) 14:46:090387デフォルトの名無しさん
2008/12/14(日) 15:04:340388デフォルトの名無しさん
2008/12/14(日) 15:12:060389デフォルトの名無しさん
2008/12/14(日) 15:20:39・dsssやrebuildに関するファイルを書き変えた
・環境変数PATHに日本語が混じってる
・カレントディレクトリに日本語が混じってる
くらいしか思いつかないや。
0390デフォルトの名無しさん
2008/12/14(日) 18:58:52環境設定のPATHの中にあっても駄目なんですね・・・
ありがとうございました。
0391デフォルトの名無しさん
2008/12/14(日) 19:13:26ちょっと見た感じ、
http://www.dsource.org/projects/dsss/browser/trunk/rebuild/util/str.d
この、1389行目あたりがあやしい気がする。
0392デフォルトの名無しさん
2008/12/14(日) 20:21:47New/Changed Features
* Changed IUnknown to use the extern(System) interface rather that extern(Windows).
* Pure functions now get semantically checked.
* Nothrow functions now get semantically checked.
* shared is now a type constructor.
0393デフォルトの名無しさん
2008/12/14(日) 20:27:360394デフォルトの名無しさん
2008/12/14(日) 20:34:560395デフォルトの名無しさん
2008/12/14(日) 21:18:060396デフォルトの名無しさん
2008/12/14(日) 22:00:57ありがとうございます、でもsleepは成功したんですけどループ内のwritef(i)の動作がおかしいです。
十周してからまとめてwritef(i)が表示されてしまいます、どうしてなんでしょう?
import std.stdio , std.c.time;
void main(){
for(int i = 0 ; i < 10 ; i ++){
writef(i );
sleep(1);
} }
0397デフォルトの名無しさん
2008/12/14(日) 22:10:550398デフォルトの名無しさん
2008/12/14(日) 22:19:57解決策は直ぐに見つからないかも、とりあえずprintfだと大丈夫みたい。
0399デフォルトの名無しさん
2008/12/14(日) 22:29:500400デフォルトの名無しさん
2008/12/14(日) 22:40:01とりあえずこんな感じでできました、どうもありがとう
import std.stdio , std.c.time;
void main(){
for(int i = 0 ; i < 5 ; i ++){
write(i);
sleep(1);
flushall();
} }
0401デフォルトの名無しさん
2008/12/14(日) 22:41:03それはGCのバグというんじゃないのか?
rを先にdeleteするケースはどこにどう存在するんだ?
0402デフォルトの名無しさん
2008/12/14(日) 22:44:11GCには詳しくないので全くの想像で言うと
メンバオブジェクトの所有関係をGCが把握してないってことなのかなと
0403デフォルトの名無しさん
2008/12/14(日) 22:44:43http://www.kmonos.net/alang/d/2.0/class.html#staticdestructor
>静的デストラクタは、 対応する静的コンストラクタが正常に実行完了しているときのみ、
> プログラムの終了時に呼び出されます。
> 静的デストラクタは空の引数リストを持ちます。
> 静的デストラクタは、 静的コンストラクタの呼び出しと逆順で実行されます。
この仕様は嘘ということですか?
0404デフォルトの名無しさん
2008/12/14(日) 22:54:14import std.stdio;
class A{
B o = null;
~this(){
writeln("A");
if(o){
writeln("A1");
delete o;
}
}
}
class B{
~this(){
writeln("B");
}
}
void main(){
auto a = new A;
auto b = new B;
a.o = b;
}
これで、手元ではB→A→A1の順に表示された。
つまり、Aのデストラクタに入る前にBが処分されちゃってるのに、
A1に入ってBをdeleteしちゃってる、ってことになる。
こういうオブジェクトの解放順序になることもあるからメンバオブジェクト触んな、
ってのは仕様に書いてあるとおり。
0405デフォルトの名無しさん
2008/12/14(日) 23:09:58リソースを外から渡してるからちょっとそれはないなぁという感じ。
それとデストラクタとメモリアロケートの話とごっちゃになってないか?
デストラクタが動いたあとで、メモリアロケートを解放するのは正当動作だと思うぞ。
0406デフォルトの名無しさん
2008/12/14(日) 23:31:47このrはXからしか参照されていないので、コレクトの対象になるのは、Xがコレクトの対象になったとき。
このとき、rとXのどちらが先に開放されるかは決まってない(循環参照の場合があるから)。
>>403
コンストラクタと逆順で実行されると言っているだけで、プログラマが制御できるわけじゃないでしょ。
それに、そもそも制御できたとしても静的デストラクタで相互に使用される場合などは、どうしようもない。
0407デフォルトの名無しさん
2008/12/14(日) 23:47:25C.o.__dtorが先に表示されたよ(Windows)
----
import std.stdio;
class C {
Object o;
this() {
o = new class {
~this() {
writeln("C.o.__dtor");
}
};
}
~this() {
writeln("C.__dtor");
}
}
void main(){
new C;
}
0408405
2008/12/14(日) 23:55:46これ GC のバグだよなぁ。解放順の定義がまずいんだと思う。
これだとデストラクタに何も処理書けないよ。
0409デフォルトの名無しさん
2008/12/15(月) 00:00:460410デフォルトの名無しさん
2008/12/15(月) 00:03:01Java言語仕様では、オブジェクトツリーの末端から finalize されることが保証されてる。
循環参照はちょっとわからん。
0411デフォルトの名無しさん
2008/12/15(月) 00:17:22まあそもそも、ファイナライザ自体が最終手段に近い扱い
0412デフォルトの名無しさん
2008/12/15(月) 00:20:23> コンストラクタと逆順で実行されると言っているだけで、プログラマが制御できるわけじゃないでしょ。
静的コンストラクタの順序もある程度仕様で決まってるよ。
モジュールの依存関係とソース上の出現順にしたがう。
(まあ、自由に操れるわけじゃないから、問題になる状況が無くなるわけじゃなかろうが)
> それに、そもそも制御できたとしても静的デストラクタで相互に使用される場合などは、どうしようもない。
仕様で定まる順序でもなお解放順序が問題になる場合は依然としてアウトだな。
そうでない場合は有効なテクニックだと思う。
「確実に呼び出される」のと「順序がある程度定まる」ってのがあのコードのポイントだな。
0413デフォルトの名無しさん
2008/12/15(月) 00:29:00.NETだとファイナライザの呼び出し順は不定。
ただし、ファイナライザの中では、自分が参照を持っているオブジェクトは
(ファイナライズ済みであったとしても)解放されていないことは保障されている。
つまり、解放すべきオブジェクトをいったん列挙して、全部ファイナライズしてからメモリを回収していく感じ。
実際は、世代型GCだからもっと複雑。よう知らんけど。
0414デフォルトの名無しさん
2008/12/15(月) 00:34:580415デフォルトの名無しさん
2008/12/15(月) 01:16:35メソッドはもう呼べないみたいだ。
object.Error: Access Violation 出して死ぬ。vptr 壊されてるって感じかなぁ。
.NET の実装に近いのかな。
メモリが解放済みなのかそうでないのかをしようと delete メソッド追加してみたら
デストラクタの呼び出しが後に回された(A→A1→Bになった)ので、
GCの挙動と違う。確認困難だな。
>>410
修正。Java の finalize は呼び出し順自体は不定が正解。
ただ、finalize 後、メモリを解放できるかどうかは参照ツリーに従うことになる。
finalize していないオブジェクトから参照されていたらメモリは解放されない。
.NET と動きは同じか。
0416デフォルトの名無しさん
2008/12/15(月) 01:42:170417デフォルトの名無しさん
2008/12/15(月) 02:05:420418デフォルトの名無しさん
2008/12/15(月) 02:37:26すべてのオブジェクトが確実に開放される保証がないことではなかったのか?
だからデストラクタでリソースの解放ができないとかそういうの。
0419デフォルトの名無しさん
2008/12/15(月) 02:43:230420デフォルトの名無しさん
2008/12/15(月) 02:53:23* 必ず呼ばれないとデストラクタの意味ないだろ…常識的に考えて
* デストラクタでメンバ触れないならリソースの解放できねえだろヴォケ
って具合に問題点は二つ挙がってて議論は同時進行中。
0421デフォルトの名無しさん
2008/12/15(月) 03:17:51べつに触ってもおkなんだぜ。
もしかして、プログラム終了時だけでなく、通常時にGCで回収される場合も
デストラクタ呼ばれることは保証されないのかな?
となると、scopeなりdeleteなりは必須になるから、delete忘れが問題になりそうな気が。
0422デフォルトの名無しさん
2008/12/15(月) 03:29:03// @Digital Mars D Compiler v1.038
interface I
{
void hige();
}
final class A: I
{
// main.d(9): function main.A.hige does not override any function
override void hige(){}
}
void main()
{
auto a = new A;
}
おかしいだろ…orz
0423デフォルトの名無しさん
2008/12/15(月) 03:50:360424422
2008/12/15(月) 03:52:11// @Digital Mars D Compiler v1.037
class C
{
final override void foo(){}
}
何も継承してないのにこれが通るのがおかしいんじゃね?って
http://d.puremagic.com/issues/show_bug.cgi?id=2501
ここでい言ってるのを見たをるたーたんが
「final と override が共存してるのは意味が競合してる」
って勘違いしたんじゃないのか?(予想
0425デフォルトの名無しさん
2008/12/15(月) 03:55:30誰かpure関数に違反する関数を書いてエラーになる?
0426デフォルトの名無しさん
2008/12/15(月) 04:15:05それは前からもったいないと思っていたんだ
スレッド形式のD専用掲示板欲しくない?
作っても誰も使わないかな?
それともML有効活用する?
0427デフォルトの名無しさん
2008/12/15(月) 06:42:35話の続きしたいなら、いくらでも蒸し返してくれたらいいんよ。
10レス100レス1000レス離れてたって構わない。
それがないのは、つまり議論を継続するネタが尽きたということだと思うよ。
仮に話題ごとにスレッドであったとしても、もうあとは沈んでいくだけ。
0428デフォルトの名無しさん
2008/12/15(月) 07:04:310429デフォルトの名無しさん
2008/12/15(月) 09:20:550430デフォルトの名無しさん
2008/12/15(月) 11:18:07int g;
pure void f() {
g = 1;
}
: Error: pure function 'f' cannot access mutable static data 'g'
----
struct S { int x; }
pure void f(S* s) {
s.x = 1;
}
: Error: cannot modify const/invariant (*s).x
0431デフォルトの名無しさん
2008/12/15(月) 14:30:18http://www.erights.org/
0432デフォルトの名無しさん
2008/12/15(月) 16:02:300433デフォルトの名無しさん
2008/12/15(月) 16:10:590434デフォルトの名無しさん
2008/12/15(月) 16:18:16C言語のcgiが許可されている所ならどこでも動く。コンパイルがちと面倒かもしれんが。
自分の場合はhostも借りてるホスティングサービスもLinuxなので楽だった。静的リンクする必要はあったが。
さくらサーバだとFreeBSDなのでgdcのクロスコンパイルが面倒とかどこかで見た覚えがある。
0435デフォルトの名無しさん
2008/12/15(月) 16:21:48FAQ読んだらライブラリに付けるとウマーみたいなこと書いてあったけど
エロい人教えて
0437デフォルトの名無しさん
2008/12/15(月) 16:30:09pure関数のことちょっと誤解してた
CTFEとは関係ないんだな
0438デフォルトの名無しさん
2008/12/15(月) 16:32:08CTFEできるという保証としての目印として便利だし、シグネチャ異なるからオーバーロードも可能だし(現状ではメリット無いけど)、最適化にも有利だし(実装されているかは別として)。
0439デフォルトの名無しさん
2008/12/15(月) 16:47:26再帰やアウトオブオーダーな最適化ができたり並列化(スレッドセーフに)できたりラムダ計算が気軽になったりその他。
pureな世界だけは静的型付けのある関数型言語の特性を持たせられると。
その意味では、数少ない真のマルチパラダイム言語かもしれない。
OCamlとかHaskellとかぶるようになるかな
0440デフォルトの名無しさん
2008/12/15(月) 16:53:17それじゃあinlineと同様に「コンパイラがpureの性質を活かすように頑張ってくれる」程度で考えておいたらいいのかな
pureかどうかはコンパイラが賢かったら判別できるはずだし
(実際>>430みたいにコンパイルエラー出るんだから)
一番の利点はプログラマがpureに書いたつもりなのにそうじゃなかったってケースをなくせることくらいか?
0441デフォルトの名無しさん
2008/12/15(月) 17:56:01別の翻訳単位のpure関数を呼んでいるときに
pureのマークがないと活かせないわな
0442デフォルトの名無しさん
2008/12/15(月) 22:20:400443デフォルトの名無しさん
2008/12/15(月) 23:03:100444デフォルトの名無しさん
2008/12/16(火) 00:58:03今から始めるのだけど、慣れてる eclipse が使いたいなぁ〜というかんじで。
0445デフォルトの名無しさん
2008/12/16(火) 01:48:290446デフォルトの名無しさん
2008/12/16(火) 03:52:300447デフォルトの名無しさん
2008/12/16(火) 03:53:000448デフォルトの名無しさん
2008/12/16(火) 19:22:13ループが出来るようにするだけでえらい疲れるね?
0449デフォルトの名無しさん
2008/12/16(火) 19:40:16そんな根性無しでも労なく扱えて設定カスタマイズも容易なD用IDEがあったらなあ。
インテリセンスとかとりあえずいいから。
0450デフォルトの名無しさん
2008/12/16(火) 20:06:350451デフォルトの名無しさん
2008/12/16(火) 20:31:34descent と Mmrnmhrmを比べた結果、descent を使うことにしますた。
MMR も基本的な機能は持っているのだけど、コードフォーマッターが使えなかったり、
インデントそろえるのが変だったり、
結局ビルドは dsss の rebuild という奴を使わなくてはいけないようだったり、
結局、先発の分 descent のほうが便利かなーとおもった。
で、descent で dsss やら rebuild 使うよりは ant を使う方が良いっぽい。
ソースを src フォルダにおいて、オブジェクトファイルを obj において〜というのがどうもうまくいかなかった。
ant に関してはここが参考になった。
http://www5.atwiki.jp/yaruhara/pages/74.html
build.xml を作ってビルダーとして登録するとビルドできた。
とりあえずの報告まで。
0452デフォルトの名無しさん
2008/12/16(火) 21:04:33・テキストエディタとして使いやすいかどうか
・F5押してコンパイルリンクランできるかどうか
・全ての操作をキーボードだけで行うことができるかどうか、つまりマウスレス
IDEでなくていいなら、最近はeditraやnotepad++みたいなエディタもあるからいいね
コマンドランチャとmake, ant, rake, バッチやシェル機能なんかを
いろいろ組み合わせればIDEに及ばなくても
近いことやそれ以外のことまでできるから、そういう選択肢もある
設定が面倒くさいけど
0453デフォルトの名無しさん
2008/12/16(火) 21:10:21結局エディタ使っちゃってるんだよなあ。
0454デフォルトの名無しさん
2008/12/16(火) 22:46:29main.d => main
WARNING: Module main.d does not have a module declaration. This can cause proble
ms
with rebuild's -oq option. If an error occurs, fix this first.
OPTLINK (R) for Win32 Release 8.00.1
Copyright (C) Digital Mars 1989-2004 All rights reserved.
OPTLINK : Warning 23: No Stack
OPTLINK : Warning 134: No Start Address
というエラーが。
これ一体どういう意味なんでしょうか
0455デフォルトの名無しさん
2008/12/16(火) 22:54:52module main;
って書いてないとか?
0456デフォルトの名無しさん
2008/12/16(火) 22:56:29No Start Address ってことは、main() 関数を書いてないんじゃないか?
0457デフォルトの名無しさん
2008/12/16(火) 23:01:21mainはさすがに書いてますw
dmdとかrebuildでは普通に通ったので、dsssはmodule付けてないと駄目だったようです。
0458デフォルトの名無しさん
2008/12/17(水) 01:38:550459デフォルトの名無しさん
2008/12/17(水) 02:37:17今回のリリースって、もしかして地雷か?
0460デフォルトの名無しさん
2008/12/17(水) 07:47:37大学で使ったことある教授におめにかかったことがないんだが
0461デフォルトの名無しさん
2008/12/17(水) 08:15:35set dfl_flags=-version=DFL_DMD2020
dfl -build
>>459 本家でも遅いと話題になってたかと
>>460 教育目的での使用はまだ報告ない
研究論文では、実装に1件、データ処理に1件(同じ論文か?)
プログラミングコンテストに多数件
ソフトウェア製品の実装に1件(BOFでプレゼンされた)
自社内製アプリケーションで1件(GUIアプリ)
こんなところ
0462デフォルトの名無しさん
2008/12/17(水) 15:01:45慣れ親しんだ言語を使ってもっと優先度の高いタスクを行うのは当たり前だろ。
言語的にはそんなに目新しいものでもないしな。
0463デフォルトの名無しさん
2008/12/17(水) 16:25:440464デフォルトの名無しさん
2008/12/17(水) 18:31:130465デフォルトの名無しさん
2008/12/17(水) 19:15:52新しい物好きとか一般人は次世代の業界標準予定なC++0xの方に行きそう。
まだ策定中だけど。
0466デフォルトの名無しさん
2008/12/17(水) 19:19:20自分でちょっと使うだけならランタイムなんて関係ないからね
0467デフォルトの名無しさん
2008/12/17(水) 21:25:14C/C++よりDの方がいいかな?とか思うんだけど
ガベコレがあやしくてサービスとして使い物にならないのが怖いので
結局C/C++で書いてしまうのが安心だとか錯綜した感情に悩まされています
0468デフォルトの名無しさん
2008/12/17(水) 23:34:35注意すべきところはあるみたいだけど
たいしたことはないと思う
0469デフォルトの名無しさん
2008/12/18(木) 01:29:04これバグだと思う?
isの中に .. があるとおかしいみたいなんだけど
void main() {
static if (is(foo(p[0..1]))) {}
}
>bud a
a.d(2): found '..' when expecting ']'
a.d(2): found '1' when expecting ')'
a.d(2): found ']' when expecting ')'
a.d(2): found ')' instead of statement
a.d(3): unrecognized declaration
0470デフォルトの名無しさん
2008/12/18(木) 01:32:11isの中に関数呼び出し形式のトークンは書けないのかな?
0471デフォルトの名無しさん
2008/12/18(木) 01:32:16仕様。
is(typeof(foo(p[0..1])))で多分おk
0472デフォルトの名無しさん
2008/12/18(木) 01:36:29上がokで下がダメなのは不思議です
void main() {
//static if (is(foo())) {} //good
static if (is(bar(1))) {} // bad
}
0473デフォルトの名無しさん
2008/12/18(木) 01:44:21構文的にはis(型)なんだけども、意味解析で型が値、値が型として扱われるという不思議な事になってる。typeof(TypeA + TypeB)みたいなのが通ったり…。
ただこの意味解析の挙動は仕様では無いはず。
0474デフォルトの名無しさん
2008/12/18(木) 02:11:49それは困るぞ
0475デフォルトの名無しさん
2008/12/18(木) 02:13:550476デフォルトの名無しさん
2008/12/18(木) 03:02:37何を言っている。D の正しい仕様だ!
0477デフォルトの名無しさん
2008/12/18(木) 07:10:30しゅはきませりしゅはきませり
しゅはしゅはきませり
0478458
2008/12/18(木) 10:43:02-version=DFL_DMD2020をコンパイル時に付け加えたらInvariant系のエラーが出なくなったので、
そこは上手く言ってると思うんですが、次はcore\memory.dがないと出ました、これはどこにあるんでしょうか。
0479デフォルトの名無しさん
2008/12/18(木) 10:48:430480デフォルトの名無しさん
2008/12/18(木) 10:59:37今気付いたんですが2020ってバージョンのことなんでしょうか?
使ってるバージョンは2.014なんですが、2.020が使えって事ですかね?
0481デフォルトの名無しさん
2008/12/18(木) 11:01:480482デフォルトの名無しさん
2008/12/18(木) 11:06:23そうです
0483デフォルトの名無しさん
2008/12/18(木) 11:12:16試して見ます、ありがとうございました。
0484デフォルトの名無しさん
2008/12/18(木) 15:54:54ところで
template A(alias fn,int i=0){
alias ParameterTypeTuple!(fn) Params;
Params p;
static if(is(typeof(fn(p[0..i]))))
const int result=i;
eles
const int result=A!(fn,i+1).result;
}
void func(int x,int y=0,int z=0){}
const int n=A!(func).result;
funcを呼び出すのに最低限必要な引数の数を得るコードだと思うんだけど
今でもこれ実現可能?
今、出先なので元のコードは示せないのだがそっちは無限ループするんだ・・・
0485デフォルトの名無しさん
2008/12/18(木) 16:15:12お騒がせしました
0486デフォルトの名無しさん
2008/12/18(木) 21:27:320487デフォルトの名無しさん
2008/12/18(木) 22:43:310488デフォルトの名無しさん
2008/12/18(木) 23:41:53const SomeClass Null;
template Hoge!(alias fn){
static if(is(typeof(fn)==SomeClass))
const int n=-1;
else
const int n=A!(fn).result;
}
dmd1.xで動いていたこれが
2.xでHoge!(Null)のときに無限再帰して困っていたのだが
typeof(Null)==const(SomeClass)に
なっていることにようやく気が付いた orz
0489デフォルトの名無しさん
2008/12/19(金) 04:29:50てなわけでバグ残ってるけど直したよ
0490デフォルトの名無しさん
2008/12/20(土) 16:55:06hello.obj(hello)
Error 42: Symbol Undefined _D3dfl11application11Application3runFC3dfl4form4Form
Zv
hello.obj(hello)
Error 42: Symbol Undefined _D3dfl4form4Form7__ClassZ
hello.obj(hello)
Error 42: Symbol Undefined _D3dfl4form4Form6__ctorMFZC3dfl4form4Form
hello.obj(hello)
Error 42: Symbol Undefined _D3dfl5label5Label7__ClassZ
hello.obj(hello)
Error 42: Symbol Undefined _D3dfl5label5Label6__ctorMFZC3dfl5label5Label
hello.obj(hello)
Error 42: Symbol Undefined _D3dfl7drawing4Size6opCallFiiZS3dfl7drawing4Size
hello.obj(hello)
Error 42: Symbol Undefined _D3dfl7control7Control4sizeMFS3dfl7drawing4SizeZv
hello.obj(hello)
Error 42: Symbol Undefined _D3dfl7control7Control6parentMFC3dfl7control7Control
Zv
--- errorlevel 8
0491デフォルトの名無しさん
2008/12/20(土) 17:33:220492デフォルトの名無しさん
2008/12/21(日) 08:08:030493デフォルトの名無しさん
2008/12/21(日) 08:55:220494デフォルトの名無しさん
2008/12/21(日) 13:17:07何が変わったかはちょっとわからんけど…
0495デフォルトの名無しさん
2008/12/21(日) 18:46:211項目ずつコーティングですかね。
0496デフォルトの名無しさん
2008/12/21(日) 18:47:32mixin
0497デフォルトの名無しさん
2008/12/22(月) 00:44:400498デフォルトの名無しさん
2008/12/22(月) 01:13:440499デフォルトの名無しさん
2008/12/22(月) 01:16:290500デフォルトの名無しさん
2008/12/22(月) 06:34:11自前でテーブル持つか、文字コード変換ライブラリ使うしかない。
0501デフォルトの名無しさん
2008/12/22(月) 07:24:17toMBSzを使ってもA02EA0とかA02EB0みたいな文字に変わってしまうんですが、
何を間違えてるんでしょうか。
0502デフォルトの名無しさん
2008/12/22(月) 08:23:29A02EA0とかはたぶんポインタの値が表示されてる。
import std.c.string;
auto len = strlen(cstr);
auto dstr = cstr[0..len];
とかでDの配列に変換してやるか、printfなんかのCの関数なら正常に表示できる。
まあtxとかの外部ライブラリ使ったほうがいいと思うけども。
0503デフォルトの名無しさん
2008/12/22(月) 10:15:41レスどうもです、やってみます。
0504デフォルトの名無しさん
2008/12/22(月) 10:33:57printf("%.*s",cstr);
0505デフォルトの名無しさん
2008/12/22(月) 17:29:0832x32のアイコンをShell32.dllから抽出するのは問題ないんですが、
16x16のアイコンを指定すると
Error: AssertError Failure imagelist.d(171) Image list: invalid image size
ってエラーが出てきます。
このエラーは何が問題なんでしょうか
0506デフォルトの名無しさん
2008/12/23(火) 02:55:26じゃないか?
0507デフォルトの名無しさん
2008/12/23(火) 18:16:13extentionMethod って初めて知ったわ。
0508デフォルトの名無しさん
2008/12/23(火) 18:52:58ツッコミ待ち?
0509デフォルトの名無しさん
2008/12/23(火) 19:59:450510デフォルトの名無しさん
2008/12/23(火) 23:11:55Unhandled Exception: EXCEPTION_ACCESS_VIOLATION(0xc0000005) at invariant._d_invariant.Object (0x00431925) thread(6556)
とか出るのだけど、これは設定が間違っているのか、それともdflのバグなのか?
0511デフォルトの名無しさん
2008/12/24(水) 00:19:48自分は2系で動かすのはあきらめました。
0512デフォルトの名無しさん
2008/12/24(水) 00:32:14ぶっちゃけると、descent+DMD1.037+Tango+DFL+ddbgでうまく動かす方法が知りたい…
いろいろ試した結果、rebuildを使ってライブラリまですべてコンパイルし直すとうまくいくくさい…けど、なんか負けた気分になる。
0513デフォルトの名無しさん
2008/12/24(水) 01:47:42そうなんですが、コードを追っていくとLoadImageでとまっているっぽインです。
UINT ExtractIconExA(LPCSTR, int, HICON *, HICON *, UINT);
を使おうと思うんですが、これをDで使う場合はそのままだと駄目なんでしょうか。
Error 42: Symbol Undefined _ExtractIconExA@20
というエラーが出るんですが。
0514デフォルトの名無しさん
2008/12/24(水) 01:53:37ちゃんとライブラリをリンクしてるのか。
0515デフォルトの名無しさん
2008/12/24(水) 06:00:140516デフォルトの名無しさん
2008/12/24(水) 07:35:59extern(Windows){
UINT ExtractIconExA(LPCSTR, int, HICON *, HICON *, UINT);
}
とやって後はdflのを使っています。
0517デフォルトの名無しさん
2008/12/24(水) 07:39:120518デフォルトの名無しさん
2008/12/24(水) 09:45:09dflやPhobosにはなかったので他のライブラリを使おうと思いましたが
自分には出来そうにないので、dflのResourcesで使われてる
LoadImageAのパラメータを変えていじってたらできました。
お騒がせしてすいませんでした。
0519デフォルトの名無しさん
2008/12/24(水) 23:58:340520デフォルトの名無しさん
2008/12/25(木) 00:52:15・非GC管理リソースの解放を確実に行えない
・クラス/構造体内のGC管理リソースの寿命を管理できない
は、いまのDのまま進化を続けたらどういう風に解決されるだろう?
0521デフォルトの名無しさん
2008/12/25(木) 00:53:40そして、メモリ以外のものに対する GC は
自前で拡張できるようにもする。
0522デフォルトの名無しさん
2008/12/25(木) 00:55:080523デフォルトの名無しさん
2008/12/25(木) 02:17:44デストラクタのタイミングで処理しないといけないことって何がある?
0524デフォルトの名無しさん
2008/12/25(木) 18:23:270525デフォルトの名無しさん
2008/12/25(木) 20:12:290526デフォルトの名無しさん
2008/12/25(木) 20:19:030527デフォルトの名無しさん
2008/12/25(木) 21:26:40Tangoのxmlを使おうと思ってるんですが、
XmlPath!(T).NodeSetって型じゃないんですかね。
サンプルのソースも全部受け取りがAutoになってたり略されてたりで分かりません。
変数 = .query["width"];
変数.value = 'hoge';
でいけるかと思ったんですがNodeSetにvalueはないといわれます。
でもサンプルだとforeachで取った変数から.valueで値をとってるんですが・・・
http://shoo.s20.xrea.com/shoo/programing/chirno_quality/0005.html
ここを参考にしてるんですが、作成と取得はあるんですが変更がありません。
誰か教えて><
0528デフォルトの名無しさん
2008/12/25(木) 21:29:040529デフォルトの名無しさん
2008/12/25(木) 21:32:28ありがとう。
てか、 .data = "hoge";でいけました><
ここに書き込んで冷静に見直したら即効で事故解決しました。
どうも!
0530デフォルトの名無しさん
2008/12/25(木) 22:41:45scopeメンバ変数のあるクラスはscopeクラスにしないといけないだろうから、
scopeがどんどん伝染して酷いことになりそうだが……
0531デフォルトの名無しさん
2008/12/25(木) 23:41:47b. デストラクタでメンバオブジェクト触れるようにしろ
b1. deleteで呼ばれたかGCで呼ばれたか分かるようにしろ
b2. 依存関係にしたがって解放順序を保証しろ
って感じだよな。
>>530
scopeクラスじゃなくて、「俺をdeleteした場合はscopeメンバも暗黙にdeleteしろ」って目印じゃね?
scopeメンバを持つクラスはscopeクラスの寿命にせずともよくて、
そのクラスの寿命が来たらscopeメンバも自動的にdeleteされる、って感じの。
今は(scopeクラス以外は)デストラクタでメンバをdeleteするのも無理だから、
その点では解決になると思う。もしscopeメンバ同士で循環参照してても、
delete順序が不定になるだけで、仕様上双方一度しか呼び出されないだろうし。
0532デフォルトの名無しさん
2008/12/25(木) 23:45:13でもそうすると、scopeメンバ変数にscopeクラスを代入できなくなるよね。
0533デフォルトの名無しさん
2008/12/25(木) 23:47:43GC を採用している言語全体の問題だ。
トリガを拡張できるようにするべき。
0534デフォルトの名無しさん
2008/12/26(金) 07:25:31メモリ以外のリソースにも参照変数を導入する必要ができるぞ
参照の有無で生死を判断するのだし
メモリとRAIIに全部任せるべきじゃないかね
0535デフォルトの名無しさん
2008/12/26(金) 07:38:22b1が必要な理由がよくわからなかったので説明しなおしてもらえないか
0536535
2008/12/26(金) 12:58:08もう少し考えてみます
0537デフォルトの名無しさん
2008/12/26(金) 14:59:460538デフォルトの名無しさん
2008/12/26(金) 17:38:31表示されないようにするにはどうしたらいいんでしょうか。
0539デフォルトの名無しさん
2008/12/26(金) 22:51:03別に GC をもう1つ作るわけじゃない。
優先的に GC を走らせるだけに過ぎない。
0540デフォルトの名無しさん
2008/12/30(火) 02:25:01DFL+dmd2.022でコンパイルおわらねーな
0541デフォルトの名無しさん
2008/12/30(火) 22:28:500542デフォルトの名無しさん
2008/12/30(火) 22:31:040543デフォルトの名無しさん
2008/12/31(水) 01:41:010544デフォルトの名無しさん
2008/12/31(水) 02:01:460545デフォルトの名無しさん
2008/12/31(水) 02:04:260546デフォルトの名無しさん
2008/12/31(水) 06:47:07ROMは100以上1000未満くらいいると思う
0547デフォルトの名無しさん
2008/12/31(水) 18:40:170548デフォルトの名無しさん
2008/12/31(水) 20:13:02constメンバ関数とかinvariantクラスとか。
制限きつすぎて使いどころがわからん。
0549デフォルトの名無しさん
2008/12/31(水) 20:24:140550デフォルトの名無しさん
2008/12/31(水) 20:59:38でもconstメンバ関数は普通に使うでしょ
C++と一緒で
0551デフォルトの名無しさん
2008/12/31(水) 21:11:450552デフォルトの名無しさん
2009/01/01(木) 03:22:390553デフォルトの名無しさん
2009/01/01(木) 06:07:470554デフォルトの名無しさん
2009/01/01(木) 06:23:460555デフォルトの名無しさん
2009/01/01(木) 06:28:040556デフォルトの名無しさん
2009/01/01(木) 07:48:18引数がchar[]を要求してたらconst(char)[]/invariant(char)[](stringとか)は
そのままでは与えられないから.dupでchar[]にしないといけないよ
0557デフォルトの名無しさん
2009/01/01(木) 08:15:03http://tinyurl.com/79vq4j
0558デフォルトの名無しさん
2009/01/01(木) 09:09:070559デフォルトの名無しさん
2009/01/01(木) 09:39:550560デフォルトの名無しさん
2009/01/01(木) 12:19:56正月早々、短縮URL・・・
踏むのこわいなー
0561デフォルトの名無しさん
2009/01/01(木) 12:37:29問題ないよ
気になるならこれ使いな
ttp://espion.just-size.jp/archives/07/116215705.html
0562デフォルトの名無しさん
2009/01/01(木) 18:13:37実際問題あり得るのかなぁ?
0563デフォルトの名無しさん
2009/01/01(木) 18:54:390564デフォルトの名無しさん
2009/01/01(木) 20:05:110565デフォルトの名無しさん
2009/01/01(木) 20:49:300566デフォルトの名無しさん
2009/01/01(木) 20:50:02そんなほいほい作れるのもなの?
0567566
2009/01/01(木) 20:51:01○ 作れるもの
0568デフォルトの名無しさん
2009/01/01(木) 21:32:260569デフォルトの名無しさん
2009/01/01(木) 21:33:090570デフォルトの名無しさん
2009/01/01(木) 21:36:26gdc+attribute拡張+リンカスクリプトで何とか可能かも?
30日OS本持ってるけど内容忘れたので何とも言えない。
0571デフォルトの名無しさん
2009/01/01(木) 21:52:45ctfe.zipってのがあった気がする。実装はあまり良くなかったような。
もう一つあった気がする。そっちは悪くなかったような。
でもそれを使った実用的アプリが無い限りは消えゆく運命。
0572デフォルトの名無しさん
2009/01/01(木) 23:02:15緑の本ですか
0573デフォルトの名無しさん
2009/01/02(金) 00:59:49こんなアプリ作られた!の流れマダァ?(・∀・ )っ/凵⌒☆チンチン
0574デフォルトの名無しさん
2009/01/02(金) 02:54:25むしろライブラリじゃね?
0575デフォルトの名無しさん
2009/01/02(金) 18:06:12DigitalMars のリンカは OMF しか対演桙オてないから封マ換が必要になb驍フであって、
MS のリンカは COFF も OMF も対応してるんだから MS のリンカでリンクしてみると
幸せになれるんじゃね?とかもくろんだ俺、涙目
0576デフォルトの名無しさん
2009/01/02(金) 18:43:34Ruby の Rails みたいな感じで。
アプリケーション自体は言語非依存なのがふつーだから、
アプリだけあっても言語は普及しないんだよな。
とりあえず、今 ANTLR で遊んでるところ。
こいつの実装自体は Java だけど、D言語のパーサー吐けないかなぁとか思ってる。
0577576
2009/01/02(金) 18:47:06でも、リンク死んでるな… これはプロジェクトがお亡くなりになったのか。
0578デフォルトの名無しさん
2009/01/02(金) 19:03:42ttp://www.mbutscher.de/antlrd/index.html
ANTLR v2.7.5 だから v3 の新機能使えないなぁ。
やっぱり自分で何とかするしかないのか。
0579デフォルトの名無しさん
2009/01/02(金) 19:21:340580デフォルトの名無しさん
2009/01/02(金) 20:35:23だれかうぉるたん説得して
0581デフォルトの名無しさん
2009/01/02(金) 20:36:59そして仕様が決まらないままん何年経つんですね、分かります。
0582デフォルトの名無しさん
2009/01/02(金) 21:01:460583デフォルトの名無しさん
2009/01/02(金) 21:03:040584デフォルトの名無しさん
2009/01/02(金) 21:41:39我らの愛してやまないうぉるたんは死んだ!何故だ!!!
0585デフォルトの名無しさん
2009/01/02(金) 21:42:110586デフォルトの名無しさん
2009/01/02(金) 23:49:02作っているのが一社かどうか一人かどうかは関係なくて
仕様の悪いところを説得するだけで十分だよ
Dはコミュニティが作るって言ってたよ
>企業の戦略的なロードマップや、偉大なプログラミング理論によって方向が決まっているような言語ではありません。 D言語コミュニティ からの要望や提案・協力が、向かう先を決めていきます。
0587デフォルトの名無しさん
2009/01/03(土) 23:57:11例え一社でもBorlandみたいに、本腰入れて作ってくれればいいんだけど・・・
それで失敗したら救いようがないんだけどねw
とりあえず言語より環境をなんとかして!
0588デフォルトの名無しさん
2009/01/04(日) 14:47:40gdcがmonoぐらい軌道に乗ってくれればいいのだが・・・
0589デフォルトの名無しさん
2009/01/04(日) 17:07:440590デフォルトの名無しさん
2009/01/04(日) 17:41:49今まで書いたコードが台無しになるかわからない言語なんて
使えるはずがない
0591デフォルトの名無しさん
2009/01/04(日) 17:53:370592デフォルトの名無しさん
2009/01/04(日) 18:10:470593デフォルトの名無しさん
2009/01/04(日) 18:41:52…ともおもったけど、TangoもTangoで期待通りに破壊的変更が大好きだからな。
0594デフォルトの名無しさん
2009/01/04(日) 18:48:540595デフォルトの名無しさん
2009/01/04(日) 18:50:21だがこのスレの住人はバージョンアップするために使ってるMばかりなのだった。
0596デフォルトの名無しさん
2009/01/04(日) 19:02:560597デフォルトの名無しさん
2009/01/04(日) 19:03:430598デフォルトの名無しさん
2009/01/04(日) 19:07:58相互依存テンプレート云々。良く分からなかったけど。
コンパイラ側の問題であって欲しい。
0599デフォルトの名無しさん
2009/01/04(日) 19:13:31大量のtemlateの使用と、再帰的なimportが原因になっているようです。
ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=14338
このへん。templateに関するバグを改善したらこうなったらしい。
次の更新あたりで治るといいねぇ
0600デフォルトの名無しさん
2009/01/05(月) 01:24:500601デフォルトの名無しさん
2009/01/05(月) 16:59:10一定のメッセージを表示させたりすること出来るかな?
rebuild で、*.d より新しい *.objがある時に
コンパイルを省略してくれてるかを
しらべたいねん
0602デフォルトの名無しさん
2009/01/05(月) 17:10:270603デフォルトの名無しさん
2009/01/05(月) 17:14:12その目的ならrebuild -vで良くね?
0604デフォルトの名無しさん
2009/01/05(月) 18:20:22>>603
ないすです。ありがと。
0605デフォルトの名無しさん
2009/01/06(火) 02:42:45http://pc11.2ch.net/test/read.cgi/tech/1128794438/
0606デフォルトの名無しさん
2009/01/06(火) 08:53:140607デフォルトの名無しさん
2009/01/06(火) 12:02:200608デフォルトの名無しさん
2009/01/06(火) 18:14:460609デフォルトの名無しさん
2009/01/06(火) 19:29:320610デフォルトの名無しさん
2009/01/06(火) 19:48:38固有名詞まで含めればLeight, Lyte, Reit, Rite, Rheydt, Wrightとより取りみどり
0611デフォルトの名無しさん
2009/01/06(火) 20:13:240612デフォルトの名無しさん
2009/01/06(火) 20:15:550613デフォルトの名無しさん
2009/01/07(水) 14:00:13dmd2.023
0614デフォルトの名無しさん
2009/01/07(水) 14:06:45こりゃいいや
0615デフォルトの名無しさん
2009/01/07(水) 14:42:11はアウアウ?
0616デフォルトの名無しさん
2009/01/07(水) 14:56:55どこが? テンプレートでlengthが使えなくならないか?
0617デフォルトの名無しさん
2009/01/07(水) 15:56:19これの結果が反転しちゃったね
0618デフォルトの名無しさん
2009/01/07(水) 15:59:300619デフォルトの名無しさん
2009/01/07(水) 16:25:05こういうことでいい?
import std.stdio;
void main() {
string a = TailCutter!("abcd");
assert(a == "abc");
enum b = StaticReplacer!("abcdefg","b","_");
assert(b == "a_cdefg");
// static assert にしてみたらわろた
}
template TailCutter(string s) {
enum TailCutter = s[0..length-1];
}
template StaticReplacer(string s, string from, string to) {
static if (s.length == 0)
enum StaticReplacer = "";
else
enum StaticReplacer = ([s[0]]==from?to:[s[0]]) ~ StaticReplacer!(s[1..length],from,to);
}
0620デフォルトの名無しさん
2009/01/07(水) 16:45:170621デフォルトの名無しさん
2009/01/07(水) 16:46:57ちゃう。
import std.stdio;
uint foo(T)(T s){
int[T.length] x;
return x.length;
}
void main(){
writefln(foo("test"));
writefln(foo("t"));
}
の場合。
0622デフォルトの名無しさん
2009/01/07(水) 16:56:56今回のバージョンってやばめ?
0623デフォルトの名無しさん
2009/01/07(水) 17:23:480624デフォルトの名無しさん
2009/01/07(水) 17:43:30ttp://ja.uncyclopedia.info/wiki/D%E8%A8%80%E8%AA%9E
0625デフォルトの名無しさん
2009/01/07(水) 18:15:440626デフォルトの名無しさん
2009/01/07(水) 18:59:420627デフォルトの名無しさん
2009/01/07(水) 19:52:27そんな得体の知れない長さの配列をスタックに割り当てるなんて怖いお…
0628デフォルトの名無しさん
2009/01/07(水) 20:24:50ていうか、descent でライブラリに phobos を指定してると
いつの間にか stc.c.windows を import してたりして
重複でエラーとかでるのが鬱陶しい。
0630デフォルトの名無しさん
2009/01/07(水) 22:53:00dsssは何をしてもError: 4invalid UTF-8 sequenceしか返しません。
dsss--helpでも単にdsssと打ち込んでも同様です
ですが、
c:\d\bin>dsss build *.d
とやると正常にコンパイルされました。
dmdのほうはどこのカレントディレクトリでも問題なくコンパイルできました。
コマンドプロンプトの文字コードをUTF-8にしてもだめでした。環境変数も全て半角です。
何か考えられる原因がありましたらお教え頂ければと思います。お願いします。
0631デフォルトの名無しさん
2009/01/07(水) 23:39:06もう少し環境を詳しく書いた方がいいのでは、dsssのバージョンとかOSとか。
パスでWindowsだろうってことはわかるけど。
svnで落としてきてリビジョンを変えてビルドしてみるか、ビルド済みバイナリ
版を落としてみたらどうだろう。うちの環境ではLinuxは前者、Windowsは
後者でないと上手く動かなかった。
0632630
2009/01/08(木) 00:26:07すいません、当方環境はお察しの通りWInXPです。
dsssのバージョンは0.78-x86-winです。
さっそく0.77から0.75まで順番に変えて試してみましたが駄目でした・・・
C:\>dsss
Error: 4invalid UTF-8 sequence
となってしまいます・・・
すいませんがバイナリ版はどこにあるのでしょうか?
0633デフォルトの名無しさん
2009/01/08(木) 01:03:07c:\> dsss
だけなら、usage が出たような気がする。
なんかそれ、うまくビルドできてないとかそういう落ちだと思うな。
svn.dsource.org/projects/dsss/downloads/0.78/
からどーぞ
0634デフォルトの名無しさん
2009/01/08(木) 01:07:07とか
0635634
2009/01/08(木) 01:11:170636デフォルトの名無しさん
2009/01/08(木) 01:48:01環境変数からすべての日本語を取り除いた状態でもだめっぽいってことかな?
0637630
2009/01/08(木) 11:23:32すいません、>>321の方の事でした。
見づらくて申し訳ないのですが、
http://a1.wtakumi.com/s/yuyu21/1231380648398154.jpeg
このような感じでdmdはpathが通ってますが、dsssは通っていません(同じフォルダに入ってますから通ってる筈なのですが)。
useageも出てきませんでした。dsssがあるカレントディレクトリでなら問題なくビルド出来るのですが・・・
>>634
ありがとうございます。入れてみましたがやはり駄目でした・・・。
>>636
はい、環境変数に日本語はありません。全て半角で書いてありますが駄目でした。
ここは諦めてbinフォルダにdsss_objsを作るしかないでしょうか。不便ですけど
0638デフォルトの名無しさん
2009/01/08(木) 13:15:350639630
2009/01/08(木) 20:00:18不便ですがbinフォルダを使う事にします・・・
0640デフォルトの名無しさん
2009/01/08(木) 21:27:01gc_clrProxyとgc_setProxyってんだけど、なんだろうこいつら
ついでに、コンパイル時はエラー無いけどイメージ無効とかなんとか言われる
2.020の時は動いたのに…(´・ω・`)
0641デフォルトの名無しさん
2009/01/08(木) 21:29:580642デフォルトの名無しさん
2009/01/08(木) 21:39:38core.memory
0643デフォルトの名無しさん
2009/01/08(木) 21:51:22探したらいました、ありがとう
中身はよく分からんけど、呼び出さなきゃいてもいなくても一緒か…
0644デフォルトの名無しさん
2009/01/08(木) 22:42:490645デフォルトの名無しさん
2009/01/09(金) 15:51:340646デフォルトの名無しさん
2009/01/09(金) 19:27:170647デフォルトの名無しさん
2009/01/09(金) 21:42:110648デフォルトの名無しさん
2009/01/10(土) 00:23:49Part12 の Ruby のイテレータっぽいやつ作ってた頃は楽しかった。
0649デフォルトの名無しさん
2009/01/10(土) 00:34:330650デフォルトの名無しさん
2009/01/10(土) 01:08:010651デフォルトの名無しさん
2009/01/10(土) 01:36:05今日、IE4 で動いてる環境を見てきたw
0652デフォルトの名無しさん
2009/01/10(土) 01:57:34継続は使わなくても言語仕様に入れるだけで重くなる
0653デフォルトの名無しさん
2009/01/10(土) 02:12:460654デフォルトの名無しさん
2009/01/10(土) 06:49:44変数元に戻すのマンドクセ
くらいの意味にしか取れなかった。
そもそも、何を残して何を残さないかちゃんと考えないと
すぐにメモリパンクするだろ。
0655デフォルトの名無しさん
2009/01/10(土) 06:58:46たとえばコルーチンでは、二回目呼び出したときは前回yieldしたところから実行が再開されるけど、
それを更に拡張し、コード上の任意の位置で実行を中断して、
その一時停止の状態を一級市民として扱えるようにするのがいわゆる「継続」。
0656デフォルトの名無しさん
2009/01/10(土) 12:47:16> The first version of LDC, the LLVM based compiler for version one of the D programming language has been released for x86-32 Linux. Get it here!
0657デフォルトの名無しさん
2009/01/10(土) 18:15:30文法が処理しやすいように定義されてるとか聞いたような
0658デフォルトの名無しさん
2009/01/10(土) 19:09:21gdcの開発が止まっているような中で、オープンソースの処理系が進展しているのは頼もしい
0659デフォルトの名無しさん
2009/01/10(土) 20:51:190660デフォルトの名無しさん
2009/01/10(土) 21:56:33ttp://www.dsource.org/projects/tango/forums/topic/664
0661デフォルトの名無しさん
2009/01/10(土) 23:11:240662デフォルトの名無しさん
2009/01/11(日) 03:00:19dmd2.021とdmd1.037に比べたら遅くなった気がする。
……気のせい?
0663デフォルトの名無しさん
2009/01/11(日) 03:58:380664デフォルトの名無しさん
2009/01/11(日) 14:46:25ttp://www.dsource.org/projects/ldc
>or
>Fetch the druntime for D2 (this is experimental)
>druntime is the new runtime for D2 to enable Phobos (official standard library) and Tango (community driven library) to coexsist peacefully when Tango will move to D2.
0665デフォルトの名無しさん
2009/01/11(日) 20:46:160666デフォルトの名無しさん
2009/01/11(日) 20:50:49sedit とか edlin などという呆けはかまさない。
0667デフォルトの名無しさん
2009/01/11(日) 21:40:540668デフォルトの名無しさん
2009/01/11(日) 21:44:410669デフォルトの名無しさん
2009/01/11(日) 21:47:160670デフォルトの名無しさん
2009/01/11(日) 22:02:10起動が重いが
0671デフォルトの名無しさん
2009/01/11(日) 22:05:55しかし見事にバラバラだなwww
0672デフォルトの名無しさん
2009/01/11(日) 22:17:380673デフォルトの名無しさん
2009/01/11(日) 22:25:180674デフォルトの名無しさん
2009/01/11(日) 22:31:410675デフォルトの名無しさん
2009/01/11(日) 22:33:310676デフォルトの名無しさん
2009/01/11(日) 22:58:390677デフォルトの名無しさん
2009/01/11(日) 23:01:45DOSでコンパイルしてるけど・・・
0678661
2009/01/11(日) 23:23:59レスサンクス。でも使ってるのD1なんだ・・・。
D1用のランタイムでビルドしてみたけどmake runtimeで挫折。
公式にphobosに対応したらまた使ってみるよ
0679デフォルトの名無しさん
2009/01/11(日) 23:55:461.0以降Dが意外と普及してきたから
補完機能付きのメジャーなテキストエディタだと結構対応できる
0680デフォルトの名無しさん
2009/01/12(月) 00:00:36(゚∀゚)人(゚∀゚)ナカーマ
0681デフォルトの名無しさん
2009/01/12(月) 00:09:350682デフォルトの名無しさん
2009/01/12(月) 00:26:15SmultronというMac向けのエディタでさえ対応してたり
しかしネスト可能コメントに対応しているGUIベースのエディタはなかなか見ない
変態文法を理解させるならそれこそemacsにやらせるのが早い気がする
0683デフォルトの名無しさん
2009/01/12(月) 01:04:050684デフォルトの名無しさん
2009/01/12(月) 02:05:110685デフォルトの名無しさん
2009/01/12(月) 10:22:480686デフォルトの名無しさん
2009/01/12(月) 12:18:42GDCに手を加えて、クロスコンパイルできるようにしてやるとか。
0687デフォルトの名無しさん
2009/01/12(月) 12:42:58GDCというものがあるんですね。
ARMはサポートされてるみたいですね。
0689685
2009/01/12(月) 17:20:45こんなもの見つけました。
0690デフォルトの名無しさん
2009/01/12(月) 17:25:52D言語とは一体
デブ言語?
0691デフォルトの名無しさん
2009/01/12(月) 17:46:040692デフォルトの名無しさん
2009/01/12(月) 17:49:35もう内部的にinvariantがimmutableに置き換わっているんだね
//dmd2.023
void main(){ char[] a = "hoge"; }
a.d(1): Error: cannot implicitly convert expression ("hoge") of type immutable(char)[] to char[]
0693デフォルトの名無しさん
2009/01/12(月) 21:13:46何か代用方法などはあるのでしょうか?
0694デフォルトの名無しさん
2009/01/12(月) 21:40:230695デフォルトの名無しさん
2009/01/12(月) 21:57:34結論から言うと、ない。WinでいうところのSetEventとWaitForSingleObject相当の機能もないと思う。
それこそOS依存なAPIを叩くしか。
TangoならMutexとかConditionとか活用すればたいていの場合切り抜けられるけど…
0696デフォルトの名無しさん
2009/01/12(月) 22:10:081スレッド内でやる擬似スレッド。
当然1cpuしか使えないけど。
0697693
2009/01/12(月) 22:13:59当方Phobosを使用しております。
ThreadPoolの実装で、
WorkerThreadを待機させておくのにpause()を使いたかったのです。
D1では上手く行ったのですが、D2にはpause()が無いので
ビジーループ以外に方法が思いつかなくて・・・。
簡単な解決方法は無さそうなので、大人しくD1で開発して行こうと思います。
お時間割いて頂き、ありがとうございました。
0698デフォルトの名無しさん
2009/01/13(火) 00:15:080699デフォルトの名無しさん
2009/01/13(火) 00:25:41DirectX SDK の Direct3D Tutorial.1 まで行けた。
しかし、coffimplib で↓のような状態なのだけど、これどうすりゃいいの?
C:\test\lib>coffimplib "\dxsdk Nov.08\Lib\x86\DxErr.lib" DxErr.lib
Error: not an import library
C:\test\lib>coffimplib "\dxsdk Nov.08\Lib\x86\DxErr9.lib" DxErr9.lib
Error: not an import library
C:\test\lib>coffimplib "\dxsdk Nov.08\Lib\x86\dxguid.lib" dxguid.lib
Error: not an import library
C:\test\lib>coffimplib "\dxsdk Nov.08\Lib\x86\xapobase.lib" xapobase.lib
Error: not an import library
C:\test\lib>coffimplib "\dxsdk Nov.08\Lib\x86\xapobased.lib" xapobased.lib
Error: not an import library
>>33 さんのその後が気になるぜ。
0700デフォルトの名無しさん
2009/01/13(火) 02:00:320701デフォルトの名無しさん
2009/01/13(火) 16:14:190702デフォルトの名無しさん
2009/01/13(火) 18:30:350703デフォルトの名無しさん
2009/01/13(火) 21:45:08tutorial 3、いきなりこけたw
0704デフォルトの名無しさん
2009/01/14(水) 10:07:02win32/directx/d3dx9.d
でバグ発見。
D3DXCreateTextureFromFileA(〜, LPCTSTR, 〜);
って書いてあるせいで version=Unicode 時に適切な引数を渡せず、いつも
D3DXERR_INVALIDDATA の結果になっちゃう。
D3DXCreateTextureFromFileA(〜, LPCSTR, 〜);
D3DXCreateTextureFromFileW(〜, LPCWSTR, 〜);
って書き直したら直った。他にもあると思う。
フォーラムはいる気はさらさら無いので、入ってるひといたらバグレポお願い。
いなかったらチラシの裏
0705デフォルトの名無しさん
2009/01/15(木) 10:47:44Descent+Antでいけるんですね。
参考までに
ttp://gim.jogger.pl/2009/01/14/eclipse-3-4-descent-ant-tango-linux/
0706デフォルトの名無しさん
2009/01/15(木) 17:20:04module Foo;
import win32.winuser;
int main(){
MessageBox(null, "SampleFoo", "", MB_OK);
return 0;
}
をDOS窓で >dmd Foo.d だと問題なく実行されるんですが
同じくDOSから >rebuild Foo.dだと
..\win32\winnt.d(47): template instance forward reference to template declaration CPtr(T)
という警告が出てしまいます。
初歩的な点で申し訳ないんですが、何かヒントいただけないでしょうか?
0707デフォルトの名無しさん
2009/01/15(木) 18:22:20http://pc11.2ch.net/test/read.cgi/tech/1226631916/108-113
0708デフォルトの名無しさん
2009/01/15(木) 18:42:46ありがとうございます。調べてみます。
0709705
2009/01/15(木) 18:50:38alias CPtr!(char) LPCCH, PCSTR, LPCSTR;
alias CPtr!(wchar) LPCWCH, PCWCH, LPCWSTR, PCWSTR;
をコピーしてみたところ通りました。
このやり方に問題があったらご指摘お願いします。
0710706
2009/01/15(木) 18:51:170711706
2009/01/15(木) 20:36:00cptr.dとか作ってあちこちにimportさせてみたらうまくいきました。
0712デフォルトの名無しさん
2009/01/15(木) 20:42:27立派な建物建ててもすぐ崩れるな。
RoR みたいなライブラリは作りたくても作れないってのが現状かなー。
0713デフォルトの名無しさん
2009/01/15(木) 21:34:020714デフォルトの名無しさん
2009/01/15(木) 21:53:14>>706のエラーは土台(dmd)じゃなくてrebuildのせいじゃないか?
0715デフォルトの名無しさん
2009/01/15(木) 22:02:21sc.ini を見てみないことにはなんともいえないとおもうぜ
0716706
2009/01/15(木) 22:17:56そのrebuildのconfってやつなんですが、探しても見つからなかったんですが
dsss-0.78-x86-windowsでなくてdsss-0.78のほうにあるrebuild.confってフォルダの
中身のことですか?
dsss-0.78-x86-windows\etc\rebuildが相当するフォルダのようなんですが
この中のファイルの設定ということでしょうか?
sc.iniにはlibとsrcの場所を追加してます。
0717デフォルトの名無しさん
2009/01/15(木) 22:19:240718デフォルトの名無しさん
2009/01/15(木) 23:32:08すまん、使ってないからファイル名わすれた。
ただ、そういうファイルがあって、dsss か、rebuild はそれに影響を受けた記憶がある。
0719デフォルトの名無しさん
2009/01/16(金) 03:47:49bin ディレクトリや src ディレクトリも、バージョン管理対象に含めた方がよくねぇかな?
0720デフォルトの名無しさん
2009/01/16(金) 14:08:21それって要はdmdのってことだよな?それは俺も何度か思ったことがw
0721706
2009/01/17(土) 15:48:49WNDCLASS wc;
wc. でstd.c.windows.windowsのWNDCLASSだとメンバが表示されるのに
win32.winuserのWNDCLASSだと補完が表示されないのはなぜ?
0722デフォルトの名無しさん
2009/01/17(土) 17:17:29ここは君のサポートじゃないし。
0723706
2009/01/17(土) 17:59:44素直にC#にもどりますw
0724デフォルトの名無しさん
2009/01/18(日) 13:18:38ファミコンでもやってろよな(笑)
0725デフォルトの名無しさん
2009/01/18(日) 13:23:23どんまい。バイバイ
0726デフォルトの名無しさん
2009/01/18(日) 13:35:53今もコンパイルできるのかのう・・
0727デフォルトの名無しさん
2009/01/18(日) 13:42:400728デフォルトの名無しさん
2009/01/18(日) 14:05:180729デフォルトの名無しさん
2009/01/18(日) 15:06:41禁断症状が・・・
0730デフォルトの名無しさん
2009/01/18(日) 19:57:36いまやD1.0でTango使ってた方がその楽しみは味わえるかも知れんよ。
ttp://www.dsource.org/projects/tango/wiki/0_99_8_BreakingChanges
0731デフォルトの名無しさん
2009/01/18(日) 20:30:120732デフォルトの名無しさん
2009/01/18(日) 21:05:170733デフォルトの名無しさん
2009/01/18(日) 23:02:580734デフォルトの名無しさん
2009/01/18(日) 23:13:15死ね
0735デフォルトの名無しさん
2009/01/18(日) 23:49:51死ね
0736デフォルトの名無しさん
2009/01/18(日) 23:53:360737デフォルトの名無しさん
2009/01/18(日) 23:59:14Tangoってそんなに良いものなのかい?
0738デフォルトの名無しさん
2009/01/19(月) 00:15:45UpperCamelのモジュール名くらいじゃなかろうか。
それにしたってむしろ全部小文字よりも読みやすいし個人的には気に入っているのだけど…
あまりにもたくさんあるモジュールが導入の敷居を高めているのか…?
0739デフォルトの名無しさん
2009/01/19(月) 00:17:550740デフォルトの名無しさん
2009/01/19(月) 00:24:010741デフォルトの名無しさん
2009/01/19(月) 01:02:17そんなのあるのかw
0742デフォルトの名無しさん
2009/01/19(月) 04:01:20その関数の名前はwritelnであってほしいんだよねえ…
俺の美意識と微妙なところで齟齬があって好きになれんのだ。
0743デフォルトの名無しさん
2009/01/19(月) 04:11:41ともかく、formatってのはおかしいだろうと。
0744デフォルトの名無しさん
2009/01/19(月) 04:14:270745デフォルトの名無しさん
2009/01/19(月) 04:17:23なんていうか、シムシティ的な。
0746デフォルトの名無しさん
2009/01/19(月) 04:23:290747デフォルトの名無しさん
2009/01/19(月) 04:32:070748デフォルトの名無しさん
2009/01/19(月) 04:36:08ってことじゃないの?
0749デフォルトの名無しさん
2009/01/19(月) 04:37:51そゆことです。
formatっていうと、文字列を返して欲しいイメージが。
0750デフォルトの名無しさん
2009/01/19(月) 07:32:190751デフォルトの名無しさん
2009/01/19(月) 09:10:04import dango.io;
つくっちゃいなYO!
0752デフォルトの名無しさん
2009/01/19(月) 09:53:22最大 2kb だけ読み込むってどうやるの?
tango.io.read だと一気に全部読んでしまいそうだし・・・
0753デフォルトの名無しさん
2009/01/19(月) 10:20:21素直にstd::coutを使う人はTango派
間違いない
0754デフォルトの名無しさん
2009/01/19(月) 10:48:50じゃあ文字列の出力にメソッド名なんていらなくない?ってなったのがStdout()で、
Stdout.flnだけだと意味不明なメソッド名だから、Stdout.formatln。
いいと思うんだけどな…
…まぁ、何はともあれ、wvnsprintfとかつけられるよりはましなんじゃね?
0755デフォルトの名無しさん
2009/01/19(月) 16:06:14にしろって落ち?
0756デフォルトの名無しさん
2009/01/19(月) 20:00:55その場合冗長なのはwriteじゃなくてStdoutの方だと思う
「何をするか」に比べれば「何に対して」なんて付加的な情報に過ぎないし、
何も明示しなかった場合の出力先だからこそ「標準」出力と名づけられてる、と思うし
0757デフォルトの名無しさん
2009/01/19(月) 20:56:39ノ該当してるわ。C++でprintf派。
巨大ライブラリ嫌い。分厚いラッパーも嫌い。アダプタ地獄は嫌ずら。
0758デフォルトの名無しさん
2009/01/19(月) 22:18:18の下の方にあるsetHandleとかって2.023にはないのかしらん
>>640のgc_setProxyがソレなのか?
それか、core.runtimeのinitializeが自動で相当のことやってくれてるんなら
うれしいなあ。
0759デフォルトの名無しさん
2009/01/19(月) 22:46:25setHandle相当をやってるかと言えばやっている
だけど,そのsetHandleのようにGCを入れ替え可能かと言えば出来ない
そこに出てくるProxyはそれとは別でプログラム側からの呼び出しの間に挟まっているもの
0760758
2009/01/19(月) 23:12:00自由にGCを入れ替えたりはできないけど、
http://www.digitalmars.com/d/2.0/dll.html
ここのサンプルでgc2個走らないようにはできる。
という意味ですよね?それで十分なんです。
これは朗報。�dクス!
0761デフォルトの名無しさん
2009/01/19(月) 23:28:37そんなにStdoutが嫌いなら嫌いなところだけTangobos使えばいい
0762デフォルトの名無しさん
2009/01/20(火) 00:47:180763デフォルトの名無しさん
2009/01/20(火) 18:38:450764デフォルトの名無しさん
2009/01/20(火) 19:05:16D2.0系との誤差はあるかもしれないけど。
0765デフォルトの名無しさん
2009/01/21(水) 21:14:39これ、俺との約束な!!!
・・・すっげーなやんだorz
0766デフォルトの名無しさん
2009/01/21(水) 23:39:16ここなんかにも書いてありますな
0767デフォルトの名無しさん
2009/01/22(木) 03:59:02どうもありがとう。ちょうどそういうことしてるところだった(ODE)
0768デフォルトの名無しさん
2009/01/22(木) 04:01:030769デフォルトの名無しさん
2009/01/22(木) 05:16:390770デフォルトの名無しさん
2009/01/22(木) 17:15:020771デフォルトの名無しさん
2009/01/22(木) 17:30:020772デフォルトの名無しさん
2009/01/22(木) 23:42:05マジすか!どうもありがとう!
マトリョーシカミックスイン、やってみます。
0773デフォルトの名無しさん
2009/01/23(金) 00:19:57C++ :
enum {
D_ALL_PARAM_NAMES(0)
dParamsInGroup,
D_ALL_PARAM_NAMES_X(0x000,1)
D_ALL_PARAM_NAMES_X(0x100,2)
D_ALL_PARAM_NAMES_X(0x200,3)
dParamGroup=0x100
};
D :
mixin(
`enum {`
`mixin D_ALL_PARAM_NAMES_MIXIN!("0");`
`dParamsInGroup, `
`mixin D_ALL_PARAM_NAMES_X_MIXIN!("0x000", "1");`
`mixin D_ALL_PARAM_NAMES_X_MIXIN!("0x100", "2");`
`mixin D_ALL_PARAM_NAMES_X_MIXIN!("0x200", "3");`
`dParamGroup=0x100`
`}`
);
0774デフォルトの名無しさん
2009/01/23(金) 01:07:51それだとCTFEで出来ない?
0775773
2009/01/23(金) 01:22:13できそうですか?CTFE やったことない・・・。
そして773のはできたと思ったらできていなかった・・・!
もうちょい試行錯誤してみます。
0776デフォルトの名無しさん
2009/01/23(金) 01:38:14google video なくなるんだってね
D言語関連でなにか上がってなかったっけ?
0777デフォルトの名無しさん
2009/01/23(金) 02:25:41俺も>>775がやってることがわからんw
0778773
2009/01/23(金) 02:44:04してるんだけどね・・・。
今は意地みたいな感じでいじくりまわしてるけど、
正直マクロを展開した結果を手で書いたほうが速いw
(derelict はそうしてました)
0779デフォルトの名無しさん
2009/01/23(金) 04:19:580780デフォルトの名無しさん
2009/01/23(金) 07:36:41ソース見てきた。こんな感じか?
http://codepad.org/cNtS8gwU
しかしgcc -Eでのマクロ展開結果をコピーした方が圧倒的に速いな。
どうせ他のところでは使われてないマクロだし。
0781デフォルトの名無しさん
2009/01/23(金) 09:02:47__>  ̄
どうした?! _/ /\ |\
:ハ // ̄
つこう太郎!! :/ |:
Σ( ◎) / |:
_ノ(ノヽノ ヽ- :
:/ \:
:/ ノ人 U ヽ:
:| イ‐ヽ\) U ):
:| <●> ヾ) ): と、父さん!!
:ヾ/' ( o o ) ヽ, U /:
:| ,.-‐U-、 i ノ ノ: 踏んだ気配です!!…
:ヘ <EEEEE > レノ /:
:ヽ、ヽ--ィ´ ノノノノ,,:
:/~/`ーーーー´/___/ヽ:
:/ | ̄~|ヽ/\/| |' |:
:/ |__| o .|__| |:
0782デフォルトの名無しさん
2009/01/23(金) 09:20:000783デフォルトの名無しさん
2009/01/23(金) 18:29:58verうpまだー?
0784デフォルトの名無しさん
2009/01/23(金) 21:51:38流れ的にこんなのはどうだろう。
0785773
2009/01/23(金) 23:15:27わざわざすいません!チェック用コードがとんでもないことにw
昨日あれから以下のページを参考に作ってみました。
ttp://www.kmonos.net/alang/d/1.0/mixin.html
mixin(
`enum {`
~D_ALL_PARAM_NAMES_MIXIN!("0")
~`dParamsInGroup, ` ///< Number of parameter in a group
~D_ALL_PARAM_NAMES_X_MIXIN!("0x000", "1")
~D_ALL_PARAM_NAMES_X_MIXIN!("0x100", "2")
~D_ALL_PARAM_NAMES_X_MIXIN!("0x200", "3")
~`dParamGroup=0x100`
`}`
);
他のところでコンパイルが通ってなかったので正しいか未確認だったけど、
同じようですね。どうもありがとうございます!
ちなみにこだわる理由は一応ありまして、今後 ODE の開発が進んで追加など
された場合に、毎回展開するのが手間だなぁと思ったからです。
0786773
2009/01/23(金) 23:23:19どうもでした。
0787デフォルトの名無しさん
2009/01/24(土) 14:04:13意図していないタイミングで発生するとどこで落ちたんだか判らなくて困る。
0788デフォルトの名無しさん
2009/01/24(土) 14:08:150789デフォルトの名無しさん
2009/01/24(土) 14:23:580790デフォルトの名無しさん
2009/01/24(土) 15:45:570791デフォルトの名無しさん
2009/01/24(土) 16:44:04したんだけど、そもそもコンパイルが通らなくてやめた。今はどうだろう。
0792デフォルトの名無しさん
2009/01/24(土) 18:01:41__FILE__ と __LINE__ を、 引数のデフォルト初期化子として使いやすいように変更
って、D1.xではダメなのか・・・ orz
0793デフォルトの名無しさん
2009/01/24(土) 22:32:04処理速度遅くてもいいから-debugか-version(unittest)付いてる時は詳細情報欲しいよね
0794デフォルトの名無しさん
2009/01/24(土) 23:56:59それは何度も思ったなぁ。
でも、なぜか-debugつけてPICマイコンとのUSB通信用DLL関数の処理が1/100くらいの
めちゃくちゃ遅いスピードになったときは、デバッグモードで処理速度速くする方法はないものかと思ったものだ…。
0795デフォルトの名無しさん
2009/01/25(日) 02:39:57}
ってさせたくて、 hogeManager に opAssign を実装しようとしたんだけど、
これって配列が出来てないとダメなんだね...orz
C# みたいに
hoge opAssign() {
yield return new hoge();
}
みたいに、opAssign の中で新しい hoge を作ることが出来なさそう。
0796デフォルトの名無しさん
2009/01/25(日) 02:57:49while(hogehoge) {
auto tmp = new hoge;
if (auto result = dg(tmp)) return result;
}
return 0;
}
0797デフォルトの名無しさん
2009/01/25(日) 03:07:53int result = 0;
for (int i = 0; i < array.length; i++) {
result = dg(array[i]);
if (result) break;
}
return result;
}
みたいに、配列を 0 からなめ直せって書いてあるよ?
それに795 の方法だと、hoge が例えば id とかもってたら困らない?
あとは new するたびに Factory の状態が変わるとか。おれがこまったのはこいつなんだ。
0798デフォルトの名無しさん
2009/01/25(日) 03:25:480799デフォルトの名無しさん
2009/01/25(日) 03:27:530800デフォルトの名無しさん
2009/01/25(日) 03:29:01配列をなめろとはどこにも書いていない
0801デフォルトの名無しさん
2009/01/25(日) 03:34:48何をしたいのかよくわからないよ。
0802デフォルトの名無しさん
2009/01/25(日) 03:40:04hoge が、new された時間とid を持つとして、
こっちの求めているのは
hoge(00:00:00 - 1)
hoge(00:00:01 - 1)
hoge(00:00:02 - 1)
なのに、796のパターンだと
hoge(00:00:00 - 1)
hoge(00:00:01 - 2)
hoge(00:00:02 - 3)
になってしまうんだけどこういうのはどうすればいいの?
っていうか、dg って何者?
0803デフォルトの名無しさん
2009/01/25(日) 03:53:11int opApply(int delegate(ref hoge) dg) {
auto id = getid();
while(hogehoge) {
auto tmp = new hoge(id);
if (auto result = dg(tmp)) return result;
}
return 0;
}
でいいだろ。
0804デフォルトの名無しさん
2009/01/25(日) 03:58:20そのIDはどういう理由で変わったり変わらなかったりするの?
0805デフォルトの名無しさん
2009/01/25(日) 04:08:20「その秒の中につくった、何個目かを示すインデックス」。
0806デフォルトの名無しさん
2009/01/25(日) 04:21:27そのidは、hogeのコンストラクタで決めてるの?
0807デフォルトの名無しさん
2009/01/25(日) 04:26:340808デフォルトの名無しさん
2009/01/25(日) 04:28:500809デフォルトの名無しさん
2009/01/25(日) 04:29:100810デフォルトの名無しさん
2009/01/25(日) 04:31:19内部イテレータだと変なことになるのかわかんないなあ。
0811デフォルトの名無しさん
2009/01/25(日) 15:33:07enum STR: string {
FOO = "abc",
BAR = "def"
}
↑って言語仕様上正しいの?
-g付きコンパイルだと怒られるんだが。
0812デフォルトの名無しさん
2009/01/25(日) 15:59:10EnumBaseTypeには大小比較可能である以外の要件は求められていないよ。
0813811
2009/01/25(日) 18:10:58大小比較可能なchar配列を使用しているからOKだと思って使ってたんだ。
で、デバッガ使いたくてdmdに-gを渡すとコンパイルできないんだ。
すまん、根本的に認識が間違っているなら教えてくれ。
0814デフォルトの名無しさん
2009/01/25(日) 18:18:34CやC++では、列挙型は整数以外になり得ないから。
0815811
2009/01/25(日) 19:09:31ありがとう。
0816デフォルトの名無しさん
2009/01/25(日) 19:36:43-g 渡さなければ使えてたの?
言語仕様上OKなら便利だから使いたいな。
0817デフォルトの名無しさん
2009/01/25(日) 19:39:250818デフォルトの名無しさん
2009/01/25(日) 19:41:270819デフォルトの名無しさん
2009/01/25(日) 19:43:18複数の定数にまとまった名前がつけれる。
ただ、string->enumの暗黙変換が出来るから微妙だけど。
0820デフォルトの名無しさん
2009/01/25(日) 19:50:050821デフォルトの名無しさん
2009/01/25(日) 19:50:220822デフォルトの名無しさん
2009/01/25(日) 20:02:120823デフォルトの名無しさん
2009/01/25(日) 20:03:23namespaceなんてないよ
0824デフォルトの名無しさん
2009/01/25(日) 20:06:01ない。そういう関数を自分で用意する以外に。
0825デフォルトの名無しさん
2009/01/25(日) 20:07:340826821
2009/01/25(日) 20:21:00そっか。どうもありがとう。
enum に値を追加したら文字列化関数にも実装を追加
しないといけないから、ちょっとメンドクサイよね。
0828デフォルトの名無しさん
2009/01/25(日) 20:35:01namespaceは無い。けどstatic structならあってそれで十分なはず。tupleof+stringofで名前取り出しもできる…か?
0830デフォルトの名無しさん
2009/01/25(日) 22:00:45そこでstd.typeconsにあるdefineEnum
0831デフォルトの名無しさん
2009/01/26(月) 18:12:420832デフォルトの名無しさん
2009/01/26(月) 18:50:56Future Directions
1. Template inheritance.
0833デフォルトの名無しさん
2009/01/26(月) 23:12:240834デフォルトの名無しさん
2009/01/26(月) 23:19:09あともうひとつ何かあった気がした。
0835デフォルトの名無しさん
2009/01/27(火) 15:48:090836デフォルトの名無しさん
2009/01/27(火) 16:28:090837デフォルトの名無しさん
2009/01/27(火) 22:18:330838デフォルトの名無しさん
2009/01/28(水) 16:11:08http://jp.youtube.com/watch?v=oAhrFQVnsrY
0839デフォルトの名無しさん
2009/01/28(水) 18:24:26なんか疲れてきた。
0840デフォルトの名無しさん
2009/01/28(水) 18:29:450841デフォルトの名無しさん
2009/01/28(水) 19:23:22IDEもそれなりのものが既にあるし、ライブラリもそれなりに整ってきた。
Dはインフラを得た代わりに話題を失いつつある…そんな気がする。
0842デフォルトの名無しさん
2009/01/28(水) 19:25:05おや?伝説のIDEかな?
0843デフォルトの名無しさん
2009/01/28(水) 19:44:28ウォルたんは次あ何をしようとしているのかなあ
0844デフォルトの名無しさん
2009/01/28(水) 19:45:24これから始めるなら問答無用でD2でもいいんじゃないか
0845デフォルトの名無しさん
2009/01/28(水) 19:45:440846デフォルトの名無しさん
2009/01/28(水) 19:49:16魅力的な更新が減ったのがなぁ。gdcの更新も滞っているし、ldcはまだまだだし。
ldcの安定待ち。
>>838
凄いな。でもコンパイルタイムで色々しまくると激しく遅くなりそうな予感。
0847デフォルトの名無しさん
2009/01/28(水) 19:56:470848デフォルトの名無しさん
2009/01/28(水) 20:02:19魅力的な更新==破壊的な更新
なのかい?
0849デフォルトの名無しさん
2009/01/28(水) 20:04:030850デフォルトの名無しさん
2009/01/28(水) 20:52:390851デフォルトの名無しさん
2009/01/28(水) 20:54:33とりあえずgdcmacが安定してほしいのといくつかシンタックスシュガーが欲しい
0852デフォルトの名無しさん
2009/01/28(水) 20:55:41マクロより安全な方法で
0853デフォルトの名無しさん
2009/01/28(水) 20:57:290854デフォルトの名無しさん
2009/01/28(水) 21:48:340855デフォルトの名無しさん
2009/01/28(水) 22:30:100856デフォルトの名無しさん
2009/01/28(水) 23:02:54ttp://twitter.com/kinaba/status/1119668964
0857デフォルトの名無しさん
2009/01/28(水) 23:47:45それで作りたいシンタックスシュガーそのものではないのか?
0858デフォルトの名無しさん
2009/01/28(水) 23:50:490859デフォルトの名無しさん
2009/01/29(木) 00:39:44テンプレートできるからいらないとか言われてなかったっけ
0860デフォルトの名無しさん
2009/01/29(木) 01:22:080861デフォルトの名無しさん
2009/01/29(木) 01:25:180862デフォルトの名無しさん
2009/01/29(木) 01:28:58回避策
import std.typetuple, std.stdio;
struct tupleWrapper(TL...){
TL tl;
}
void main(){
TypeTuple!(string, int) tup;
tup = foo().tupleof;
writefln(tup[0]);
writefln(tup[1]);
}
tupleWrapper!(string, int) foo(){
return tupleWrapper!(string, int)("test", 12);
}
0863デフォルトの名無しさん
2009/01/29(木) 02:34:49http://dobbscodetalk.com/index.php?option=com_myblog&show=Porting-D-to-the-Mac.html&Itemid=29
0864デフォルトの名無しさん
2009/01/29(木) 03:28:24クリスマスにマックミニ買っちゃった!なんて、なんかちょっとかわいいw
0865デフォルトの名無しさん
2009/01/29(木) 03:39:350866デフォルトの名無しさん
2009/01/29(木) 12:04:220867デフォルトの名無しさん
2009/01/29(木) 22:58:19本家が Mac をサポートしてくれれば言う事無しだ
0868デフォルトの名無しさん
2009/01/31(土) 01:44:07なんか利点在るの?これ・・・
0869デフォルトの名無しさん
2009/01/31(土) 03:16:200870デフォルトの名無しさん
2009/01/31(土) 09:02:34D1.038 で落ちることがよくある・・・。
例えば
long[string] hoge;
に対して
foreach (key, h; hoge)
{
hoge.remove(key);
}
hoge.remove(key) じゃなくて writefln(key) とかなら全然大丈夫。
0871デフォルトの名無しさん
2009/01/31(土) 10:20:01hoge = null;
でおk
0872デフォルトの名無しさん
2009/01/31(土) 10:20:550874870
2009/01/31(土) 21:07:19auto remove_keys = hoge.keys.dup;
foreach (key; remove_keys)
{
hoge.remove(key);
}
0875デフォルトの名無しさん
2009/02/01(日) 12:57:35そうするとイテレータが必要になってくるのか
0876デフォルトの名無しさん
2009/02/01(日) 14:24:46import b;
import c;
void main() {
Hoge h;
}
---b.d
interface Hoge {}
---c.d
import b : Hoge; // : Hoge を無くせば直る
alias Hoge[] HogeArray;
---
a.d(5): Error: b.Hoge at b.d(1) conflicts with c.Hoge at c.d(1)
名前指定インポートつかえねえええ
0877デフォルトの名無しさん
2009/02/01(日) 19:21:36滅多に使わないよなぁ、丸ごとインポートすれば事足りるし
public付けたりしたらより一層意味不明な事になりそうだな、試してみよう
0878デフォルトの名無しさん
2009/02/01(日) 20:06:27ただシンボルとしては同じなんだなー
完全修飾して衝突さえ回避すればHogeArrayにb.Hoge連結できるし、
Hogeをクラスに変えたらb.Hoge h = new c.Hogeで怒られない
だがこうなるとどうして衝突で怒られるのかが不思議だ、やっぱりバグか?
0879デフォルトの名無しさん
2009/02/02(月) 00:08:12privateとかいろいろと
0880デフォルトの名無しさん
2009/02/05(木) 01:29:57理由は開発者の数が少なすぎる。もっとも、ボランティアの開発グループ
を結成して実用的なものに改良を加えていくとC++みたいに言語使用が破綻
するが。。。
JAVAが一応、成功した理由にはいろいろあるが、GUI、マルチスレッド
のサポートが大きいと思う。C++でもそういうのを整備してほしい。
しかし、MSがC++/CRIをANCI C++委員会?で却下されたのは仕方ない。
独特の癖があるから。
0881デフォルトの名無しさん
2009/02/05(木) 01:43:010882デフォルトの名無しさん
2009/02/05(木) 02:05:260883デフォルトの名無しさん
2009/02/05(木) 03:14:03だが勇者ブライトはそんな過ちを繰り返すことはなかったッ!
0884デフォルトの名無しさん
2009/02/05(木) 03:33:000885デフォルトの名無しさん
2009/02/05(木) 03:48:51だっておもしろいんだもの、D。
0886デフォルトの名無しさん
2009/02/05(木) 05:15:55再帰呼び出しを恐れず書ける
0887デフォルトの名無しさん
2009/02/05(木) 12:31:050888デフォルトの名無しさん
2009/02/05(木) 19:15:370889デフォルトの名無しさん
2009/02/05(木) 19:59:360890デフォルトの名無しさん
2009/02/06(金) 02:50:120891デフォルトの名無しさん
2009/02/06(金) 03:38:37少なくとも末尾最適化はされているっぽい
0892デフォルトの名無しさん
2009/02/06(金) 10:34:20WindowsFormsとか使えれば流行る気がする
0893デフォルトの名無しさん
2009/02/06(金) 10:42:010894デフォルトの名無しさん
2009/02/06(金) 10:49:080895デフォルトの名無しさん
2009/02/06(金) 10:53:590896デフォルトの名無しさん
2009/02/06(金) 12:55:42pureじゃなくても末尾最適化はできるんじゃないの
0897デフォルトの名無しさん
2009/02/06(金) 13:39:59ランタイムの不要なバイナリをはくという利点が消えるな
Win7 の登場で、利点がべつにどうでもよくなりつつあるけどな。
0898デフォルトの名無しさん
2009/02/06(金) 14:06:480899デフォルトの名無しさん
2009/02/06(金) 14:13:490900デフォルトの名無しさん
2009/02/06(金) 14:20:02うけると思うぜ?
誰がつくってw
0901デフォルトの名無しさん
2009/02/06(金) 14:44:50単にコンパイラに読みやすいか否かなのかも知れんが、
10^10回くらい再帰する関数にpureつけるかつけないかでコンパイル時間が相当変わる
>>900
LLVMとかぶるんじゃないかなあ
0902デフォルトの名無しさん
2009/02/06(金) 14:50:33void main()
{
Random r;
long n = r.next*1000000000L;
auto perf = new PerformanceCounter;
perf.start;
recursion(n);
perf.stop;
writeln(perf.milliseconds);
}
long recursion(long n) pure {
if(n==0)
return 1;
else
return recursion(n-1)+n;
}
// pureなし → Stack Overflow
// pureあり → 0 (milliseconds)
0903デフォルトの名無しさん
2009/02/06(金) 15:06:490904デフォルトの名無しさん
2009/02/06(金) 15:08:040905デフォルトの名無しさん
2009/02/06(金) 15:10:55んー、コンパイル時間が変わるってのはCTFEしようとしてるんじゃないか。
末尾再帰最適化に時間はかからないはずだが
0906デフォルトの名無しさん
2009/02/06(金) 17:16:23覗いて見たらコード丸々削除でしたorz
>>905
定数ぶっ込むとpure付きなら問題ないが、なしだとdmdが終わりません。
が、上記アレなんで……
0907デフォルトの名無しさん
2009/02/06(金) 17:54:570908デフォルトの名無しさん
2009/02/07(土) 01:05:15invariant protected {
private {
protected {
static public {
export {
static {
invariant {
const {
nothrow pure auto a="(;´Д`)";
}
}
}
}
}
}
}
}
}
自分でも何したかったのか分からん
0909デフォルトの名無しさん
2009/02/07(土) 01:19:500910デフォルトの名無しさん
2009/02/07(土) 17:23:38試しに下を動かすと"Error: Out Of Memory"を吐いて落ちる。
int main(char[][] args)
{
for (int i = 0; i < 32; i++) {
a();
}
return 0;
}
void a()
{
new char[96 * 1024 * 1024];
}
gdc 0.24 mingw なんだけど、何かGC動かすための条件とかある?
何か勘違いしてるのかな・・・
0911デフォルトの名無しさん
2009/02/07(土) 18:45:03暗黙的に行われるメモリ回収はいつ行われるのか予測不可
その暗黙的にメモリ回収を行わせる条件の話をしてたならスマソ判らん
0912910
2009/02/07(土) 21:33:00forの中にstd.gc.fullCollect()を入れてみても結果は変わらず。
deleteはOKだったが、GCを使う旨味が・・・
といわけで、暗黙的にメモリ回収を行わせる条件が知りたいんですけど、
GC周りのソースを読んで調べるしかないですかね・・・
0913デフォルトの名無しさん
2009/02/07(土) 21:41:18サイズの問題とか?newした回数とか?よくわからんな
0914デフォルトの名無しさん
2009/02/07(土) 21:45:12サイズか回数か分かるんでない?
0915デフォルトの名無しさん
2009/02/07(土) 21:57:49freelist更新 → free して一回の呼び出しで free に到達するかどうかは 運次第
0916デフォルトの名無しさん
2009/02/08(日) 00:41:23>deleteはOKだったが、GCを使う旨味が・・・
逆に考えるんだ。こういう困った場面で小手先の対処(delete)が可能なのがDなんだと。
0917910
2009/02/08(日) 01:13:23int main(char[][] args)
{
for (int i = 0; i < 5; i++) a();
for (int i = 0; ; i++) b();
return 0;
}
void a() { new char[1 * 1024 * 1024]; }
void b() { new char[1 * 1024 * 1024]; }
a():new char[1 * 1024 * 1024]
b():new char[1 * 1024 * 1024] で、メモリ4,600K以上上昇せず。
a():new char[96 * 1024 * 1024]
b():new char[1 * 1024 * 1024] で、753,364K。
a():new char[96 * 1024 * 1024]
b():new char[24 * 1024 * 1024] で、788,424K。
a():new char[96 * 1024 * 1024]
b():new char[25 * 1024 * 1024] で、Out Of Memoryで落ちる。落ちる直前で1,300,000Kくらいまでいってた。
よくわからないが、サイズが問題なのかな?24MBがボーダーライン?
>>916
とりあえず、そう考えてdelete使います・・・。
0918デフォルトの名無しさん
2009/02/08(日) 01:58:56std.utf か std.uni かなんかの使ってるマジックナンバーが
24MBおきくらいの値を漏れなくとってるので、
それが偽ポインタとみなされて、ある程度以上でかい配列は
全て常にグローバルから参照されてる扱いになっちゃってるとか
そんな問題が昔あったので今もあるのかも
0919デフォルトの名無しさん
2009/02/08(日) 05:31:520920デフォルトの名無しさん
2009/02/08(日) 07:38:160921デフォルトの名無しさん
2009/02/08(日) 08:23:160922デフォルトの名無しさん
2009/02/08(日) 11:21:090924デフォルトの名無しさん
2009/02/08(日) 15:49:160925デフォルトの名無しさん
2009/02/08(日) 18:07:42発展させるには、ってことか。
0926デフォルトの名無しさん
2009/02/08(日) 18:27:120927デフォルトの名無しさん
2009/02/08(日) 18:52:58泣きながらPhobos作ってんじゃね?
0928デフォルトの名無しさん
2009/02/08(日) 19:07:160929デフォルトの名無しさん
2009/02/08(日) 20:32:390930デフォルトの名無しさん
2009/02/08(日) 22:23:550931デフォルトの名無しさん
2009/02/08(日) 22:52:380932デフォルトの名無しさん
2009/02/09(月) 00:48:10std.xmlだと上手くいかなくて・・・
0933デフォルトの名無しさん
2009/02/09(月) 01:11:43あきらめろ
0934デフォルトの名無しさん
2009/02/09(月) 01:55:22それだとDユーザーっぽくないな。自分で作れ、じゃなかろうか?
PhobosだのTangoだのを参考にすればそこまで労せず作れる気がする。
0935デフォルトの名無しさん
2009/02/09(月) 01:55:24色んなパーサ読みながら、解決方法考えてみます。
ありがとうございました。
0936デフォルトの名無しさん
2009/02/09(月) 03:18:240937デフォルトの名無しさん
2009/02/09(月) 03:21:150938デフォルトの名無しさん
2009/02/09(月) 07:25:46libxmlのラッパでも書いて呉れよ
0939デフォルトの名無しさん
2009/02/09(月) 08:15:010940デフォルトの名無しさん
2009/02/09(月) 18:27:170941デフォルトの名無しさん
2009/02/09(月) 20:10:090942デフォルトの名無しさん
2009/02/09(月) 20:35:240943デフォルトの名無しさん
2009/02/09(月) 20:51:12簡単なのはいいことだと思うが
0944デフォルトの名無しさん
2009/02/09(月) 21:34:31開発するのに .NET/Mono なんて大層なモノ使いたくないから
マゾだから
けど確かにライブラリの豊富さだったり、
GCの実装具合とかで羨ましくもなる。
0945デフォルトの名無しさん
2009/02/09(月) 21:38:090946デフォルトの名無しさん
2009/02/09(月) 21:53:37ネイティブコード吐くの捨てなきゃ歓迎。
0947デフォルトの名無しさん
2009/02/09(月) 21:54:23ttp://www.atmarkit.co.jp/news/200901/29/mono.html
0948デフォルトの名無しさん
2009/02/09(月) 21:57:580949デフォルトの名無しさん
2009/02/09(月) 22:10:340950デフォルトの名無しさん
2009/02/09(月) 22:11:390951デフォルトの名無しさん
2009/02/09(月) 22:15:460952デフォルトの名無しさん
2009/02/10(火) 00:37:57書くのが速くなっても生産性があがるわけじゃないからなぁ・・・。
0953デフォルトの名無しさん
2009/02/10(火) 04:59:34Java,C#のVMの出来が良くなって来た事が原因だと思うけど、
MicroSoftを始めIDEベンダーはガン無視じゃん、酷すぎる。勉強した時間を返せ
0954デフォルトの名無しさん
2009/02/10(火) 05:47:03http://tripper2.kousaku.in/?Ct
D言語が配列演算急いだのはこれからかな。
そのうち水平演算も来るか?
0955デフォルトの名無しさん
2009/02/10(火) 12:29:24まだDは若いしそんなもんだと思うけど
0956デフォルトの名無しさん
2009/02/10(火) 15:32:22インテリセンスがあればメンバ調べたりする手間省けるだけ効率はあがるw
0957デフォルトの名無しさん
2009/02/10(火) 15:48:24言語いじること自体が好きなタイプ
C#使ってるがちょっと背伸びしてみたいタイプ
の2つにわかれるのかな?
で、もっともターゲットにしたいC/C++ユーザからはしかとw
0958デフォルトの名無しさん
2009/02/10(火) 18:15:05若いっても出てから4〜5年ぐらいたってなかったか?
0959デフォルトの名無しさん
2009/02/10(火) 18:43:230960デフォルトの名無しさん
2009/02/10(火) 18:43:480961デフォルトの名無しさん
2009/02/10(火) 19:50:29GCがあって、お気軽に使えてコンパイルの速いC++みたいなのがあったらいいな〜
ってC++使いもいると思う。
そして何度も「ちくしょう、まだ早すぎたんだ!」を繰り返しながら、
夢を見続けると。
0962デフォルトの名無しさん
2009/02/10(火) 21:49:32Java=Sun
C#=MS
D=DigitalMars
まあ無理だろ
こうなるのは目に見えてた
0963デフォルトの名無しさん
2009/02/10(火) 21:49:33ウォルタンは孤高の道を行くから・・・
0964デフォルトの名無しさん
2009/02/10(火) 21:54:07どう考えてもC#と違って.NETみたいなクロスランゲージな世界には向いてない
0965デフォルトの名無しさん
2009/02/10(火) 21:57:150966デフォルトの名無しさん
2009/02/10(火) 22:00:030967デフォルトの名無しさん
2009/02/10(火) 22:05:26>言語いじること自体が好きなタイプ
言語オタクが実験を繰り返すだけで
実用的なアプリを誰も作らないから流行らないんだよな
D言語とかハスケルとか
0968デフォルトの名無しさん
2009/02/10(火) 22:09:05Dは一応実用重視を謳ってるのにこれじゃあ…
0969デフォルトの名無しさん
2009/02/10(火) 22:16:42MSよりはGoogleに拾って欲しいな
Native Clientもあるし、C++使いばっかりだから
中の人との相性も悪くないと思う
0970デフォルトの名無しさん
2009/02/10(火) 22:22:240971デフォルトの名無しさん
2009/02/10(火) 22:27:05ゲームばっかだよねこの言語
0972デフォルトの名無しさん
2009/02/10(火) 22:39:190973デフォルトの名無しさん
2009/02/10(火) 23:00:27http://www.soywiz.com/d/pspemulator/
0974デフォルトの名無しさん
2009/02/10(火) 23:06:18業務アプリは.netでいいし
0975デフォルトの名無しさん
2009/02/10(火) 23:11:210976デフォルトの名無しさん
2009/02/10(火) 23:18:170977デフォルトの名無しさん
2009/02/10(火) 23:19:590978デフォルトの名無しさん
2009/02/10(火) 23:24:460979デフォルトの名無しさん
2009/02/10(火) 23:54:100980デフォルトの名無しさん
2009/02/11(水) 00:27:270981デフォルトの名無しさん
2009/02/11(水) 00:32:13流れの中でキレイなオチをつけたなww
0982デフォルトの名無しさん
2009/02/11(水) 09:27:480983デフォルトの名無しさん
2009/02/11(水) 12:29:15いつまでもC++にしがみついてる奴等がムカつく
特にゲ製作技術板なんてC++の話ばっかで全然ゲ製作技術を話してない
0984デフォルトの名無しさん
2009/02/11(水) 12:33:560985デフォルトの名無しさん
2009/02/11(水) 12:39:000986デフォルトの名無しさん
2009/02/11(水) 12:52:19もっとも自動的に挿入してくれるからあんまり意識しないけど
0987デフォルトの名無しさん
2009/02/11(水) 13:42:180988デフォルトの名無しさん
2009/02/11(水) 21:35:09テキスト処理が強力だから手元用で便利に使っているのだが、
公開するほどでもないし、ちょい用途ではスクリプト言語に適したものがあるしねえ。
という意味でDがそれなりに活躍できる用途は高負荷なウェブサーバ関連処理だと思う。
個人的には1からPHPで書くくらいだったら、
DにCGI / FastCGI用のインターフェースでも書くかなと。
0989デフォルトの名無しさん
2009/02/11(水) 21:56:40メンバメソッドに&つけるとデリゲートがかえって来ちゃう。
どうすればいいの?
0990デフォルトの名無しさん
2009/02/11(水) 22:03:40&typeof(obj).member ?
0991デフォルトの名無しさん
2009/02/11(水) 22:08:410992デフォルトの名無しさん
2009/02/11(水) 22:36:130993デフォルトの名無しさん
2009/02/11(水) 22:43:49を自動生成するテンプレート関数なら作れそう
0994デフォルトの名無しさん
2009/02/11(水) 23:06:10D言語仕様の知識としてでしか知らんから役に立たないものかも知れんが
>デリゲートの .funcptr プロパティは、 function型で関数ポインタの値を返します
てか1000近いな
0995デフォルトの名無しさん
2009/02/11(水) 23:07:37auto fp = &MyClass.func;
void delegate() dg;
dg.funcptr = fp;
dg.ptr = cast(void*)obj;
タイプセーフじゃないのでもう少しましな方法がある気がする
0996デフォルトの名無しさん
2009/02/11(水) 23:18:42それって仮想関数でも大丈夫?
0997デフォルトの名無しさん
2009/02/11(水) 23:28:41「仮想関数で動くかどうか心配でしたがその方法でうまく行きました」とか
「仮想関数では○○という結果になりました」とかさあ…
0998デフォルトの名無しさん
2009/02/11(水) 23:31:12まだコンパイラすらダウンロードしてないです^^;
0999デフォルトの名無しさん
2009/02/11(水) 23:47:04http://pc11.2ch.net/test/read.cgi/tech/1234363551/
1000デフォルトの名無しさん
2009/02/11(水) 23:49:0710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。