1 :
デフォルトの名無しさん :
2011/04/17(日) 15:41:27.44
E
ぬるぽ
._
┌――─┴┴─――┐
│
>>1 乙 │
└―――┬┬─――┘
││ ./
゛゛'゛'゛ /
/
| \/
\ \
\ノ
999なら2012年中くらいにはD2の仕様が固まる
ワラタ
そして phobos2.1が登場する
void main() { phobos2_1.io.Stdout.Stdout("hello, world!").newline; }
2ヶ月たったな・・・ハァハァ
なにか動きはないのかね
interface I { void func1(); void func2(); } abstract class C1 : I { override void func1() {} } class C2 : C1 { override void func1() {} // ok // override void func2() {} // だめ void func2() {} // ok } 孫の実装はoverrideじゃないというのか… これのせいでBlackHoleがエラーになって嵌ってもうた
>>12 ・インターフェイスの継承は、継承したクラスにだけ効力がある。
・そもそも、インターフェイスの仮想関数には実装が無いので、 override は不要。(そのコードの C2.func1() には必要)
・どうしても気になるなら、 C2 にも I を継承させてみるとか。
・初めて知ったけど、 abstract なクラスって、なんでインターフェイス全部実装しなくてもいいんだ?
ん・・・、 C2 の func2() コメントアウトしたら、 I の関数が実装されてないって怒られた。 まあ、軽い仕様抜けかね。 実害は無いけど。
>>13 BlackHoleがoverrideつける必要がそもそも無いんだな
>>12 overrideは実装を覆い隠しますって意味じゃなかった?
func2はC2で初めて実装するからそれが正しい挙動だと思うけど違うの?
>>16 だとするとC1の実装にoverrideがついてるのがOKなのがおかしい
Javaでは確かインタフェースの実装に@Overrideがついてたらエラーになったと思う
そして例によってドキュメントにはテキトーなことしか書いてなかったりする…
>>17 > Javaでは確かインタフェースの実装に@Overrideがついてたらエラーになったと思う
それ1.6で変更されたはず。変更前の1.5ではエラーになるけど。
D言語をこれから始めよう(同人ゲーム制作)と思っている物なのですが、 やっぱり、2.0をやった方がいいのでしょうか? 昔、Dを触れたときに、ちょっと見ないうちに予約語Levelで変更されたりで長期使う気が起きなかったのですが、 今観てみたら1.0はメンテナンスと成っていて、なんか安定(? 破壊的変更はもう起こらない?)しているように見えるので そっちを使ってみたいと思っています。が、 公式の翻訳サイトさんだと、これから始めるプロジェクトには2.0を と書いてあるのですが、 1.0じゃなくて2.0を使うメリットはなんでしょうか? (その逆に、2.0じゃなくて1.0を使う場合のデメリットなどはあるのでしょうか?) また、2.0で今後破壊的変更が起こりそうな部分とか分かっているのでしょうか? #公式の翻訳サイトさんの 1.0から2.0 の部分を読んだ限りでは、1.0の方が #今後破壊的変更の確率が大幅に低い分だけ魅力的に見えたので、使っている方々のご意見をお願いいたします。
2.0はだいぶ安定してきてるけどまだ破壊的変更があるかもしんないね 言語レベルではともかくライブラリレベルではまだまだありそう <del>D1が安定してるのは幻想</del>D1は言語的には使いやすいC++という感じだけど、 とにかく標準ライブラリが弱い。Cの標準ライブラリに毛が生えたくらいのもん。 Tangoという次期標準を目指してた強力なライブラリがあるんだけど、 ライセンスがアレだったり本来の標準ライブラリを無効化してしまったり 命名規約がクソだったりして(特に日本では)評判が悪い上にまだ1.0が出てない D1とD2は言語レベルで別物といってもいいくらい変更が入ってるので、 これから置いていかれる一方のD1を使って本当に将来後悔しないの?D2へ移行するの大変だよ?というのもある という感じで、開発そのものを長く継続するつもりである場合はD2を、 とりあえず今ソフトを完成させるんだ、ということであればD1を、選ぶのが個人的にはいいかなと思ってる D1のライブラリの弱さは大和魂か何かで何とかする あと、D1+Tangoは破壊的変更がありうるので要注意
>>20 目的が同人ゲームならC#とかC++の方がいいかと
Dを使う人はDを使うためにソフトを作っているのです
>>20 は既に C++あたりを習得済みとエスパーしつつ
破壊的変更がそれほどイヤなら
D言語なんかとんでもない! という他ない
このスレは破壊的変更を喜ぶマゾが多数を占めていて感覚がマヒしている
破壊的変更が怖い、でもscope文とかめっちゃ使いたい そんなときにはこれ「2.xxxバージョン決め打ち」その後バージョンうpしても無視 そして言語のバグで悩む
ひーひー言いながら使ってるのを見てるのが楽しい そういう言語だ
>>20 D1からD2で特に強化された機能は、
マルチスレッドプログラミングのサポートと、
標準ライブラリの超充実と、C++とのインターフェイスか。
これらの機能に魅力がなければ、D1でもいいかと。
>>20 客観的にC#使った方が効率いいのは分かってるけど
Dを使うこと自体に意味があるって感じだよね・・・ まさに
>>22 これから始める同人てことで
・ゲーム作ることが目的ならC#
・.NETが嫌ならC++かスクリプト系
・プログラミング自体を楽しみたいならD2
・D1を選ぶくらいの弱腰ならC#
俺は仕事以外はもうDの最新版ばっかだな。Dは嫁
>>24 D1にもscope文はある
遅延評価もある
property += xxを property = property + xxに展開してくれると聞いて始めたD2ですが いまだにこれをしてくれません 騙されたッッ
D1にはクロージャがないからなぁ
クロージャって、何に使うの?
継続
GUIのイベント処理とかに便利
GUIのイベント処理と言われてもピンとこないな。 デリゲートに対して言うならピンと来るけども。
>>32 外側の変数を直接使えるのがいい
しかもJavaでfinal変数を使うときと違って変更できる
安価間違えた…
>>35 それはクラスのインスタンスを作ってやるのとどう違うの?
>>34 普通にコールバックの話じゃないの
俺の知る限り20年以上前から言われてる事
自分で調べてきちゃった♪ ...すまん。
>>29 組み込みのlengthなんかはしてくれるんじゃなかったっけ。
foreachが隠れクロージャになってるおかげで 変数のスコープがどうの言われるバグにぶち当たった まだまだだな
>>37 継続いいよ継続
↓はあんまいい例じゃないけど
void button_onClick()
{
auto o = new LocalObject;
TimerProc(
100, // 100ms後にタイマイベントがキューイングされ下のクロージャが呼出される
{
// ここはoを作成した場所と処理順的にも時間的にも離れているが
// あたかも連続しているかのように処理を書ける
doSomething(o);
}
);
}
try-finallyとscopeガード文の差みたいなもんで 前者でもできないことはないがものすごくめんどくせぇ、ってことだな
>>44 それは確かに便利。
...自分が使う機会はあるだろうか。
あ、継続って継続の事かと思ったら、継続の方か。
>>46 それ、クロージャとあまり関係無さそうだけど...
>>21-28 どうも、ありがとうございました。
エスパーされてる通り、普段はC++(とruby)を使ってるBoost大好きっ子だったのですが、
ふと、振り返ったときに、Boostって本当に黒魔術で無理くりコンパイラとかを使ってるだけの
実はバッドノウハウの塊で、C++を使うというお題目のために思考硬化してるんじゃ?
Boostの使い方だけ上手くなってて、どんどんと袋小路に自分から突っ込んでいっていないか?
本当にプログラマーとしていいのだろうか?
だとしたら、そろそろ本業以外では新しい言語を勉強しておくべきだろう。
と思っていて、「Dが面白そうじゃないかな?」と考えていました。
#Rubyは{}じゃなくてbegin endな所が、どうも本気でやる気に成れない。
#コンパイルが通る事で得られる確証がないのでなんとなく、大きな物を作るに抵抗が。
#2.0が見えてきたり(噂の標準化も進んでるらしかったり)で、
#そもそも、本腰入れて勉強しなおすには、「待ち」だろう…と。
みなさんにC#が良い。C#が良いと推薦されたので、そちらに「D言語への期待」をぶつけたいと思います。
D言語の発展と繁栄を願って、
それでは。
>>51 >だとしたら
だとしなかったらどうするのと
C#は先進的かつ素直ないい言語だよ 頑張ってくれ さて、また今日も先進的すぎるじゃじゃ馬をあやす作業がはじまるお…
前のスレで確かこんな話が出てた C#はすでに崖っぷち Dの方が3歩くらい先を行ってる
つまり先に崖の下に落ちているんですね
まだ、崖の下と決まったわけじゃない。 もしかしたら、万に一つかもしれないが、天高く飛び立つその第一歩なのかもしれない。
キリ
崖の底に落ちても2歩は歩いたんだね。殺しても死なない言語!
崖から落ちてるのに気付かなかっただけさ
std.algorithmにソート済みのrangeを探索する関数があったような気がしたんだけど 無くなったのかな それとも夢でも見てたのかな
find
findって二分探索とかしてくれんの?
std.range assumeSorted でインスタンスつくって canFind でどうかな ただし有り無しの判断しかできない
あ、ごめん SortedRangeのcontainsとかlowerBoundとかequalRangeとかってやつじゃね algorithmじゃなくてrangeだけど
ぶっちゃけ破壊的変更って苦じゃなくね?? 良い方へ向かってるって思うからかな?
Dの更新についていくだけで勝手にコードがリファクタリングされていってるんだぜ・・・フフフ
69 :
67 :2011/04/28(木) 02:17:21.99
とか言ってたら下記のような見たことないウィンドウが出て リンクに失敗した・・・。こういうのは苦。。。 --------------------------- Unexpected OPTLINK Termination at EIP=0042785B --------------------------- EAX=0007C224 EBX=00000202 ECX=00000002 EDX=01610000 ESI=0043E86C EDI=01614000 EBP=0012FFF0 ESP=0012FF74 First=00402000 --------------------------- OK ---------------------------
そいつはdmdじゃなくてOPTLINKのせい…たぶん -gをつけないと出ないことがある
>>66 おお、こんなところに…ありがとう
Phobosって強力になっていくのはわかるんだけど
見通しとかわかりやすさがどんどん落ちてる気がする
趣味で使うんならF#オヌヌメ
>14 abstractじゃないクラスは先祖からたどったときに全ての関数を実装済みにする必要があるってだけだから、仕様抜けではないんじゃ?
75 :
52 :2011/04/29(金) 20:56:16.47
鼻水でた。例外にも程があるだろww
メンバへのポインタもてないのかよ
これは何がどうなっているんだ
D言語でTCPソケットのサーバーを書くのに参考になるページが見つかりません。 相手のホスト情報の取得、マルチスレッドでの実装、などが必要です。 色々漁ったけど、クラスの説明が断片的すぎて、使い方がわかりません。 まともなリッファレンスや、参考にできるようなソースをご存知でしたら、 教えてください。おねがいします。
それ以前にstd.socketの全面刷新はいつだ
そういえば使ってはいけないリストに載ってたな そろそろテスト段階だったりするんだろうか?
今のstd.socketを使うならDのドキュメントよりJavaのサンプルを探したほうが参考になる気がする 似たような構造だったよね?
83 :
75 :2011/04/30(土) 15:12:05.41
>>76-78 俺も何をされたのかわからなかったが、とりあえずレポートしときました。
>>81 使ってはいけないリストkwsk
>>84 の使ってはいけないリスト
テンプレに入れとくべきだったな
std.stream難民・・・
87 :
79 :2011/04/30(土) 17:31:04.61
え、結局、Cのsys/以下のライブラリをつかえば、安全・・・? なんだかなぁ・・・。
>>87 そうじゃなくて、あなたが自分でライブラリを作って、
Phboosに入れたいんだけど!ってMLに殴り込みかけて
Phobosのコミッターになればすべて解決。
D 言語って C++ 1x の別名なのか・・・。 知らんかった!
すべてIOの仕様が決まらないのが悪いってのが結論でおk?
D言語を愛してはいるが別に深く関わりたくはない
なんでIO決まらないのよ
>>92 他の言語でもI/Oは難しい問題で、
いままで他の言語のいいところをパクリまくって来た
D言語も同じところまで到達してしまったから。
>>79 ホストの何の情報が必要なのかは知らないけど、情報送りたい側が自分で収集して送るしかないんじゃね。
マルチスレッドの方は何がしたいのか分からんからなんとも言えない。
わかりやすい情報? そんなの期待する方が(ry
>>84 レスありがd!
ここに載ってるやつを使えばイイ(破壊が来る)って事だよな!
無茶しやがって・・・
これが生粋のD言語erか…
配列中で指定の要素が最初に出てくる位置を知りたいときに使う関数はありますか? findかと思ったのですがrangeを返してくるのでコレジャナイ感があります
>>84 今は CTFE があるから metastrings は無くてもいいよね
って話をどこかで見た気がする
DMD 2.052ではstd.string.formatもsformatもCTFE出来ないな
代わりなんてなかった
他に理由があるなら俺も知りたい
構造体扱っててメンバへのポインタ無いと辛いんだが何か代替策ないかな・・・classなら問題ないんだが
え、メンバへのポインタ取れないの? .offsetof とか使えってこと??
>>99 countUntilだと思う
range関係の関数で配列を扱うときのコレジャナイ感は異常
日本語訳に入ってないやつだw さすがに std.datetime以外の変更分だけでも更新してほしいと思うココロ さて、俺のソースも直しておくか・・・
レンジの途中Aから始まって、レンジの終わりまで行ったら先頭を差して、Aに到達するまでイテレートする。 そんな新しいレンジを生み出すユーティリティ関数はありませんか?
>>105 cycleで無限レンジに拡張して、popFrontN(A)した後、元のレンジの長さ分takeすればおk
単品だと無さそうだなー
std.array.array(range[A..$]) ~ std.array.array(range[0..A])
チルダよりchainの方がよさそう
>>103 countUntilって名前からは計数するように思えるんだがなあ
findの結果の先頭を取るのではないの?
名前だけで話してるけど
.
>>109 うん、ぶっちゃけ俺もどうかと思ったけど
indexOf()を使おうとして「countUntil使えやゴルァ」って言われちゃったからなぁ
きっとD3では グローバルシンボルの名前かぶるのがウザイから 全部クラスのスタティックメンバにしちゃうよ☆ って言い出すに違いない
むしろグローバルシンボルの名前かぶるのがウザイからimport廃止
>>103 載っていないものもあるんですね、助かりました
std.typecons の defineEnum って deprecated って書いてあるけど これ使う代わりにどうしたら良いんだろう?
>>114 std.conv.toで相互変換できるからそれで
以下のように書いたのですが、実行時エラーになります。 ・・・ int j = 0; Thread[] thread_Clas; thread_Clas.length = 100; for(j = 0; j < thread_Clas.length; j++){ thread_Clas[j] = new Thread(&thread , cast(void*)j);//ここでひっかかる。 ・・・ } ・・・ 何がまずいんでしょうか?
117 :
114 :2011/05/03(火) 22:24:16.85
>>115 まぢですか。 conv さんは何でもできるなぁ。
コンパイル時以外にも使いたいけどできるかな。
試してみます。ありがとう!
昆布つえええ
>>116 何したいのか意味不明だけどエスパーするとthreadの中でスタックオーバーフローしてる
isだのtoだのまじはんぱねえ
>>119 1つ目でセグメンテーション違反で止まるんだ。
やりたい事は、C++でいうところの
int i = 0;
hogeClass** tp;
tp = new hogeClass* [100];
for(i = 0; i < 100; i++){
tp[i] = new hogeClass(i);
}
的なものなのだが。
>>121 Threadが自前のクラスではなくてstd.thread.Threadだと仮定すると
Threadのコンストラクタ第2引数はthreadのスタックサイズの指定だと思うんだけど
その辺は大丈夫?
訂正 ×std.thread ○core.thread
>>121 newで落ちるならむしろこっちか
this( void function() fn, size_t sz = 0 )
in
{
assert( fn ); ←
}
使っているのは、std.threadですね。 D言語で開発する手始めに、どこまでスレッドを吐けるかを検証してみようと思ったのですが、 なれない言語で、困惑してます。
あぁ、cast(void*)jをcast(void*)(&j)にしたら動きました。 参照にするの忘れてた。
D1だと…
D2スレとD1スレが必要だな
スレッドが1022しか吐けないないのだが、これはどうしたものか・・・。 thread.dをちょっといじくってみたが、変わらなかった・・・。
間違ってたらゴメン。 静的配列のサイズには上限があったはず。 動的配列使ってみては?
131 :
130 :2011/05/04(水) 06:35:06.02
ゴメン、動的配列にはすでにしてるんだね。
スレッドを1000個も使う局面ってちょっと思いつかないんだけど アクタークラスとかで十分なんじゃ
>>129 Windows?
普通はどれくらい作れるの?
134 :
129 :2011/05/04(水) 17:54:41.83
>>133 Linux(x64版)です。C/C++(Pthread)だと4万5千くらいスレッド吐けるので、
Dのstd.threadの最大スレッドが少ないなぁと・・・・。
えーと、クライアント数5000のサーバーを書こうかと思っています。
設計上、1万くらいスレッドが必要なのですが、全然足りません。
宣言そのものは65536以上いけるんですが、start()が1022個目でエラーで止まりますね。
std.thred.d の static Thread[0x400] allThreads; を改変して、
static Thread[0x4000] allThreads;にしても、リストの上限が増えません。
そういえば、同じインスタンスでstart()を呼び出すと、未定義動作になるんだっけ。
136 :
129 :2011/05/04(水) 19:53:43.07
too many threads とエラーがでるので、リストがいっぱいになっているはずなのですが、 リストの長さを増やしてもどうにもならない・・・。
137 :
129 :2011/05/04(水) 21:09:18.80
結局、pthredを直接使うことに。 どうも皆様、お騒がせしました。どうもありがとうございました。 そういえば、usleep的なものを探してみつからないのだが、どうやって休ませればいいのですか?
std.threadが存在してたのって何時代のD言語?
D1には無い 自分でextern(C)でプロトタイプ宣言するしかない
う〜ん・・・、やっぱり、usleepやsleepがない・・・。
組み込みのthread以外使うとGC使えなくね?
Thread.sleepみたいなのがあった気がするけどそれじゃないの? というかバージョンは何?
>>141 std.thread覗いてみたけど、std.threadでも、pthread使ってる。
GCが介入するような記述も見受けられないので、どうなっているか解らない。
>>142 gdc 0.24です。個別にPthredを使うので、std.thread.sleepが使えません。
どっかにあった気がするけど、どこだったかな 。
よくみたら、sleep()がstaticな件。 和訳が分かりずらいんだなこれ。
146 :
143 :2011/05/05(木) 00:16:18.80
はぁ・・・。サーバー系は、javaかC++で書いたほうが良さそうだ・・・。 基本仕様を見たらずいぶんといい感じな言語なのに、サーバー書くのがここまで辛いとは。 やはり、LinuxはC/C++で書いておくほうが無難なのかな・・・。 64Bit版にしたら、メモリのフラグメンテーションを気にしなくて済みそうだし。
>>143 gdc 0.24って開発が止まってるやつじゃん
aptとかで入れたのかもしれないけどgdcの最新はbitbucketにある方
それでも1022以上作れないんなら環境の問題な気がする
Dを使うなら最新のリリース版を使わないといけないよ。 trunkとは言わないけど。
D1は死滅しろ D3が出たらD2も死滅しろ
今はもうないライブラリを使って書くのが 将来的によいわけないよね。 新しいものの方が寿命は長い、はず!
電子の寿命は無限大さ!
152 :
143 :2011/05/05(木) 04:06:43.66
>>147 gccのバージョンの関係で、コレしか無理でした。
gccをバージョンアップしても、何故かDMDは動いてくれないし。
gdcじゃなくてdmdでやってみたら?
修羅の道ぞ…
155 :
143 :2011/05/05(木) 19:11:51.99
>>153 dmdが動かないです。gccのライブラリの不一致でエラー落ちします。
なので、色々試した結果、gdc0.24(gcc4.12用)しか動かなかったです。
そりゃ、gccが悪い。
dmdを動かすための質問をしては?
>>155 CentOS 5.5/5.6、x32/x64どちらもDMD動いてるよ。
DMDのソースをgccでコンパイルすればおk。
gccでビルドって簡単にできたの?
スマン、Linux開発で1年程度しか触ってないんで齟齬があるかも。 手順はdmd2.xxxx.zip 内の dmd2/src/dmd の linux.mak を Makefileにリネームしてmakeしただけ。 これでdmdとか出来るんで、以降のインストール手順はWebのそれと同じに。 dmd2.051あたりからzip内の元々入ってる奴がlibcと喧嘩して、 色々環境変えるの面倒だった(出来なかった)から自力ビルドしてる。
DでCOMコンポーネントDLLを作ろうと思っています。 VBS・JSで使うためのコンポーネントライブラリをVCで作ろうと思ったのですが、 Expressではウィザードがなかったもので、色々探してたらDでも作れることを 知りました。 Visual DなどIDEも使い慣れた環境でいけそうなので、Dに移行してみようかと 思っています。 DでCOMクラスを作るために、良い参考資料を教えていただけませんか?
公式にCOMプログラミングのページがあったよね? と思って見に行ったらちょっと類を見ないくらい簡潔だった
>>163 そうだったっけ?と思って見に行った
俺が見るときはいつも
"D で作る Win32 DLL"のページに脳内変換されていることに気づいた
まああっちもわかりやすい説明にはほど遠いけど
Dはじめてみた GeanyってD対応してんのな
166 :
161 :2011/05/08(日) 12:35:23.64
ありがとうございます。
>>162 を参考にしてみようと思います。
>>163 ,164
公式は私も見ましたが、ちょっと情報不足でしたので@@
先進的なDのことだから インターフェースから情報を取得して COMのタイプライブラリを自動的に吐いてくれるような ツールが作られているに違いない
int[2] a = 0, b = []; ・・・いや、特にどうということはないんだがw
D言語はマゾ向けと聞いてやってきますた。
勇者よよくぞきた さあ次のバージョン(2.053)が出る前にしこしこプログラムを書き上げるのだ
>>169 ちょうどDマスコットアクションプロジェクトで人手欲しがってるぞ
>>170 とりあえずは入門サイト的なもので勉強して練習プログラムを書いてる段階。
入門サイトのほんとに初歩のスクリプトもそのままだとふつうにコンパイル通らないね。
toIntじゃなくてto!intだとか、書式使わないのにwritefすると怒られたりとか。
>>171 ググっても出てこなかったけどなんぞや?
>>172 ちょっと待った。
その入門サイトってどこ?
少なくとも
>>1 に載ってるか?
シューティングゲームを作りたくてパチュリーに教えを乞うた とエスパーしてみる
というか今動くコードを載せてる入門サイトなんてあるのか?
パチュリーすぐる・・・
ここ地雷だったのか。 まあ動かないコードをエラーメッセージとか公式のドキュメントを参考に 書き直すの楽しいからいいか。 Ruby 1.8 -> 1.9 の破壊的変更で何かに目覚めてしまって……。
tangoとか…ハハッワロス
>>176 ここの人がいまやtango撲滅の急先鋒なんだから世の中わからんもんだ
>>178 そこ参考にするならD1の方使えば良いんじゃないかな・・・
そういえばPrincessDrawing!は落ち着いたらソース公開するとか書いてた気がするけどどうなった?
>>178 そこが地雷というわけではなく
・古い=あまり役に立たない
そして
・役立つサイトができてもすぐに陳腐化する
ゆえに
・みな役に立たない
あえていえば丁寧に作ってある分
裏切られた感は強くなるかもしれないw
>>181 本人じゃないしむちゃくちゃ勝手に代弁するけど、
記事を参考にしてD1のユーザが増えることなんて中の人は望んでいないはずだ! とかいってみる
>>181 1なのか2なのか書いてなかったから不安だったけどやっぱり1仕様だったのか。
今更1やっても微妙そうだし2用のサイトを参考にしてやることにするよ。
>>182 結局動かなかったら最新のドキュメントを参考に適当に手直ししつつやってけばおkなんだよね?
新参なのに D言語er の鑑だね。すばらしい。
versionはそのモジュールの中だけ有効っぽいんだけどどう使うんだよ enum+static ifの方が普通に柔軟なんだが あとstatic if絡みでこんなバグが enum hoge = fuga;// OK enum fuga = 1; enum foo = bar;// NG static if(hoge == 1) enum bar = 2; else enum bar = 3; versionだと問題ないっていうね
too early for D2 and too late for D1
public version = Hoge; ってやったら公開できるのかな?
えっ
dmd -version=Hoge
module a; public version = Hoge; module b; import a; version (Hoge) write("Hoge is defined."); ってできない? いま試せないんだ。
>>186 つコマンドライン
基本的には外部のビルドツールなんかから操作出来るようにする機能なんだろう。
関数をまるまるversion(none)する時、{}で囲んだけど、よく仕様見たら、{}入らなかったんじゃね? と、思った。
公式ドキュメントにvoid main()のことが無いんだけどお前らどう思う?
Visual D の更新キタ 構文エラーハイライトは大きい
何時の間にこんなに更新されてたんだ。
VisualD を早速入れてみた。 けどビルドできねー。。必要な手順が分からん・・・。 ビルドは bud でいいけど、インテリセンスだけでも使えないかなぁ・・・。
Visual Dのデフォルト文字コードを変える方法を発見。 VisualD\Templatesに入ってるソースコードを、デフォルトにしたい文字コードで保存すればおk。
>>199 インテリセンスにはあまり期待しないのが吉
本領はデバッグ機能、最強
204 :
186 :2011/05/09(月) 17:04:10.80
>>190 ,192
それだとしっくり来ないんだけどなんとなく使い方を見いだせた気がする
ちなみにバグの件は関数に値を返させることで回避可能
205 :
199 :2011/05/09(月) 19:34:37.73
VisualD にて自分のライブラリをドラッグアンドドローップしてみたら。 出る出るコンパイルエラーの嵐が・・・。 bud って自動で辿るから使っているモジュールしかコンパイルしないのね。。。 やっぱ bud は気楽で良いなぁ。。。使うときには直さなきゃいかんけど。 デバッグだけ利用することってできますか? もしくは VisualD に本腰入れるか・・・。
207 :
176 :2011/05/09(月) 21:48:19.62
interface TI { void hoge(T)(T); } って書きたいんだけど、いい案ないですか?
210 :
208 :2011/05/10(火) 03:40:13.34
いや、俺もしばらくいけてるもんだと思ってたんだ
ttp://ideone.com/eZSmI interface にも enum とか body のある static メンバ関数書けるし
テンプレートを書くこと自体は合法みたいなんだけど、あくまでも関数の宣言ではないということらしい。
interface TI を class TI にかえても non-virtual 扱いで hoge を abstract にできない。
空の実装をつけても継承先で override できない。
interface TIにあり得る型をすべて書き出して、class S ではテンプレートで実装。は無理らしい。
でもきっとDならエレガントに解決してくれるはず。<- いまここ
OpenGLの最新のヘッダ群をだれかポートしてくれ
頑張れ
>>210 そういえば、ドキュメントの最後にこっそりと、クラスにテンプレートで仮想関数を挿入出来ない、とか書いてあったっけ。
>>211 つhtod
あー、privateにしても同じモジュールからだと見えるのか……。
218 :
210 :2011/05/10(火) 23:30:15.51
>>213 そうなんだ。公式で否定されてるんじゃだめだな。
>>214 やっぱり、それじゃあ、ねえ?
昆布の旨味成分がすごいからまとめられると思ったんだけどな。テンプレに。
interface はCOM専用ってことだな。
(新しい書き方の)演算子オーバーロード書けんしな。
最近 Phobos が traitsカオスなのもこの辺が原因かな。
エラーメッセージが無駄に長くなって好かんかったが、そっち方向でやるわ。
どうもありがとう!
テンプレート制約を if( is(T:int) ; "T must be int" ) みたいにかければいいのに。
>>220 情報サンクス!voteしつつパッチ当ててみた。(dmd2052 Windows)
とりあえずいけてるっぽいぞやったぜ!!
nice vote.
そろそろ破壊的変更が欲しいなぁ。
version識別子はCamelCaseなのかそうでないのか? allとnoneだけ特別?
パッチを自分で当てて使う人もいるのか
次のバージョンで取り込まれもせず 差分ファイルも不整合とかやられるとちっと痛い
227 :
221 :2011/05/13(金) 01:55:18.09
やっぱダメだッ! コンストラクタテンプレート内で const メンバ変数を初期化しようとすると怒られるorz
その程度のことならDでは駄目じゃあない!
逆に考えるんだ。傷が浅くて良かった、と。
>>227 残念。
ついでに直してパッチ投稿しちゃいなよYOU
053
ヒャッハー!バグの山だー!
更新久々じゃないかああああああああ 嬉しい!
YATTA!! DWTがコンパイルできなくなってる!
すげぇ!コンパイルエラーの嵐だっ!
俺ね、wxWidgetsって、D2から直接使えるんじゃないか、って思ったんだ。
そげぶ
ウエーン、dflもビルドできないお
240 :
239 :2011/05/14(土) 14:47:50.76
あれ、簡単だった
242 :
239 :2011/05/14(土) 15:39:07.10
>>241 おお、カミよ
ついでにアイコン付ツリービュー【非公開機能(w】のバグも対応してもらえまいか
1行追加するだけなんだが
std.regex.match の挙動がこっそり変わっとる こわいわ
>>243 ひー
win32apiのポーティングからlibを作って自分のプログラムにリンクしてます
libファイル作ってリンクすると.dをコンパイル+リンクするのと比べてexeが巨大になるんだけど
回避策ないですか?
win32api.libにole32.libとかをリンクしてるのが悪いのかな
dmdを更新したのにコンパイル出来てしまうのですが どこが間違っているのでしょうか
>>245 もっときわどくコーナーを攻めないと一流レーサーにはなれない
>>244 ブツを見ないとわからないけど
ヘッダで必要ないのに pragma(lib,"xxx.lib")してしまうやつがあるから
それを消してみたらどうだろう
っつーか const 周りで、2.052 ではコンパイル通っちゃいけないものが コンパイル通ってたことが分かった。
>>244 dmd.exe -O -release
と比べてみるとか
>>251 常に -O -release -inline付けてます
>>244 lib作るときはライブラリパスが無効になるぽいけどもしかしてlibにlibをリンクするってできないのかな
ようドMども
-inlineは当然でかくなるな
inlineはずしたら1MBだったexeが2MBになったんだがwwww
さすがDさんだ
259 :
249 :2011/05/14(土) 22:09:35.50
>>257 const Hoge[] ってのを
あるクラスのメンバ関数の引数(Hoge[] buffer) に渡せてた。
2.053 ではコンパイルエラーになってくれた。
dwtってスプリッターないんでしょうかね? フレームをぐりぐり動かす奴なんですが。
>>260 customパッケージにあるよ
詳細はSWT+SashFormでぐぐれ
>>250 あ,ごめん全部pushしてなかったかも
trunkで使えなくなってたかもしれない
パッチ当てておいたので確認してみてください
264 :
263 :2011/05/15(日) 02:19:45.05
さんくす。
>>244 あと-Mだっけか?
とにかくライブラリに関する一文字のオプションだ
dflの新しい奴が出たらしいんで、久々にいじってみてるんですが、 Error: variable FIRST_MENU_ID cannot be read at compile time こんなのがでました。 なんですかねこれ?
DFL RC3 になってたのか
新機能も特になさそうな上にD2.053が出たから
さっそく役立たずになってるけどw
>>241 だとその分も修正されてるよ
>>241 はD2にしか対応しないからそのつもりで
D3が出たら?
この物言いは近々D3が出るという伏線・・・?
正確に言うとtrunkにしか対応しないからそのつもりで
俺はtrunkは取らんく
OpenGL4.1まで使えるようにポーティングしてたけど途中で心が折れた
OpenGLのヘッダって割と綺麗だから機械的にいけない? 前にOpenGL1.1とかでやった時はPerlでスクリプト書いて流したらいけたんだが
rdmd使おうぜ!
278 :
227 :2011/05/16(月) 02:12:59.52
>>278 2.053のソースから dmd.exeをビルドして(WinXP32bit+DMCを使用)
実行するとコンパイルエラーのときにクラッシュする
パッチ関係なく2.053のソースがおかしいと思う
なんぞこれ・・・
バグも、破壊的変更も、あるんだよ
>>278 thisのオーバーロード処理も直さないといけないっぽい
this(){ } // a.テンプレートなし
this(T)(T a){ } // b.テンプレート引数あり
が共存できない
直してみようかと思ったが心が折れた
関数の並び順をかえたら判断するクラスが変わるとか
反則過ぎる orz
isStaticFunction ・・・ぐぬぬ
いっそのことthis(TL...)(TL)とみなしてTL.lengthで処理するとか…
>>279 ほんとだ。デバグコンパイルしたdmdだとクラッシュする。と思ったらこれは、
/**************************************
* Try to stop forgetting to remove the breakpoints from
* release builds.
*/
void halt()
{
#ifdef DEBUG
*(char*)0=0;
#endif
}
なんのおまじないだろう? breakpoint ?
>>281 当座はこれでしのごうかな。
this( T = void )(){}
dfl wktkして触ったけど、相変わらずドラッグドロップできないんだね
>>284 breakpointでアクセス保護違反起こして止めてる…?
こえーおまじないだな
ライブラリのunittestか何かで コンパイルエラーを無理やり引っ掛ける仕組みと想像 とりあえずバグじゃないならおっけー
dllがコンパイルできなくなった 古くなったサンプルをアップデートしただけじゃなかったのかコラ
>>288 dllのサンプルが更新されてるから何かやり方が変わったとかじゃない?
>>288 この男の思考
D言語では こういう考えが一番危ない
まさに地獄に直結する道
Bugzilla 5987: mydll sample doesn't compile
サンプルの更新だから
ソース変更は発生しない などという読みは
まさに泥沼
_
/)/ノ,> す 嵌
| lン.)っ で っ
|/ .〈/ に. て
l ) 泥. い
|iii|||||| 中 る
|iii|||||| :
|ii|||||||| 首. :
┌|ii||||||||| ま :
、〜"イイ__ /iiii||||||||||| で :
ゝ:::::::::::レヘ .|__「iii||||||||||||| : :
;;;;;;;;;;;;;;;;;;;;;イ::::::::</(ン ,_,<||||||||||||l'';;;;;;;,,,,, :
;;:;:::;;;;;:::,,,;;;ム;/);;;モヽ u (ニ'ヘ||||||||l;;;::;;;;;;;..''':;;;,
::::;;;;;;:;;;;;..,,,,;;;;/フ;;;;;/);;;;:'''''::::;;;;;;;:::::'';;:;;;;;;,,::::;;;;;,,,,
;;;;;:::;;;;;;;::::::'''',,尸;;;;;';;''::::::;;;;;;;;'';;;::::;;;;;;;;::;;;:;;;;::::::''';;;;;;;
::;;;;;;;;:::;;;;;;;;;'';;;つ;;::::;;;''';;;;;;,,,'':::::::;;'';;;;;;::::;;::;;;''::::;;;;;;;
D言語こわい
Dとカイジネタは相性がよすぎる事に気付いたがその事実は封印しておこう
scope int[]型とかになればいいのにね
これ1つめと3つめどうなってるんです?
一つ目はスタックに確保された配列(初期化子付き)のアドレスを返してるからダメ 三つ目は通常の動的配列
1つ目がコンパイルエラーにならないのはバグなんでしょ? 静的配列はあやしいと思ってなるべく使わないようにしてるけど ここまでとは・・・
もう!D言語ちゃんたら
import std.datetime; immutable class Hoge { SysTime time; this(SysTime t) { time = t; } } opAssignが呼ばれてコンパイル出来ないんだが何か方法はないだろうか 明示的にメンバ変数のコンストラクタ呼ぶ書き方があったかな?
>>294 の何がおかしいのか分からないんだけど
>>298 は静的配列のスライスをコンパイルエラーにして欲しいってこと?
それともスタック領域を参照するであろう全ての変数がスコープを跨ぐのをコンパイルタイムに検出して欲しいってこと?
2がエラーなのに1がエラーにならない上に中身おかしくなってる 2がエラーなのに3がエラーじゃない
3は別物だろ
実際は違うのかもしれないけど見た目は同じように見えるじゃん
int[10] tbl; int[] p = tbl; return p; // 通るがpを参照した場合は未定義動作 これが通るのは コンパイラから手出しできなくてしょうがないにしても return tbl; // エラー return tbl[0..5]; // 通るが未定義動作 これのふるまいが違うってのは直感に反する ソース見たけど実際にエラーではじいてる部分も変化球投げてて バグの温床に見えた いっそのことスタックに置くのを廃s(ry
上に方にも書いてあったOpenGLのポーティング試してみた 簡単なスクリプト書けば済むと思ったら意外としんどいのな
そりゃOpenGLは3D描画のアセンブラと比喩されるものだしな・・ 出来合いのライブラリ使うか自分で1階層上のレイヤを作る必要があるよ
ポーティング作業の話じゃないの?
最近C形式の関数ポインタ滅んだよね
結構前だと思ったけど
あんなもん滅んでいい
ヘッダ変換ツールとかの受け皿が ちゃんとできてれば
破壊的変更という名のヘヴンがあるせいで その手のツールにも定期的なメンテがないと役立たずになるんだよなー つってもせめてhtodさんのconstをちゃんと認識してくれるバージョンくらいはあると楽なんだが
>>314 昔からプログラマの間では言いだしっぺの法則というのがありまして
待って! この場合の言い出しっぺは
>>313 ではないの?
いや、ここは
>>312 にその責を負ってもらおう
そのまま foreach すると、1 になりそうだな。
foreachは処理の種類が広い・・・
>>306 > return tbl; // エラー
> return tbl[0..5]; // 通るが未定義動作
静的配列をそのまま返すのとそのスライスを返すのは明らかに別物じゃね?
型が変わってるんだから
ソースが変化球なのは静的配列の挙動は後付けだからってのもあるかも
dmdはアドホックな実装を綺麗にすれば結構無駄なコード減りそう
スライスの意味からして,スタックを指すスライスを返してはいけないのは仕方がないのでは. でなければ,スライスがスタックを指すときにはヒープにコピーされるってしないといけなくて遅くなるような.
スタック領域専用のスライス型と動的領域専用のスライス型を用意して 汎用のスライス型との間で暗黙の変換ルールを定めればいいわけだな
>>320 型が変わってるのはどっちも同じなんよ
>>294 見ればわかるけど関数が返す型は動的配列だから
>>321 それするとスライスの旨味なくなっちゃうよね
>>322 T[new]の再来!T[stack],T[heap],とかかな
>>323 "return tbl[0..5];"は動的配列を返してるんだから,型変わってなくね?
それともなんか見落としてる?
"型変わってなくね?"は"関数の返り値の型と"という意味ね 俺が320で言いたかったのは 静的配列(tbl)と動的配列(tbl[0..5])はそもそも型が違うんだから そこが"直感に反する"ってのはなんか微妙に違うんじゃね ということね
スライスに種類がいるというか、 要はポインタにスタックを指すのと ヒープを指すのがいるんじゃないか。
グローバル変数もあるでよ
画面に表示するマップチップの情報を持っとく クラスメンバの動的配列が時間が経つと勝手にGCに回収されるのか配列がアクセス不可になる アクセスするとobject.Error: Access Violation マウス入力しなければその配列に書き込みしないし明示的に解放したりもしてないから 最小コードに絞ることもできず原因がさっぱりわからん・・・・・ とりあえず自分のミスなのかGCがおかしいのか切り分けることできないかな・・
とりあえずGC切って試してみたら?
なんか似たような経験があるな よく覚えてないが配列のメンバを生成するたびにGC.addRootしたら直った記憶がある
そういえば 2.053 の ↓ってどれのことなんだぜ? Added some gc benchmark apps ツールなのかライブラリなのかもさっぱり
>>328 動的配列の領域の確保の仕方は?
単純にlengthを書き換えたのか、他の動的配列(静的配列)と共有してるのか、newなのか、配列リテラルを代入したのか。
Access Violationになったときの、動的配列のハンドルの値は?(nullか別の何かか。)
>>328 Win でDLLに変数もたせたときにそんな感じのがあったな
アクセス関数作らずに直にさわってたのがいけなかった
d言語自体のバグって今何個くらいあるんですか?Voteで先に直す順番がきまってるようですけど。 そんな多いの?
dll の unittestが出来ねえ! バグだろ! と数時間悩んだ結果 defファイルをリンクしているのがまずいとわかった いや、やっぱりバグじゃね?
くそっ、今度は DFL+2.053 のバグかよ・・・ エラー報告フォームの中身自体がバグってるとか鬼畜すぎだろ 俺の時間を返せ
フォーラムもdで作られるとかならワロス
>>332-333 newで生成してて他とは共有してないですdeleteするような処理もないです
>>330 GC.addRoot()しても同じ現象が起こりました
>>329 GC切った→問題が起こらなくなった orz
GC切った上でGC.collect()を呼び出してみても問題発生せず
問題を起してると思われるクラスを単体で動かし続けるコードで試しても発生せず
他の処理にも手を広げてもうちょっと調べてみます・・・
Dは悪くないよ全然悪くないよ
俺が悪いんだ俺がきっと何かやっちゃってるんだ・・・
>Dは悪くないよ全然悪くないよ >俺が悪いんだ俺がきっと何かやっちゃってるんだ・・・ それは他言語使いの悪魔の誘惑だ D使いならdmdが悪いと言うに決まってる
おれは使う気にはならんが おまえらがDさんに振り回されてるのを見るのは楽しい
interfaceにguidつけられるようにならんかなあ
const 定数使おうとするとバグ多いな enum 使えってことなのか
enumという語の意味はどこへ… 文句はCに言え? ごもっともで
オーバーロードされたメンバ関数のアドレスってどうやってとるん? void func(); void func(int); &func ←??
void function() p1 = &func; void function(int) p2 = &func; p1(); p2(1+1);
ゴメン、function → delegate で
引数として渡すときとか自動推論してくれるよな
ああなるほど どもです
__traitsのgetOverloadsってのもある
2.053になってから落ちたときに変なゴミが出ると思ったら これスタックトレースなのか どうやって使うの? おしえてえらいひと
ちまみに
>>338 も同じ現象ですた
「DFL RC4 でも直ってないじゃないかゴルァ!!」 と思ってたのは内緒
>>353 どのように関数が呼ばれたかが見れるので、デバッグのときに原因を絞りやすくなる。
どこからでも呼ばれる関数で落ちた時に特に威力を発揮する。
例
・配列操作関数
・ログ取り関数
・アクセサ
・クラス不変条件
・・・ついにねんがんのWindows環境でのスタックトレースを手に入れたぞ!
ユニットテストも必ず全部実行してくれるようになったし、これでデバッグ方面は隙が無くなった! めっちゃうれしい!
053ってこのスレみる限りバグが多そうなんだけど ・・・どう?
別に53に限ったことじゃないよ?
◎破壊的変更 ○新しい仕様 ×バグ
☆創造的破壊
unittest もモジュール単位じゃなくてブロック単位に分割して実行させたい 結局コケたら次が走らないってのは同じで萎える ところで unittest で assertEquals() みたいなのを簡単に書ける方法ないかな assertEquals(a,b); // やりたいこと:ログ内容 Assertion failed: a != b mixin(assertEqualsDecl("a","b")); // こんなんイヤや
デバッグ環境って何かいい事ありました?
>>363 おお、aliasパラメータってこうやって使うのか 夢がひろがりんぐwww
ありがと あいしてる ちゅっ
unittest内でのassertが失敗したときには例外を飛ばすだけじゃなくて、カスタマイズできるようにして欲しい。
>>365 core.exception.setAssertHandler();
core.runtime.Runtime.moduleUnitTester;
370 :
369 :2011/05/31(火) 00:23:05.20
x86 Debian6.0 gcc4.5.5 dmd2.053 で Derelict2 を導入しようとして詰んだので報告。 例えば、 libtest.c: void hoge(void){ fuga(); } Shared Object ライブラリ内で fuga が呼び出されているとき、呼出側のDのコードに test.d: extern(C) void function() fuga; があると、SEGV。 具体的には SDL_InitSubSystem などが該当する。 ポインタを DSDL_InitSubSystem などに改名すれば、回避できる。しないけど。
このところDFLが順調にバージョンアップされてるけどどういうことなの…
バグ修正も機能追加も全く無し Dのバージョンアップに追随してるだけ やる気があるんだかないんだか・・・
コタツがあったかすぎてDでのプログラミングが進まない俺に何か良いアドバイスを・・・
コタツにDプログラムを組み込もう
─────────────┐ ─────────┐┌─┐│ コタツの暴走で焼死 ││+││ ─────────┘│+││ ──────── 自 │新││ ──────── 作 │聞││ ──────── プ .└─┘│ た破壊的変更 ─ ロ ┌─┐│ ───── ─ グ.└─┘│
377 :
371 :2011/06/04(土) 02:27:09.96
こたつの暖かさの回避策かと思って凄いびっくりしたあと少しがっかりした
>>374 こたつから出る放射線をガイガーカウンタで測定するソフトをつくるんだ
コタツの電熱線の温度と組成から導けるな。
いまだにコタツ使ってることには誰もつっこまないのか
二重の連想配列が定義出来ないのはバグかな・・? int[string][string] t = ["key1":["key1_1":1, "key1_2": 2], "key2":["key2_1":1, "key2_2": 2]];
リテラルだと問題出るようだけど、 int[string][string] t; t["a"]["x"] = 0; t["b"]["y"] = 1; こういうのは問題なくできるから定義できないってのは違う。
2.053 にしてから OpenGL の描画が変になり、何故かポリゴンが水色になってる。 2.052 に戻すと正常になる。 どこに原因があるんだろう・・・。勘弁してー!
俺も2.053でOpenGLやってるけど問題なくポリゴン表示できてるから
頂点配列やらglBeginだけ使ってるようならたぶん
>>384 のソースにミスがある可能性が
ユーザコードを疑う必要があるなんてDももう終わりだな
D始まったな。
C言語のstdlibのsystem関数みたいなことはD言語でどうやるんですか?
んー、std.processでいいみたいですね。 事故解決しますた。スレ汚しすまそ
D言語ってちょっとしたプログラムでも実行ファイル巨大になるんですね。。。
バージョンあがるごとに10kbくらいずつ増えてくよ
phobosを捨ててcのライブラリを使えばそんなに大きくならないよ
最近なんかかわった?
>>394 結局何が悪かったのかわからん。WndProcのプロトタイプを間違ってただけ?
>>395 俺の苦悩を少しでも味わってほしいので、原因はわざとぼかしておりますww
ただの意地悪である。
callbackついてねーだけというオチか と言うかお前の苦労話はどうでもいい
extern(Windows)付け忘れたとか?
あ、CALLBACKのことは違うのか。すまん忘れて
>>399 それだ!!!
WNDCLASSEXにextern(Windows)付いてないWndProc()登録したから、CreateWindow()を呼び出した後でメッセージが発行される部分で落ちてたんだろうね・・・
また、ショーもない理由だとは思ってたけど、いざ示されると精神的にくるわ・・・
みんなも気を付けてね〜www
>>401 DでのCALLBACK=extern(windows)だろうが
そんなことも分からんからつまらんミスで引っかかる
>>402 いやいや、そんなものはDでは定義されてませんよ。
さっき試したら、自分で定義することもできなかったな。
やっぱりただの馬鹿だったか
>>405 そんなこと言ってると同じ失敗をするよ〜
>>401 残念ながら失敗しなかったな・・・最初から普通につけてるぜ・・・
あと
extern(Windows) == __cdecl
CALLBACK == __cdecl
∴extern(Windows) == CALLBACK
だからCALLBACKを付けない時点でextern(Windows)をつけないといけない事は自明なんだぜ!
C++でSDK使うときもCALLBACK付け忘れると今回のと同じようにスタックがずれて落ちるよ
まずアセンブラ視点で高級言語を見る勉強するといいよ
>>407 早速__cdeclと__stdcallを間違えてるみたいだけど・・・
あとは、失敗っていうのは、バグを入れ込む事じゃなくて、
バグを入れ込んだ時の事を言ってる、ってのは覚えておいて損は無いかと。
バグ入れないのは人間には無理だし。
そうそうそれそれ #define CALLBACK __stdcall
中途半端にバグって上手く動いたりするから困るんだよな
そのためのDbCですよ 使ってないけど
正直関数呼び出し規約も関数ポインタの型に含めて欲しい
問題になるのはCの関数を呼ぶときだから 不治の病かと
エスパー検定8級の俺がエスパーするとURLをパースしたいんだと見た
エスパー検定9級の俺がエスパーするとファイルがSJISで書かれていると見た
>>414 UtfException・・・?
また明日見てみるかね・・・
ShiftJISに慣れてるからunicodeとか仕様把握できなくて使いにくい
419 :
404 :2011/06/17(金) 00:49:09.91
さっきツイッタで知ったのですが、「std.xmlはdeprecated予定」とのことでした。 あとXMLファイルはUTF-8になってます。
420 :
414 :2011/06/17(金) 00:51:21.04
404じゃないです414です。 失礼しますた;
deprecated予定だからといって誰も使わず、諸々のバグが放置されてるモジュールって印象がある この前も属性の文字エスケープがちゃんとできないとかいうバグがあったし
422 :
414 :2011/06/17(金) 11:26:07.27
std.conv(1161): Can't convert value `jun' of type const(char)[] to type int って std.xml に関係なかったですね(;^^ std.conv.to!(string)( m_data[id].date.month ) を std.string.format( "%d", m_data[id].date.month ) に変えたら一応動きました。 でも、なんで'jun'に変換されていたのかは不明だし、 出力されるファイルのインデントはやっぱり変です。
enum Month -> int の変換がぬけているのでは? 次は 0月 がどうの言い出すとエスパーしてみる
エスパー検定5級の俺がエスパーするとDさんをあまくみすぎだと見た
>>425 decodeで例外吐くだけだと思うけど(WinXP, D2.053)
どの環境?
427 :
デフォルトの名無しさん :2011/06/17(金) 14:07:32.20
>>426 WinVISTA, D2.053
俺の環境がおかしいのかねえ?
>>427 念のため、ServicePack のバージョンもひとつ。
どう考えてもOSで防ぎきるべき部分
ドライバとか関係ないはずだし・・・
32bit/64bitもプリーズ あと搭載メモリ量も関係あるかな?
>>428 自動更新してるから、たぶん最新だと思う。32bit
てか、何か調べてくれるの?
調べない(キリッ とは言ってもいずれ自分でソフト配布したときに クレームをつけられた時の備えにはなるはず
バグ報告とかでそれっぽいのは無いね メモリテストと熱暴走対策をしてみてはどうだろう
Vistaは俺にブルースクリーンの嵐を久々に見せてくれた麗しのOSだ
今の子はブルースクリーンを知ってるのだろうか
Vistaでブルースクリーン出せるって凄いな D言語の力か
vistaは何も気にせず署名付きドライバを使ってればまず青画面は出ない ただ、ドライバモデルが変わったからxp前提の野良ドライバを突っ込もうとすると青画面出ると思う。
Win7でもSP1突っ込んだ直後はシャットダウンの時に青画面出てたけどいつの間にでなくなったな
Vistaで青画面ってメモリの物理破損とドライバ周りのエラーでしか見たことない。
HDDの故障で何度も出たことがある 保障期間だったんで替えを送ってもらって交換しようとしたら ドライブ固定するネジが入ってませんでしたとさ
441はpureとdebugについて
そういう手があったのかー ウォルたんかわゆすなぁ
日本語でおk・・・
pureはdebug文の中では無視されるってこと
逆じゃないの?
2.053 Allow impure code inside debug conditionals この1行で足りる?
debug は statement
we can disable purity checking inside a debug statement. って書いてるぞ
英語が読めない俺が翻訳してみた Allow impure code inside debug conditionals 許すよ 純情じゃない コード 入ってる debug コンディション →純情じゃないコードが入っててもそれがdebug属性(?)の中なら別にいいよ
we can disable purity checking inside a debug statement. 俺たち できる 無効 純情 チェック 中 あ debug 文 →バイトの巫女は処女チェックないらしいね
巫女は鯖を止める Dで書いた鯖は止まる つまりD≒巫女
これ、公式の最新版dmd落としても、 公式かかれてるサンプルで動かないのがいくつもあるのは何? やる気あんの?
サンプルはほんとやる気ないね
やる気は物凄くあるよ やる気がありすぎて仕様が変わりまくってhello, worldすら動かなくなるくらいある
利用者にも物凄くやる気を求められる
Visual D の UTF8 対応キタ
マジかアアアアア! 久々にグッとくるニュース!!
461 :
460 :2011/06/20(月) 17:20:02.39
eclipse本体をユーザガイドの通りに入れなおしたら動きました。 あとはスタティックライブラリのリンクが上手く動けばいい感じ・・!
>>454 仕様書すらないrubyよりはましだけどねー
463 :
uy :2011/06/20(月) 22:12:18.42
uy = Ruby信者 って発想をやめてくれないかな??? 俺は普通に、「作業効率」を考えた結果Rubyを使ってるだけで すきとか信者とかそういうの抜きにして効率的だから使っているだけ 変数に$ついてるとか信じられないし、 行の最後に;ついてるとか頭悪いと思うし ifに:ついてるのもアホかと思う Dはいい線にいってると思うんだけど まだ、C,C++から乗り換えることで向上する作業効率と、 環境作りや安定性とのトレードオフが出来てない 正直、多くの機能を取り込んだりする前に、スクリプト言語並の記述の簡潔な言語作る事が先決でしょ コンパイラ言語さんは、何故例外なく冗長なのかがわからない わからないものは怖いから触らない
耳クソほじりながらふーんとしか言えないやり取り
でも言ってることは間違ってないんじゃね ぼくがかんがえたさいきょうのげんご を目指しすぎてる感はある
Rubyとは目指してるところが違うだろ Rubyじゃシステムプログラミングは不可能 DもGCがあるから不可能 …あれ?
GCあっても可能だって過去スレで読んだような気が
>正直、多くの機能を取り込んだりする前に、スクリプト言語並の記述の簡潔な言語作る事が先決でしょ >コンパイラ言語さんは、何故例外なく冗長なのかがわからない つHaskell
uy ◆yyC0rYWEq2でググったら寒気してきた
D言語スレでレス番飛んでるのはじめてみた
関数の中でローカル関数を作ったときに 外側の this とそのメンバが見えなくなるのは仕様? ローカル関数の引数に thisを渡すようにするのは不細工でイヤだ 何か使い方間違ってるのかな
>>475 むしろ、関数内でテンプレートが宣言出来てる事が、バグなんだよ!
改めて、Dの更新履歴見てみると、テンプレート関連のバグ多いな。
>>478 いやそれ、当たり前だろ。
問題は、基底クラスに変換された型を、どうやって派生クラスの型に戻すか、であって・・・
まあ、D言語が、
>>477 見たいなオーバーロードをしてる時、Bが入ってるAの変数を渡したら、勝手にBの方の関数呼んでくれれば解決なんだけど。
ダウンキャストを使わずに済むようにクラスを作る でなければ override string toTypeName() { return "DerivedClass"; }
グローバル関数のオーバーロードの場合どっちの関数呼ぶかはコンパイル時に決定するんじゃないの?
if (cast(B)obj) { return foo(cast(B)obj); }
>>480 クラスの名前で関連づけるという方法はあるけど・・・
ハンドラを関連づける方法が、他のイベントモデルと変わらなくなりそうだ。
>>481 関数オーバーロードを使わない、上手い方法は無いかねえ。
>>482 それ、型別にいちいち書くの?
まあ、どっちにしろ、こういう結果が帰ってきた時点で、俺の考えてる方法は使えないようだけど。
http://ideone.com/nCVpO あ〜あ、例外処理ぐらい簡潔なイベントモデルが欲しいな〜。
>>484 ふむふむ。
クラスを変換できないクラスにキャストする時、nullになるのを利用してるのか。
・・・でもそれ、従来の方法よりめんどくさくないか?
>>486 言葉足らずだった。
イベントモデルに対する、従来の方法ってことね。
古典的なのは、あらかじめ定義した定数値でswitchして、処理していくってやり方。
最近は、特定の場所に、デリゲート登録して処理する、ってのが主流みたいだけど。
gotoラベルって滅多に使わないけど
すごくキモいな 撲滅すべき
ttp://ideone.com/70nYK ちなみに↑の正解(?)がideone では出ないので直接書く
1
scope guard 1
exit
scope guard ( without label )2
なぜaがスコープ外で使えるのかまずそこが理解できない・・・
ラベルから次のラベルまでがスコープとして認識されちゃってるのか LabeledStatement: Identifier : NoScopeStatement NoScopeStatement: ; NonEmptyStatement BlockStatement ←これが悪さしてる?
switch文の中のgoto caseだけは正義だと思った
しかし
>>488 キメェwww
>>490 の意味がやっとわかった
スコープ外から見える件とスコープガードの件は
それぞれ別の問題。紛らわしくてごめんお
文字コードページ自動判定するのはどうしてます?標準関数にはないよね?
nkfでいいんじゃないか
nhkは迷惑
icuとかiconvとか使えばいいんじゃないの? やったこと無いけど。
djcode
この手のリンクエラーはbud使うとでなくなったりするよねー
インラインアセンブラで db,ds,dd とかリテラル埋め込みできるけど 何の役に立つのこれ? 変数名とか付けられるのなら、まだ分かるんだが できなさそう
普通のアセンブラでできるから、ってのの名残りなんじゃない?
わかったぞ、 EIP レジスタを使うんだな undefined identifier 'EIP'
久々にいじってみたら動かなくなってるコードが…… 2.053はdelegateの型一致判定もなんか変化があるっぽい。 中身がかなり変わってるのかな
>>503 CPUに新しい命令が追加されて、インラインアセンブラが対応していない時に
無理やり使うことができる。
509 :
507 :2011/06/29(水) 21:43:06.09
関数ポインタとデリゲートの多態ができなくなっているっぽい。 void delegate(Object) root; void delegate(Class) derived; root = derived; // 2.052までは通った、2.053から不可 これって正しく拒否するようになったのか、 正しいコードを拒否するようになったのか、どっちだろう。
正しいと思う derived = root; が通るのなら納得できる
root = derivedが通ると 型的には derived(new Object); できる形になっちゃうのか 関数の型変換とかあんまり考えたことなかったわー
512 :
507 :2011/06/29(水) 23:40:10.90
なるほど、確かに。 ClassにObject実体が渡ったらまずいですな。 参照の代入とは一見逆の関係になるのか。 勘違いしていました。ありがとうございました。
513 :
503 :2011/07/01(金) 18:32:47.89
asm { db "abcde"; } みたいな文字列埋め込みまでできるんだが 全く使い道が思い浮かばない D用のエディタとか作るときすごく邪魔なんだが
そういうときは逆に考えるんだ どうせすぐまた意味不明なキーワードが増えるんだから無視しても同じことだと 考えるんだ
> 無理やり使うことができる。 ハァアアァアァァァァァァァアァアァァァアァァァア??????????? なんだ、ただのゴミか ゴミグラマきもちわる ゴミみたいな奴だな
516 :
503 :2011/07/01(金) 19:50:18.12
インハウスなら無理やり使うパターンはあるでしょ
D用のエディタとか大変だな Dのバージョンごとにそれぞれパーサー用意するんだろ
パーサパーサ積めば設定ファイル変更だけでいける 大丈夫
エディタのパーサーつっても、意味解析までする訳じゃないんだから・・・
version()の無効ブロックはグレー化したり 関数内でローカル変数以外の変数はハイライトしたり せめてそのくらいはほしいよねー。(ねー。) 欲を言えばローカル関数と スコープガードのブロック内も違う色で(ry
で、いつ公開?
あ、あしたさ…
ナンノコトカナー のヮの
D2にて。 httpのデータを読み出すべく、SocketStreamを使用してShiftJISのコードを読み込んでいるんですけど char[] には多分 SJIS のコードが格納されていて、ダメ文字が改行になったり toUTF16 とかやってもエラーで落ちます。 なるべく、stream.getc(); の辺りで UTF16の wchar に変換していてほしいのですが… こういう場合にうまくやるにはどうするといいのでしょうか。 import std.socket, std.socketstream, std.stream; auto address = new InternetAddress("www.hogehoge.jp", 80); auto tcpsocket = new TcpSocket(address); scope auto sstream = new SocketStream(tcpsocket); sstream.writeString("GET /target/sjis.txt HTTP/1.0\r\n"); sstream.writeString("HOST: www.hogehoge.jp\r\n"); sstream.writeString("\r\n"); Subject[] subjects; // struct Subject .text は wchar[] or wstring で。 char[] buffer; char c; while(true) { c = stream.getc(); if(c != char.init) { buffer ~= c; switch(c) { case '\n': Subject s; s.text = buffer.dup; subjects ~= s; buffer = null; } } }
> char[] には多分 SJIS のコードが格納されていて なのでfromMBSzすりゃいい > なるべく、stream.getc(); の辺りで UTF16の wchar に変換していてほしいのですが… SJISはマルチバイトなので無理
>>525 今のDは、SJISの変換に対応してないので、SJISに対応してる、Cの文字コード変換ライブラリを直接使うしかない。
Dの文字コード対応は腐ったままだな djcodeのおかげで日本語コードはなんとかなるが他の国はどうなのか 対応するために頑張っても破壊的変更にはならないからみんなやる気がないんだろうな
SJISが糞なので・・・
SJIS使ってるとかどこの田舎だよ
このまえJISコード使ってるとこみたお
新しい言語には新しい文字コードが相応しい 嫌でもライブラリを作らないと行けなくなる
iconvみたいな文字コード判別・変換ライブラリぐらいphobosに入れないの?
今更なにを……。 コンソールに出力するにも外部ライブラリで変換しなきゃいけないんだぜ
さあ、LGPLの呪いをPhobos全体に巻き込もう!
537 :
デフォルトの名無しさん :2011/07/06(水) 00:28:51.58
じゃあD3はGPLで
そんなことになったら2度と使ってやんねー!
そしたら俺がD'言語作るわ
今から作ってもいいのよ?
そういやLGPLライブラリでも リンクのヘッダがLGPLだと リバースエンジニアリングやめさせられなかったりすんだっけ? オープンソース
リバースエンジニアリングを禁止することなんて不可能だろ。
禁止する必要はない ただ、違反者を訴える権利だけ与えればよい そうすれば人を訴えたがる人間が違反者を掃除してくれる
☆撃 墜☆
やっぱBoostライセンスだけが正義だわ
正義は修正BSD界隈にあり GPLに自由無し
NYSLは天使
そこでGCCのアレですよ
std.concurrency でクラスや構造体をsendすると
セグメンテーションフォルトになるもんなのかな。
それでシリアライズ/デシリアライズでstringに変換して回避しようと思ったら、
下記コードがDMD2.053で実行すると
http://ideone.com/XzB7O immutable(char)[]/int delegate() になるという( ・´ω・`)
なんでSortedRangeにindexOfが無いんだ わけがわからないよ
>>549 alias immutable(char)[] string;
だからいいんじゃないの?
>>551 ,552
/以降の int と int delegate() の違いが問題
>>553 WinXP+053だと int delegate()にはならなかったよ・・・ideoneと同じ結果
おろ? CentOS 5.6x64の2.053だとdelegate()残るんだよなぁ・・・ というか std.concurrency でクラスを渡せないのも環境依存か? ありがと、もう一度DMDコンパイルしなおしてみる。
556 :
554 :2011/07/08(金) 01:54:47.44
おっと、うちは32bit 64bit対応の問題なのかな
557 :
デフォルトの名無しさん :2011/07/08(金) 21:59:35.15
誰か64bit対応を加速させてくれ ムズムズしてたまらん 辛抱たまらん 誰かこの気持ちを解放してくれぇ!!!!!!
まともに使えるIDEマダー
まともに使えるGUIライブラリ…
完成したD言語マダー
561 :
549 :2011/07/08(金) 23:45:45.34
562 :
デフォルトの名無しさん :2011/07/09(土) 00:42:36.02
現状では VisualD + dfl がオヌヌメ
ddbgがもう少しまともならな・・・
>>560 完成しないのが完成
Goal D experience requiem
565 :
デフォルトの名無しさん :2011/07/09(土) 09:48:28.84
超未来指向型言語だな...
俺の屍を越えて行け
andrei先生の作ったテンプレート関数の痒いところに手が届かない感は癖になる
前から気になってたけど気付かないフリをしてたこと sort!とかってテンプレートに文字列でロジック与えるでしょう? DのIDEがかわいそう過ぎて辛い
どうやら構文木リテラルが必要だな
sort!q{}つかえばよいのだよ
第1引数をlhsにしてopDotで関数呼び出し出来るけど使ってますか? なんか名前がバッティングするからあんま積極的に使いたくないんだよなあ import std.string; import std.regex; string s; s.replace ←!!! 名前がかぶる時ってstd.regex.replaceってフルで指定するのが普通?
バリバリ使ってるけどconstな引数を渡したりしただけで テンプレート不一致とか出まくる。ダメすぎ。 D3では無くなる機能だとにらんでる
じゃあ今から全力で使っとかないとな
>>571 みたいなのを1ストロークで本来の書式に変換できるエディタがほしいな
>>572 それはopDotに限った話じゃ…
Phobosの関数の型チェックとか全廃してもいいと思うんだけどなぁ
どうせコンパイルエラーになるんだし
コンパイル時のifを使いたくてしょうがない病を患っておられる・・・
578 :
577 :2011/07/10(日) 00:56:54.93
間違えた orz ( auto 使っちゃダメだろ )
ttp://ideone.com/qjKSn 例によって ideoneだとエラーの出方が少し違うけど(最新では2個目のエラーが出ない)
なに、やっぱりどうでもいいだと!?
この書き方に何の意味を持たせたかったのかが見当も付かない。
580 :
577 :2011/07/10(日) 01:19:22.83
new した時点でこけるという想定で検証したかったのさ 深みにはまっちまった・・・
581 :
デフォルトの名無しさん :2011/07/10(日) 04:23:19.48
病気なの?
誰がヤンデレやねん
えっ
そろそろDWT2にパッチ当てるか…とその前にbitbucketを見てみたらすでに当てた人がちらほら 英語の勉強をしそこなったぜ。ケッ
そして当て終わったころに2.054が(お約束)
そんなやる気が無くなるような事をするわけないじゃん
2.054キター
マジだったww
2ヶ月ペースでだいたい合ってる
今回は言語仕様にがっつり手を入れてきたな
pure safe nothrowの自動推論きた!
std.regexp has been scheduled for deprecation in August 2011 噴いた
DFLがまたビルドできなくなったお
オーバーライドされる関数は たとえ空でも in のコントラクトを持たせとけってこと? 納得遺憾
2.052〜2.053が長かったから驚いたじゃないか 早く元の月一ペースに戻して破壊的変更しまくってくれ
>>594 ↓を見てほぅ・・・と思った直後だったからさ
std.ctype has been scheduled for deprecation in January 2012. Please use std.ascii instead.
598 :
593 :2011/07/11(月) 18:38:43.52
dflを無理やりコンパイル通してみたら アプリのメインメニューが出なくなった・・・ナニコレorz
試しに -propertyつけてコンパイルしてみたら phobosでこけた ツカエネーナ
なんか伸びてると思ったら2.054きてるwwwwwwwwww
601 :
593 :2011/07/11(月) 19:03:07.13
2.053に戻してもやっぱりメニューが出ないことに気づいた ナニコレ・・・イヤァァァーー
このように続々と歓びの声があがっており
603 :
593 :2011/07/11(月) 19:27:36.76
コンパイル通すために消してたんだったwwwもちつけ俺
>>584 さあ、もてあましたエネルギーを存分に発散するのだ
今から3ヶ月は安心していいぞ
9月に次を出すと予告されているような気がw
え、9月までバンバン更新するよって意味じゃないの?
final switchって最適化のため?
そもそもDMDがコンパイルエラーなんだぜ@CentOS5.6x64 ※CentOS上だとリンカの問題で標準のバイナリが動かない。
こんだけ機能追加があるなら、switch(Type)文を要望したくなるな。
CTFEの強化 = ライブラリの奥深くで出る 追跡困難なコンパイルエラーの増加 〜 今、君の顔を思い出しながら 〜 〜 僕の胸に込みあげるこの気持ちを 〜 〜 「殺意」と名づけてみた 〜
VBにそんな機能があったような? どうせならダウンキャスト後の値を受け取れるとなおいいな。 case (A a): //oにAのインスタンスが入ってたら、ここを実行する。aは(A)o
遅延評価+関数配列
>>609 makeファイルにintrange.cが入ってないね
新しいファイルだから入れ忘れたんだな
>>618 ご苦労だった。
と、言いたいところだが、
そんなことしなくても、if(is(T:TS))else...使えばいいわけで。
実行時チェックしたいっぽいからそれじゃ無理なんじゃないの
関数リテラルから第一引数の型を取れればもっと簡単にできそうなんだが ParameterTypeTuple は上手い具合にはまらなかった
関数リテラルのパラメータを取れないの? じゃあ直さないと
623 :
621 :2011/07/12(火) 23:38:01.17
単体では取れるけど 関数の配列を扱いたいから静的呼び出し?の制約にはじかれた ↓こういうイメージ dispatch(object, (Exception e){ writeln("class exeption"); }, (Object o){ writeln("all class"); }, //以下同様 );
>>624 おお、すっきり。感動した。
テンプレートだと lazyいらないんだな・・・()()に悩んだ時間を返せ
>>623 それのどこにParameterなんたらを使うと?
LuaDが6月に更新されてた
いやなタイミングだ
>>626 引数の型を先に取って
→ダウンキャスト判定→個別関数呼び出し
これで行くしかないと思ったのさ
>>628 やりたかったことがここにある、って感じだな
俺のはてぶんテンプレートの使い方を間違ったんだろう
>>613 もこれで満足に違いない
DはC++に取って代われますか?
すげえ頭悪そう
632 :
613 :2011/07/13(水) 11:13:00.07
>>624 おお、すっきり。 振る舞いも完ぺきだ!
俺が、この変な構文とパフォーマンスの悪さを許せればね・・・
なんだか、パッチ書かないと許されなくなってきたような気がするよ!!
ただ、コンパイラの書き方なんて知らない俺には、DMDのソースの解読にえらい時間を取られそうです・・・
後は書き損じたときに意味不明なエラーさえ出なければ・・・!
ここにいる人でもエラーメッセージをエラーっていうんだね。
それでわかるからね。
えっ、ちょっと書き損じたら意味不明なエラーでdmdがsegfaultするんじゃないの?
Optlinkから応答がありません!
ぞくぞくするぜ……。
CTFEでstd.string.toUpperが通らねぇ… …ウフフフフ
stringをwchar/dcharでforeachする関数が実装されてないってことかな
2.054 / これの対処法を教えて… Error 42: Symbol Undefined _D3std9exception7bailOutFAyaixAaZv Error 42: Symbol Undefined _D3std6string9toStringzFAyaZPya Error 42: Symbol Undefined _D3std3uni10toUniLowerFwZw
643 :
642 :2011/07/15(金) 19:54:20.79
あ、dfl*.libをリンクしてたのが原因だったw
644 :
642 :2011/07/15(金) 20:20:09.17
2.054 ・ Implement @property? Added -property switch? イミフ ・ switch の case が複数にまたがると 警告 // goto default; 等で回避 ・ std.string.atoi はクビ 代わりに std.conv.to!int ・ std.ctype さよなら。 std.ascii こんにちは。 ・ std.array.insertInPlace が複数要素を挿入可能 後はどーでもいいや
dfl のライセンスってトリプルライセンスみたいなこと書いてあるけど 実質 LGPLしか選択肢ないことに気づいた DLLどうやって作るんだっけorz
バージョン情報とかにDFLを使ってますって書いとけばいいんじゃないの? そんなにうるさいこと書いてある?
>>646 dflは整合性を取るのが面倒だったからwin32apiに戻したから力にはなれない。すまん。
時代に逆行してるのかもしれないけど
dflと一緒には心中できないものw
>>649 Choice1: LGPL
Choice2: zlib
if the code(=DFL) in no way depends on the Windows Win32 API.
Choice3: original
Unmodified versions of the DFL
もっとゆるゆるだと思ってたんだがな
質問なのですが クラスに関数を盛り込んだオブジェクトを大量生成するよりも 最小限の実装をしたオブジェクト+大半の関数はテンプレートにして、 テンプレート経由で実行したほうがメモリの量が節約できたりしますか?
Choice2って何だろ Win32 APIにぶら下がって何かのライセンスを追加する事は決してない Choice3の場合だと ソースを変更しないで使うなら本当の意味でご自由に みたいな解釈でいいのかな?
Choice2の条件 <<DFLが>> Windows APIに依存してはならない(他のAPIへの移植性を持たせろ) ・・・どないせいっちゅうねん
それってどこがzlibライセンスなんだろうw
つか、普通に使い倒してても問題ないだろ。
>enforce use of @property on property functions auto = new A; みたいにコンストラクタのカッコ省略出来ないってこと?
むしろ今まではプロパティじゃなくても省略できてしまっていたってことでは
()省略できるのは意図した仕様でそのために関数ポインタでも&必須にしたんじゃなかったのか
()省略できるの楽でいいのになー もしやこんなところにまでLISPerの魔の手が
関数ポインタを参照してるつもりで 関数呼び出し(の戻り値)になるのはやばい 明示されたプロパティだけでいいよ
delegateがnullだった場合って言語仕様的には2.でOK? 1.if(dlg)dlg(); // nullチェックは必要 2.dlg(); // 呼ばれない
>>665 そんなA社御用達言語しらんがな(・´ω`・)
>>665 本来なら言語仕様のリストが表示されるはずの所が
特定のページの表示になってる。
どういう事かというと、関数やプロパティ等のlex.htmlと同じレベルの説明に飛べない。
違うな・・・ 作成中だから見るなよ! いいか、絶対見るなよ! って状態だな
つまりD言語の仕様なんてなかったんだよ!!!
なっ なーんだ
やはりそうか。
仕様が無いのもしょうがない なんちゃってwww
うぉるたくん「どうしようもない」
まどか「ど…どうしよう…」
まさお「ど…どうしよう…」
ネネ「つべこべ言わずに何とかしなさいよ!!」
アプリ終了時に謎のOutOfMemory が出るようになって GCに問題ありと絞り込んだ それから「バグ報告出したるぞゴルァ」と 半日ほどかけて追っかけてたら ウインドウの破棄(たった1個)が漏れていたというオチ orz outofmemoryは流石におかしいと思うけどこれ以上追う気にならん
PostQuitMessageしないの?
out of 眼中 ですな
デストラクタでpにアクセスしたらダメなんじゃないの? autoだからいいってことかな? 「GC が参照されなくなったオブジェクトを必ず解放するという保証はありません。 さらに、 GC がデストラクタを呼び出す順番も保証されません。 これはつまり、 GC管理下にあるオブジェクトへの参照をメンバとして持つオブジェクトのデストラクタを ガベージコレクタが呼び出すときには、 それらの参照は既に無効となっている可能性があるということです。 従って、 デストラクタからはメンバオブジェクトを参照できません。 この規則は、 autoオブジェクトや DeleteExpression で削除されるオブジェクト (GCが自動で解放することはないので、参照は必ず有効)には当てはまりません。」
p はオブジェクトじゃないから当てはまらないと思う dflかdruntimeかどっちかにバグ報告したいけど 切り分けできん デストラクタから先が追えないorz
Dでwin32プログラムを作ってます。 Releaseビルドで -L/exet:nt/su:windows:4.0 ↑これ入れたらCreateWindowExの所で謎のループに入って 何も表示されないプロセスになってしまうんだけど (タスクマネージャーにはしっかり居るのに。) 同じ状況になった人 or 状況が分かる人解決法あったら教えてくだしあ
687 :
686 :2011/07/21(木) 03:39:55.06
ただ単に型の記述間違いで例外のような状態になってただけでした。 お騒がせしました。
windowsでdmd2.051を使っています。 AddFontResourceを呼び出す方法はありますでしょうか。 import std.c.windows.windowsは行なっておりますが、 undefined identiferになってしまいます。
2.054にする
最新のDでSQLite使いたいんだけどどうすればいいの?
2.054でやたらenumが推進されてるんだけど何かの予兆なん?
アプリで実行時エラーが出た スタックのアドレスダンプが出てるんで XREFつきのMAPファイル作ってのぞいてみたんだが core.sys.windows.stacktrace.StackTrace.trace() <=== 該当アドレス ・・・どうしろと
dmdにコケにされているんだと考えれば腹も立たないさ
訓練されすぎだろww スレが進むごとに馴致も進んでいくな
>>694 ありがとう。とりあえずSQLite3.7.7.1のヘッダファイル変換?やってみるよ
ピコーン、最適化が悪さしていたのか!
701 :
689 :2011/07/22(金) 12:27:26.99
char const *型ってDではどう書けばいいんですか?
const char* a; まんま ただし const char* a, b; この場合bもポインタになるので注意
>>703 それだとconst char const *じゃね
Dではstringを使います。
>>704 ごめんよくわかってなかった
std.typecons.Rebindable!(const char*)が一番近いのか?
Dではstringをcastして橋渡しをします。
const char* -> string char const* -> const char* const char* と const(char)* の違いがわかりにくい
cast時にconst使う必要ないよ。
DのenumってCと違って使用範囲広い気がするんだけど どういう場合に使うの? mixin関数を定数に置き換えたりなんかまだついていけにゃい
コンパイル時に決定する値全般に使われてるね
C -> D const char* -> const(char)* char const* -> 記述不能 あえて書くなら const(char*) ? こうじゃないの?
>>710 値よりラベルの方に意味がある場合
to!string()したときに特に違いが出る
でも const/immutable 定数が貧弱貧弱ゥゥ〜だから
とって代わる存在かも知れない
enumの本来の意味が迷子 でもCの頃からか…
多分インテリセンスが動けば効果を発揮できると思う enum Type : uint { Default = 0, Type1, Type2, Type3 = 4 } Type state; でも、 state = Type.Default; state = state.Type2; わざわざ型か変数を表示しないといけないから state = Default; state = Type1 | Type3; こういう表記でいけるようにしてほしい
>>712 そのふたつってCでも同じじゃね?
const char * = char const * = variable pointer to (constant character)
char * const = constant pointer to (variable character)
char const * const = constant pointer to (constant character) = Dのconst char *
括弧がある場合やrebindableはよくわからん
定数を大量に宣言する時に下手にconstやimmutable使ってしまうと キッチリ領域が取られて大変なことになるからな……。 floatなenumってできたっけ?
stringなenumすらできるのに浮動小数点型が出来ないわけが
>>715 今のほうが分かりやすいしそれだと定数との違いが無いじゃん
それに
>>717 だとType.Defaultとかが出来なくなる
>>716 const(char)* hoge;
は
*hoge = 0;
がエラー
まあ見たまんまなんだが
>>720 ビットフラグを大量に結合する場合を考えてほしい
SoundDeviceInitializeStyle style =
SoundDeviceInitializeStyle.NoWarning |
SoundDeviceInitializeStyle.NoError |
SoundDeviceInitializeStyle.Surround |
SoundDeviceInitializeStyle.SpecialEffects |
SoundDeviceInitializeStyle.Flag1 |
SoundDeviceInitializeStyle.Flag2 |
SoundDeviceInitializeStyle.Flag3 |
SoundDeviceInitializeStyle.Flag4;
こんなのよりも
enum指定時はスコープのように機能して
SoundDeviceInitializeStyle style = NoWarning | NoError | Surround | SpecialEffects | Flag1 | Flag2 | Flag3 | Flag4;
こうなったほうが便利じゃないか?
もちろん、上の書き方でも正しいとすべきだけど。
コンパイラの中身に詳しくはないけどなんかautoとの相性が悪そう
c++と異なるこういう仕様にしたわけだし今更無理っしょ 省略記法の追加ならまだしも・・・ そういえばwithとかなかったっけ
withは変数に対してじゃなかった? enumにもwithみたいなのがあればいいかもね。 それならコンパイル時に時間のコストも大して掛からないし、コンフリクション発生しない。
引数がなくてもオーバーロードできりゃいいんだよ、HaskellとかAdaみたく
D+オブジェクト指向的には 極力少ない引数で、デフォルト値で潜伏させといて 後からプロパティとかで変更するのがベターかな?
>>702 Dは"ポインタだけにconst"は出来ない。
>>725 withはシンボルにも使えるみたい。
enum…
アドレスを取れないってことは、定数がコード途中に直接埋めこまれる事を期待してもいい、
って事だろうか?(それにどれほどの意味があるかは知らんが)
withでなんでもかんでも略せるかと
あとD言語に今更無理はないはずだ
では今からtangoを公式ライブラリにします
お断りしたいのですが
Cのプリプロセッサみたいに テンプレートをすべて展開したソースを書き出す方法ってないかな? コンパイラのオプションとかだとありがたいんだが
D言語はじめようと思ってコンパイラインスコしたらPath消えたんだけど
なんでやねん
>>733 最後まで展開したら畳み込みも行われるぞ
>>733 なんかずっと前に見たなそれ
実現したという話はついぞ聞かない
CTFE終わらせないと展開できないテンプレートもあるから、展開後のを見ても 「よし、わからん」になりそうなw
>>731-732 公式ライブラリにできるならむしろ万々歳なんだが
できないことこそが問題
ストリーム策定を早く・・頼む
4年に一度の再策定を設けよう
path消されたからシステム復元した
ML で変数宣言の仕様拡張をもくろむ不穏な動きが・・・ なんでIDEすぐ氏んじゃうん?
タプルのやつ?俺は面白そうだから通って欲しいな
これは俺は使わないな。。
ストリームの策定… C#かJavaをベースにしたらダメなのか? 他にも案は出ていたと思うんだが… どうして根拠を説明しないんだA氏は
とっくの昔
コンパイラが2.051だな
ここ半年くらいはそういう話は見かけなかったはずだが、もっと前からだと? まったく気づかないとは不覚の至り
公式に行くのはChange Log見るときだけ
オレモオレも
もしや日本語訳の中の人はあれを見てこころが折れてしまったのか
ヒント:std.datetime
スタックダンプとマップファイルを突き合わせて 関数名のダンプに変換できたどーーー!! マップファイルの内容自体、 一体いくつバグあるんだ orz
757 :
デフォルトの名無しさん :2011/07/24(日) 23:02:25.91
そろそろ安定してきた? 始め時がわからない
安定してなくてもいいや、と思えたときが始め時 まだ早いかもしれんね
むしろ安定してきたと思ったら捨て時
…………早くこねえかなア、捨て時……。
COBOLの捨て時がまだ来てないんだぞ
「もうあんたらにはついて行けねぇよ」 つってガラパゴスDが複数立ち上がったころが始め時かな
信じられないだろうけど、複数立ち上げたのって同一人物なんだぜ 名前は確か…ウォル…マート?とかそんな奴だったようだが 思い出すのも大変だ
あれはもうD言語じゃないんだ
なにこのSFチックな流れ
そうか、脱皮だったのか
あのマスコットが脱皮して、なにも変わらないよーんみたいなドヤ顔された絵が浮かんだ。 マジムカつく。 それはそうと、Phobosにstd.net.browserとかいうシェルでurl叩くだけの不可解なもんが入りそうなんだが、誰か止めてくれよ… それともなんか素晴らしいポイント見過ごしてる?
止めなくても本当にダメなら入った後にopenrjみたいなことになっていつのまにか廃止されるんじゃね?
そんなのが入るくらいなら標準GUIライブラリの一つでも入れられそうなもんだ
レベルMAXにしないとラスボスに挑みにいけない病の俺はなんとなく気持ちがわかる・・・
772 :
デフォルトの名無しさん :2011/07/26(火) 00:35:11.37
「オレ達は もう飽きたんだ。 お前らは また別の敵を見つけ 戦い続けるがいい」
そして誰もいなくなった
一 万 二 千 年 後
愛してる♥
777 :
デフォルトの名無しさん :2011/07/28(木) 01:43:48.94
レンタルサーバーでD言語(CGI)を動かしたりしてる人っているか? もし、いるのならば、どこを使っているのかを教えて欲しい
778 :
デフォルトの名無しさん :2011/07/28(木) 01:59:52.47
telnet接続できるとこならいけるんじゃない?sakuraとかでも
D言語の使えるホスティングサービスを立ち上げるのだ
鯖と同じosでコンパイルすりゃ使えるんじゃない
SakuraのVPSいいよ 安くて何でも出来る
おーーー、 共有サービス使ってるのが馬鹿らしくなってきた・・・
最悪、コンパイラ一式とソースをうpしてCGI経由で叩けばtelnet使えないプランでもおk クロスコンパイラ作ったほうが賢いけどな……
rdmd+スクリプトで使うってことかな 中間ファイルの衝突は回避できるんだっけ
違う違う、#!/bin/sh、makeと2行だけ書いた拡張子.cgiのファイルもうpして それをブラウザで実行させるんだよ。サーバー側でコンパイルできる ついでにecho content-type:text/plainとかやっとけばエラーメッセージも読める ……書いてて酷いとは思うが
786 :
デフォルトの名無しさん :2011/07/28(木) 21:28:04.01
オラ、わくわくしてきたぞ
ファイル読み込みは将来的にはfgets使っといたほうが無難? マゾ的な意味ではstd.stream推奨だろうけど
D言語で将来を気にしたら負け むしろ怪しい部分を徹底的に使う そしてバージョンアップで通らないコンパイル これがD言語erの嗜み
いつの将来になるかわからんしなー。自分も気にせんほうに一票 もしくはstd.file.read
をるたんが死んだら終わり
おいやめろ
その死はD言語の死=D言語の完成を意味するのか おいやめろ
トラックナンバー=1とか駄目すぎる。
俺が引き継ぐ(キリ) とか言う香具師が一人くらいはいるかと期待したが このスレは駄目だな
D+ <- 十字架
引き継ぐぐらいならゼロから作るってやつばっかだろう
797 :
デフォルトの名無しさん :2011/07/29(金) 09:01:37.78
うぉるたんの立場は D言語統合の象徴であり君臨すれども統治せずってのがよいかもしれない
使いやすさを提供してくれればそれでいい
>>798 みたいな事になったらD言語はおしまい
800 :
デフォルトの名無しさん :2011/07/30(土) 10:42:16.60
D言語 = うぉるたくんのかんがえたすごいぷろぐらむげんご ぼくが いちばん つよくて すごいんだぞ
D叩く人ってC++0xについてはどう思ってるんだろうか
それはきっと D言語を叩いているんじゃなくて アルファ版を実用版と錯覚して使ったり薦めたりするユーザーを叩いているんだ
完成さえすればいくらでも実用性はあるんだよ 完成さえしてくれればな
俺実用してるよ バグが出た時自分のコードを疑わなくていいから楽だよ
未完成でもしょうがないけど後退をするなと D @ high-suite プロジェクト
最近はD使ってないのにスレ書き込む子多いのね と思ったらそうか夏休みか・・ 実用求めるなら他の言語やればいいし Dの場合常に未完成で変化を楽しむのも醍醐味なんだよね これほどアップデートが楽しみな言語はないよ
というかこの世に完成した言語なんて一つも無いんだけどな C++は0x(11)で後方互換性はあるけど実質破壊的変更レベルの新文法があるし Javaも7で激変して8でラムダ式搭載だし COBOLですらオブジェクト指向対応版が出てる Dは更新ペースが速いから目立つだけ
Javaの5が出たときは心踊ったもんだがDは毎月その感動を味わえるので最強 しかもJavaと違って破壊的変更。コレ。
すまない。M以外は帰ってくれないか!
Brainfuckいいよ仕様変更ないよ
「では、何故D言語を選択したのですか?」 「はい、D言語と共に成長して参りたいとそのように考えたからです。」
class Foo { public: int a,b; this(int n, int m) { a = n; b = m; } int plus() { return a + b; } int minus() { return a - b; } } auto x = new Foo(111,4); auto f = &Foo.minus; x.*f() こういうことできないだろうか・・・メンバ関数ポインタ
auto f = (Foo p){ return &p.minus; }; f(x)(); うーん
どのメンバが呼ばれるかがコンパイル時に決定できないという前提で。
過去スレのPart10 で「出来ない」と言われてて
そのまま変わってないっぽい?
↓デリゲートの内部領域を書き換える裏技w 64bitでもいける?
665 :デフォルトの名無しさん[sage]:2006/10/11(水) 06:56:05
レスサンクス。
>>662 の意味のつもりでしたが、D では使えませんか。
とりあえずは、以下のコードで逃げることにしました。
struct D { void* ptr; void function() fp; }
(cast(D*) &dg).ptr = obj;
(cast(D*) &dg).fp = &A.func;
おぉ、俺の昔のレスだ。それ、今は ptr, funcptr でアクセスできるようになってるよ
それ仮想関数でも基底のほう呼んでしまわね?
なんていうか・・・・すごくJavaScriptです・・・
>>815 代入までできるのか! これが公式回答なんだなw
>>814-815 int delegate() dg;
// dg.ptr = &x; // これだと関数呼び出し時に落ちる
dg = &x.plus; // いったん ptr,funcptr の両方を埋める
dg.funcptr = &Foo.minus; // 関数ポインタだけ書き換え
dg();
ptr に何を入れていいかわからんけど無視ということで
なるほど勉強になったthx 俺はここでいうfを構造体自身にメンバとして持たせたかったんだが this(this) { f.ptr = (&plus).ptr; } という荒業で解決することができた、スマートではないが
>>819 dg.ptr = cast(void*)x;
この感覚はどうも理解できない・・・
dll内関数の呼び出しで __uuidof の値を使用したいんだけど D言語で値を生成するにはどうしたらいい?
>>823 レスありがと。
具体的には、D2Dで行っているような __uuidof(ID2D1Factory) のような値をそのまま引数としてdllに渡したい。
でも、この挙動がどういうものなのかよく理解できていなくて。
UUIDっていうのは基本的に重複しない数値を生成する為のものだと思うんだけど
ここでやっているのは一意の値を取得しているように思えて
実際にはどういう処理が行われているのか分からなくて頓挫してしまった。
UUID自体は数値が複雑に入った構造体という所まで理解できたんだけど…
ちなみに、↓とかに書かれているような関数で使用したい。
ttp://msdn.microsoft.com/ja-jp/library/dd368034%28v=VS.85%29.aspx お願いします。よかったら教えてください。
>>824 __uuidof は定数を返すだけの単なるマクロと考えて忘れるべし
要点だけ書くと
struct IID;
IID IID_ID2D1Factory = {0xA******A,0x0ad4,0x11ce,[0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70]};
D2D1CreateFactory( ... , &IID_ID2D1Factory , ... );
もちろん、定義済みヘッダ使えば構造体の中身とかも気にしなくていい
>>823 の kdlib のところに D2Dのヘッダもあったから
他のヘッダとの干渉が煩わしいけど、うまく使ってみて
>>825 kdlibを使用して、コマンドに -version=INITGUIDを追加
import c.windows.guiddef, c.windows.d2d1;
...
GUID iid = IID_ID2D1Factory;
D2D1CreateFactory(factoryType, &iid, null, cast(void**)&pFactory);
こんな感じでやったらできた。
ただ、2番目の引数を &IID_ID2D1Factoryとかやると、理由は分からないけど
Error 42: Symbol Undefined __D1c7windows4d2d1127__T10DEFINE_IIDTC1c7windows4d2d112ID2D1FactoryVAyaa36_30363135323234372d36666F0BF204B33EA68C031C05D2D3E963CA
となってしまうみたいだ。こっちは何だろ?
とはいえ、解決できた…のかな。丁寧に教えてくれてどうもありがとう。
グローバル変数が Lib側にあって import しただけだと構造体の実体が取り込まれない ↓の行を1個ずつ手作業で書いたのを思い出したw IID IID_ID2D1Factory = { xxx }; kdlib の 静的Libを作ってリンクするのが真っ当なやり方だと思う
コンパイル可能なDのバージョンを ソースに明記することを義務付けるべき pragma( Dver, 2054 ); ライブラリが次々と死滅していく中、 少しでも再利用しやすくなるように
Dverが合わなければコンパイルエラーがドバーってか
import std.compiler; version(DigitalMars) { static assert( version_major == 2 && version_minor >= 54); } これでいかが
version(DigitalMars) { import std.compiler; static assert( version_major == 2 && version_minor >= 54); } こっちのほうがいいか
D的には>=じゃなくて==の方がいいのでは
dmd -ignorevercheck こっちがポイント
// This library is written for dmd 2.054 これだけでいいんじゃないかな
library よりも module とか code のほうがいいか
>>833 未対応のオプションだとエラー扱いになるんだっけ
それだとあんまり意味無い・・・
で、いつ頃64bit Windowsに対応してくれるんだい? そろそろ辛抱たまらんよぅ 誰か!具体的な!リリース予定日とか!知ってたら!教えてくれ!!!
あ、あしたやってやるさ
64bit windows の起動ディスクを作ろうと悪戦苦闘してて たまたまスレをのぞいたら・・・ソンナ バカナ!! やめたやめた、w
とっととWindowsAPIを標準ライブラリに取り込んで欲しい
外部に有志のポーティングがちらほらあるからいいものの 標準のあのやる気の無さは何だw データ型も64bitのがあるくせに。64bitくらい対応してくれてもいいじゃんね 対応してないからこそあんまり厳密にWinapiを定義できないってことなのかもしれんけど ウォルター仕事しろぃ
Dは趣味で作ってるだけで、仕事で作っているわけではないのだけどね 「うぉるたくんのかんがえたすごいぷろぐらむげんご」に付き合っているだけのプロジェクトに何かを期待すること自体がナンセンス
期待ぐらいはしてもいいだろ 要求するのは筋違いとは思うが
dmdの核心部分の開発はクローズドなんだっけ?
最近D触ってない俺のエンジンに火をつける言葉をくだ
D言語erにあらずんば マゾにあらず
>>845 Dを使わなきゃいけない理由なんて何もないし
Dを使って作らなきゃ行けないものなんて何もない
おお・・おおっ!
…なんだこの力は…!
目が覚めました
☆ 開 眼 ☆
あぁ、今作ってるプログラム(C++)、Dで書き直そうかな
なんという英断
>>852 が作り直す途中で足りないものがどんどん出てきて
補充していって最後に俺が得をするという流れ
成果物のライブラリは次のバージョンで使えなくなってるから心配しないで。
青果だけに日持ちはしませんな
ウォルターが危篤状態なのはお前のせいか?
思考は現実化する ごめん 漏れのせいだ
青果だけにお前のせいかw
ヲルタンキトクスクカヘレチチ
オンドゥルルラギッタンディスカ-
ただの"セイカ"ギャグだろ
せいかい
864 :
デフォルトの名無しさん :2011/08/06(土) 03:32:11.65
このスレ見てたら目眩が…気のせいか
そろそろD言語、完せいか。
Dajareスレはここですか?
そんな事言うのは誰じゃ? あいつのせいか
dio2…
Dが完成するころには ”コンピュータのかたち”そのものが変わっているような気がしてならない 量子マダー? チン、チン
コンピュータの形っていままで通り卵型だろ?
.hから.dに変換したファイルにマクロがあると関数に展開しないといけない→importだけじゃリンク時にこける のがやだな わざわざobj作ってリンクする必要が出るって欠陥じゃないか やっぱCのマクロが最強ってことか
強すぎて 乗りこなせないPGによって屍の山が築かれたんだよ だから去勢されちゃったのさ
>>871 テンプレート関数にすると使用する側をコンパイルするときに勝手にくっついてくるからおすすめ
>>873 長年の俺の悩みが解決した
これで俺もディーラーになれる
ありがとう
ほへー、ふへー、 module test; t aaa(t)(t n){return n * 2;} --- module main; import std.stdio; import test; void main(){writeln(aaa(1));} --- dmd main.d (test.dいらない)
だがそれは爆速DMDたんを苦しめる罠
わかったdmdたんを苦しめない方法を考えようじゃないか --- int aaa(int n){return n * 2;} --- module main; import std.stdio; mixin(import("test.d")); void main(){writeln(aaa(1));} --- dmd -J. main.d
そんなとこにインポしちゃうなんて・・・・
879 :
デフォルトの名無しさん :2011/08/07(日) 11:35:28.40
>>869 すでにタワー型→モニタ一体型に変わってるのに
こっからどう変わるんだよ
モニタ眼球組込み型とか?
>>879 生体コンピュータを知らないなんて遅れてるぅ〜(笑)
すごく初歩的な質問かもしれないんだが… import std.stdio; class Foo { this(){} int t(T)(T a){ return 10; } } class Bar : Foo { this(){ super(); } int t(T)(T a){ return 20; } } void main(string[] args) { Foo a = new Bar; writeln(a.t("dummy")); // 20にならないのは何故 }
テンプレート関数は今のところオーバーライドとかオーバーロードとかできなかった気がする なのでaの静的型であるFoo.tが呼ばれる
エラーにならないんだな
この辺りは仕様なのかバグなのか
うお、マジかサンクス… これ結構不便じゃないかな…何か問題があるのか実装上の問題か C++でも試したら10だった
仕様 >Templates cannot be used to add non-static members or virtual functions to classes
大丈夫コミッタがこのスレ見てるみたいだから10分後にはパッチ出るよ
このような過疎スレにも見えないヌシが宿っているのかw ここを見ているヌシ様 いつもお世話になっております これからもよろしくです(笑)
C++を使う ↓ 複雑な記述にストレスが溜まる ↓ Dの言語仕様に感動 ↓ Dに乗り換える ↓ 使いたいライブラリが無い or 低レベル ↓ 自分でライブラリを再定義 or 作成 ↓ 手段が目的化 ↓ 結構楽しいのでハマる(やってる事は車輪の再発明) ↓ 我に返る ↓ 全然関係ない事をしていたことに気付く ↓ 俺はまだまだC++(チキンライス)でいいや♪
2番目に戻る が抜けてるぞ
おまいらの予想ではWindows上でのdmdの64bit化はいつ頃?
Win7 でアプリの動作テストしてたんだが、
クラッシュしたときのダンプに
関数のコールスタックが出てるのを見て衝撃を受けた
XPでやってるときはアドレスしか出なくて
そういう仕様だと思ってたんだが・・・
>>892 年明け 特に根拠は無い
>>881 の例書き換えて試してみたけど非staticなメンバにアクセスできる\(^o^)/
女への突撃はできなくとも dmdの穴には突撃できた お前は優秀な兵士ということだ!
896 :
デフォルトの名無しさん :2011/08/09(火) 00:07:00.29
64bitOSなんてなかった
64bitだけに存在を無視されているという訳か
最近部屋が蒸し暑くてたまらん
テントウ虫舐めんな
舐めてみないと、 テントウ虫の味は一生わからないままだ
味も見ておこう
このテントウ虫ウソをついてる味だぜ
ジュル…
foreachをいじりたいときにopApplyとかレンジメソッドとかいろいろ方法があるみたいだけど(だよね?) どういう風に使い分ければいいのかな?
range以外ってdeprecatedじゃないのか?
rangeのスーパーセットとしてrangerが入るんじゃなかった?
hanageまだ?
Andrei が D PSP emulator にハァハァしてるのがおもしろい
近頃のGUI事情はどうなってるんだろう?
有志の作ったWindowsAPIのポートがあるからそれ使えばいいよw
こいつはいいや、MFCなんかよりよっぽどきびきび動くぜ! っておいィ?
DWT2がまた息を吹き返したな
色々考えたけど
__EOF__
以下にDSL書いてトランスレータで上にDコードを生成すれば
スクリプト言語っぽい上にコンパイルもできる言語になるかもな
プリプロセッサのカスタマイズのような感じに
複数ファイル対応は
>>877 でできるし
>dmd -run gui.d src.d
>dmd -run src.d
って感じにできる、ファイル数も増えないし読める
GUI用DSLや、ちょっと機能追加するフィルターで
tupleの戻り値もa, b := c()のように書ける
気合入れればPythonToDやRubyToDもできるだろうし
goroutineなんかも実装できる
他の言語のライブラリも使えるようになるだろうか
ダメだ俺には何言ってるのかさっぱりだ
import script;
void main()
{
script.run(<__EOF__>);
}
__EOF__
a := "Hello";
b := "World!";
print a + " " + b;
的な?
>>914 の場合はscript.run(import("script.txt"));とか
>>914 アカウントないから動画見れないのでよくわかりませんけど
多分同じようなこと
つまりはプリプロセッサで言語作ればいいんじゃね?という結論
コードを書く効率が悪すぎるからなんとかしたいけど
自分でコンパイラ書くよりはc++へのトランスレータ書いたほうが楽だし
それよりも文法を自分用に追加したほうが楽だと思った
追加もすぐに気楽に行いたい、手間も最小にしたいので相互変換できない
余計なファイルが作られるのは嫌
デバッガ使いたいし、変換後のdコードは見たい
これらを全部満たす楽な方法が他にあればいいんだけどこれしか思いつかなかった
>>916 import std.stdio;
import std.variant;
void main()
{
Variant a = "Hello";
Variant b = "World!";
writeln(a.get!(string) ~ " " ~ b.get!(string));
}
__EOF__
a := "Hello";
b := "World!";
print a + " " + b;
__EOF__より後が変換前、__EOF__より前を自動生成して頭に付ける
script.runの部分が変換だと思うけどこの部分がフィルタになるのかな
Dはそのままでもそれなりに動的にも書けるな
dmdのバージョンうpのたびにトランスレータから書き直せるってことか? なにこのwktkな流れ?#д#
なんといえばいいのかわからないけど 言語仕様を拡張できるD言語プラグインというのが一番近いのか トランスレータは多段パイプできるから 無茶な拡張をしなければ好きにカスタマイズできると思うし 言語仕様が変わっても修正は難しくないと思いたい 致命的な欠陥や似たような仕組みがあるなら教えてください
DWT2が動くようになったと聞いて2.054にアップデートしたんだが ちょっとしたライブラリ関数の名前の変更200個くらいとswitchへのdefaultの追加と あとstd.regexの挙動の変化に対応しただけで自作アプリが動いちまった 最近のDは腑抜けといわざるをえない
std.file.listDirって全部消えるん? ファイル名を文字列の配列で取って来たいときとか、dirEntriesじゃ完全な代替にならんと思うんだが
>>921 出力されるDのコードの読みやすさが気になるな。
1.スッキリ -> わざわざスクリプトから変換しなくてもDで記述できる
2.平易だが冗長 -> スクリプト万歳
3.やたら難解 -> デバグが二度手間
そのスクリプト言語に対してD言語の関係が2ならすごく実用的だと思う。
asm文みたいに書ければ理想的なのかな?
生暖かく応援したい。楽しそう!
>>924 すまん、色々考えてみたけどあんまり意味はなさそうだった
dslはevalの方が効率よくかけるし
ライブラリの変換は一回できれば十分だから変な仕組みも必要ないし
せいぜい言語を少し拡張できるくらいしか意味がないと思う
自分が何をしたいのかがよくわからなくなってきた
DWT2の落とし方がわかんなかった svnじゃないんだ・・・
gitとかhgとかには今のうちに慣れといた方がいいと思う そして慣れるとsvnがカスに見えてくる
>>925 少なくとも、ライブラリの変換が1回で済むという主張には賛成しがたい
がんがってくれ
D自体が高機能でシンプルなんだからいらいなあ
サクラエディタでメソッドの引数や説明をキーワードヘルプに入れようとすると 関数、定数、構造体はすぐに作れるんだけど クラスライブラリになるとクラス名検索が必要になるから ツール使って少し特殊なことをしなければならなくなる そしてテンプレートが含まれるとお手上げ状態 もしかするとクラスライブラリの存在自体が 開発効率を押し下げてるのかもしれないと考え始めた phobosもテンプレート使い始める前までは使いやすかったんだけどな もう俺は時代についていけてないのかもしれん
抽象化されてる部分まではさくさく作れるけど 実装を始めるとリファレンスの読みやすさが全てになってきて そうなるとリファレンス引きやすいグローバル関数こそが 正しいライブラリのあり方なんじゃないかと思えるようになってきた autoitはさくさく作れて楽しいのに 比較してクラスライブラリは苦痛でしかない namespaceもオーバーロードも否定したい気持ちになってきた みんなが使ってるから便利なものだと思ってたけど 実は間違いなんじゃないのかと それとも俺は老人のように頭が固くなっただけなのかもしれない 今までやってきたことはなんだったんだろう
emacsや秀丸とかプログラミングに特化したもの使わないからでないの
ideが
D は Destruction の略 C++ 壊してくれないかな
俺の中での鍵はWindows 64bit対応かな そしたらC++ありきの現状からは抜け出せる 別にdllで橋渡ししてもいいしね
Javaとかのクラスライブラリは物凄く便利だ だが実は結構使うのが面倒という事にはphobosを使い始めてから気付いた tangoを使ってみて確信に変わった
>>925 D言語拡張の話でなく、スクリプト言語のトランスレート先としてはDが最適
そして__EOF__以下に元コードつければ便利
と言う話ならアリだと思う
LL信者を気づかぬうちにD信者にしてしまおうプロジェクト?
むしろD2をLLVMに対応して欲しい D言語界での開発というのは何故か活発になりづらい
Dlang (ドラン(グ)のように発音)
コードの書き方によってOPTLINKの謎エラーが出たり出なかったりして困る 小さいプログラムなら問題ないんだけどなぁ
サイズだけに依存するバグなんて存在したら俺は頭を抱える
シンボルのデマングルで文字化けするケースがあるから それが原因かも知れない
で、マングリ返しまだ?
>>944 間違い。マングル化で文字化けするケースがある。
どっちにしろぱねぇ
全部纏めてコンパイル&リンクしないとシンボルが行方不明になりまくることがあるのはそのせいか
bud -full -clean最強
>>949 コンパイル爆速だから-clean は使うよね。
ところで -full ってなに?
コレつけないとコンパイルされないソースが出てくるの?
なんかの手違いでオブジェクトファイルが残ってるとそれを参照してかなんかいやな感じになった気がする よくは覚えてないけどそんな理由でいつからかつけ始めた
952 :
950 :2011/08/15(月) 22:46:01.44
そうなのか。自分も念のためつけとこう。
Dさんぱねぇ
Win64の仕様ではABIがある程度策定された状態からのスタートみたいだから それに合わせようとするとかなり根本的な改修になってしまうのかもね アセンブラでの記述部分も再編しないといけなさそうだし
Dの連想配列にrehashってありますけど、これってこれを呼ばない限り速度は線形探索に等しいってことなんですか?
等しくはないけどオープンハッシュだから要素の追加をどんどんやってけばハッシュキーがかぶって線形探索ぽくなっては行く だから定期的にrehashしてハッシュを再生成してやって検索しやすくしてやったほうがいいとは思う
ハッシュドポテト
上手いことハッシュ値を作れるなら大して遅くはならないと思うけど
え、ハッシュ値って勝手に作り出せるんだっけ どっかのプロパティ?
toHashか
>>956 ,958
ありがとうございます。まさかと思ったことが杞憂に終わってよかったです
キウイ
>>955 ハッシュテーブルのサイズが要素数に依存してるから要素数がある程度増えたらrehash必須だわ
インスタンス生成時とrehash時にしかハッシュテーブル拡縮しないぽい
連想配列を空で作った場合ハッシュテーブルには要素を31個しか格納できない状態になってて
どんなにハッシュ値をかぶらないようにしても32個目追加した時点でリンクリスト化してって
探索オーダは線形探索に近づいてくみたいね
32個目追加した後にrehashすればハッシュテーブルサイズが97に拡張されるから安心
要素数が多くなっていくとハッシュテーブルサイズは指数関数的にでかくなるから
そんな頻繁にrehashしなくてもいいみたい
速度とトレードオフでどのくらいの頻度でrehashすればいいかは決めるといいかな
要素数が少ないうちは頻繁に、多くなったらたまにでいいみたいに
こういうもんは基本的に一連の追加が終わったらrehashするもんじゃない? 追加と参照を交互に繰り返すようなアルゴリズムだったら難しいだろうけど
Windows で GDB使えてる人いる? ddbgから乗り換えようと思っているんだが動かない(WinXP32+MinGW+GDB7.3) "foo.exe": not in executable format: File format not recognized -g -gc どっちでビルドしても同じ
cygwinならでけた
Dの出すプログラムは変態仕様となっております 推測だから言い切れないけど一般的に使われるCOFFじゃなくてOMFタイプのアプリケーションには対応してないとかでは
そういうのが書いてあるFAQ見た覚えがある
それが
>>837 ,
>>954 にも繋がるのかもね
OMFフォーマットというのは元々16bit時代に使われていた形式らしい
その時代の人間ではないので詳しくは知らないけども
やっぱり MinGW が対応してくれないとダメなのかな ありがと
C#のstring.Format実装してくれてありがとう
>>971 -
やろうとしたけどlocale絡みで挫折したわ
??
%s使えばいいのに
tangoのってそんなんだったような
書式はどうでもいいけど引数のindexを指定するのが何気に欲しかったりする メッセージを英訳とかすると語順が変わったりするからちょっと便利そう // 日付。 // 0 = 年、1 = 月、2 = 日 version (Japan) { string date = "{0}/{1}/{2}"; } else version (America) { string date = "{1}/{2}/{0}"; }
std.formatにそんなんあったような・・・ formattedWrite(writer, "Date: %2$s %1$s", "October", 5); こんなん
この流れを見てて思った 標準ライブラリで出来ることなのに それを知らなくて 気づいたら再実装してたなんておまいらもよくある話?w
標準ライブラリが安定してなくて自作ならよくある ソート関数が信じられないくらい遅くなったことがあって、自作したら20倍以上速くてびっくりしたり
文字列処理系はDでもヤバいよね c w d みたいなサフィックスがあるだけでエラーとか…意味ナス 最近は減った方だとは思うけど
char固定はもう古い const(string)でエラーになったりするのが今の流行
コア部分の開発者陣営ってどのくらい人数居るの?
985 :
デフォルトの名無しさん :2011/08/22(月) 22:10:57.15
7人
の侍
987 :
デフォルトの名無しさん :2011/08/22(月) 23:28:24.06
今更だがD言語って存在価値ないな
最近は破壊的変更がまったくといっていいほど無いもんな
989 :
デフォルトの名無しさん :2011/08/22(月) 23:51:06.18
MSがVisual D出したら本気出す
991 :
デフォルトの名無しさん :2011/08/23(火) 00:43:15.96
C++使えるやつがD言語に乗り換えるメリットってあんの?
>>991 ・言語仕様やライブラリを巻き込んだバージョンアップ☆
・型表現もシンプル!64bit型だって楽々表現できちゃう。32bitアプリケーションが出力できる
・ガベージコレクタ内蔵
・配列の機能がたくさん!STLのListみたいなゴチャゴチャしたのはいらないよ!
・ヘッダ?前方宣言?何それ??コンパイル時間が早い!
・本家のサイトのドキュメントが充実!これで簡単にマスターできちゃうね^−^
D言語使うなんてオナニー以外のなにものでもない
あなたのオナニー手伝います
D言語の求人探すの手伝ってくれ
窮人め
ノ (゚Д゚) < D言語! ( (7 < ヽ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。