D言語 Part12
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/02/10(土) 01:09:54過去スレは >>2
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
0153デフォルトの名無しさん
2007/02/13(火) 20:40:42明らかに人柱版としか思えないんですけどwwwww
0154デフォルトの名無しさん
2007/02/13(火) 20:51:12正式版も何も、単にバージョンが1になったというだけの話でしょw
0155デフォルトの名無しさん
2007/02/13(火) 21:05:470156デフォルトの名無しさん
2007/02/13(火) 21:20:10hoge(x, y, z) do (int x, int y) {
...
}
でいいんじゃねえの?
パイプって左右の区別なくて気持ち悪い。
0157デフォルトの名無しさん
2007/02/13(火) 21:56:47if(line == "---EndOfScript---"){ break; }
if(line.startWith("#")){ continue; }
return line;
};
class File{
static char[][] collectLines(char[] filePath) do (char[] delegate(char[]) yield){
char[][] result;
open(filePath) do (File file){
while(!file.eof){ result ~= yield(file.readLine()); }
}
return result;
}
static void open(char[] filePath) do (void delegate(File) yield){
File file = new File(filePath); scope(exit){ file.close(); }
yield(file);
}
}
/* コンパイラは、delegateの呼び出しが行われるのがwhileやforの中のみと判断した場合に限り、
そのdelegate内でのbreak、continueを許します。それらが行われた場合、delegateの実行は中断され、
delegate呼び出しから最も近いforやwhileに対してbreak、continueが行われたものとして処理されます。 */
妄想が窮まってきたので、いい加減もう寝ます……。
0158157
2007/02/13(火) 22:09:33/* 検討事項: ... do (loop char[] delegate(char[]) yield){ ... のようにloopキーワードを付けるなどして、
delegate引数の宣言の側でbreak、continue可能なことを明示すべきかもしれません。
この場合、この`yield`はwhileやforの中で呼び出さない限りコンパイルエラーになることになります。 */
今度こそ寝る。
0159デフォルトの名無しさん
2007/02/13(火) 22:25:00「関数呼び出し do 関数リテラル」って形だな。
doを既存の演算子に置き換えて、
その演算子をオーバーロードしたクラスを関数呼び出しが返せば、
「関数呼び出し 演算子 関数リテラル ;」という形にはなりそう。
その場合、文じゃなくて式だけど。
0160デフォルトの名無しさん
2007/02/13(火) 23:16:440161デフォルトの名無しさん
2007/02/13(火) 23:34:45我々にはopDoが必要だ。
0162デフォルトの名無しさん
2007/02/14(水) 05:40:330163デフォルトの名無しさん
2007/02/14(水) 05:57:510164デフォルトの名無しさん
2007/02/14(水) 06:31:20教えやすいとか思ってないよな?
しかも性能が劣るのは確実
単なるジャンプに過ぎないbreakやcontinueの代わりに例外なんて
論外もいいところ
馬鹿じゃないの?ただのオナニーじゃん
0165デフォルトの名無しさん
2007/02/14(水) 06:39:54おまいばかじゃね?
ネタだとしても、折角do使ってキーワード増やさない様にしてるのに何してんだ。
そんなんなら最初から新たな構文作るだろ。
0166デフォルトの名無しさん
2007/02/14(水) 06:41:12仕様いじくりまわして使えなくしてしまおうという
スパイの陰謀にしか思えない
0167デフォルトの名無しさん
2007/02/14(水) 06:44:170168デフォルトの名無しさん
2007/02/14(水) 06:52:10Japanese
0169デフォルトの名無しさん
2007/02/14(水) 06:52:260170デフォルトの名無しさん
2007/02/14(水) 07:43:560171デフォルトの名無しさん
2007/02/14(水) 08:03:36全部ネタなんだぜ
0172デフォルトの名無しさん
2007/02/14(水) 08:20:550173デフォルトの名無しさん
2007/02/14(水) 09:11:02・・・なんで?
もしかして、writefだとUTF-8通らないのか?
0174173
2007/02/14(水) 09:11:560175デフォルトの名無しさん
2007/02/14(水) 09:25:140176デフォルトの名無しさん
2007/02/14(水) 11:44:200177デフォルトの名無しさん
2007/02/14(水) 12:01:41一口に速度と言っても、みんなどれくらいのをイメージしてるんだ?
俺は元々Java/Webな人間だし、個人的に作りたいモノも大抵Winアプリだしで、
停止時間が0.3秒くらいに収まればいいかな、くらいに思ってるけど。
だからforよりパフォーマンス落ちるとか程度は、(多分)全然許容範囲。
やっぱゲームとかリアルタイム処理な人は、
1万回のループが1/60秒以内に収まらなきゃ論外(数値は適当)、
delegateとか話にならん、て感じなんだろか。
0178デフォルトの名無しさん
2007/02/14(水) 12:58:51ループ箇所の処理時間はボトルネックになりやすいという
一般論を前提にして今の話は進行してたんだろ
0179デフォルトの名無しさん
2007/02/14(水) 13:04:37たしかにそうみたいだな
import std.stdio;
void main()
{
printf("ほげほげ");
writef("ほげほげ");
}
で、ちゃんと表示されてるから。
でも、なんでちゃんと表示できなかったんだろう・・・>htmlget.d
0180デフォルトの名無しさん
2007/02/14(水) 13:17:42GC関係じゃね?<停止時間
0181デフォルトの名無しさん
2007/02/14(水) 13:30:43別に性能がどうでもいいんならVM言語やスクリプト言語でいいし
って話じゃねーの?
画像データをピクセル単位で弄くったりすることを考えると
遅いループなんて使う気にならないよ、少なくとも俺は。
0182デフォルトの名無しさん
2007/02/14(水) 13:47:42停止時間は例えば「ユーザがメニューから項目を選択してから、
再びユーザに制御が戻るまでの時間」くらいのつもりだった。
>>181
性能がどうでも良いとしても、Dは結構魅力的だと思うけど。
ランタイム要らずで起動の早い単体exeを作れる、かつC/C++より幾分モダンだし。
とゆーか、ごめん。なんか分かり切った事を聞いた気が自分でもしてきた。
0183デフォルトの名無しさん
2007/02/14(水) 14:46:30# 実用に使えるかどうかはプログラマの腕次第
0184デフォルトの名無しさん
2007/02/14(水) 15:00:48複雑な制御構造やありがちな制御構造をモジュール化して、
名前を付けられるって点がありがたいなぁ、と思う。
0185デフォルトの名無しさん
2007/02/14(水) 15:13:57意外と、会計処理でも、5時間かかるか、4時間で済むかは大問題だったりする。
夜間バッチのスケジュールが有って、会計処理なんて今時古いとか言われても、
必要なもんなんだし、お前らみたいにお絵かきやエロやってる訳じゃなく、従業員
が1万人関連取引先含めると20万人、顧客まで含めると100万人規模の、会社
にとっては、本当に死活問題。
0186デフォルトの名無しさん
2007/02/14(水) 15:18:17www.google.co.jpはuser agentを見てUTF-8返したりShift_JIS返したりしてた気が。
たぶんSJISで送られてきてる。
0187デフォルトの名無しさん
2007/02/14(水) 15:43:07つかさ。
普通にprintfで書き出して
hoge.exe > tmp.txt
でtmp.txtの文字コード調べりゃ済んだはずだよな
0188デフォルトの名無しさん
2007/02/14(水) 15:48:27それ以外の速度が死活問題にならない人は短くてわかりやすい構文が使えるってのでいいんじゃないかな。
コンパイルはもともと激速なんだし構文増えてもそんなに遅くはならないと思うし。
0189デフォルトの名無しさん
2007/02/14(水) 16:23:46それはもったいないとおも
0190デフォルトの名無しさん
2007/02/14(水) 16:45:38ガンガレWalterタソ!
0191デフォルトの名無しさん
2007/02/14(水) 16:59:480192デフォルトの名無しさん
2007/02/14(水) 17:01:40ここらで直交性について触れておくべきだろうか。
まぁDはとっくに醜悪な恐竜になりつつあるがな。C++のように。
0193デフォルトの名無しさん
2007/02/14(水) 17:12:22ググって見たら軍事用語かいな。どういう喩えなのかさっぱり解らんw
>>192
STLだと型、データ構造、アルゴリズムだっけ。
Dが醜くなりつつあるというなら、どっかを削るべき?
0194デフォルトの名無しさん
2007/02/14(水) 17:21:11muzzle-loadingは先込め式銃で銃口から玉を込める銃のこと。
そしてsmoothboreはライフリングがない銃の事らしい。
とりあえず火縄銃なのかな?
0195デフォルトの名無しさん
2007/02/14(水) 17:26:15なるほど、obsoluteだな
0196デフォルトの名無しさん
2007/02/14(水) 17:34:460197デフォルトの名無しさん
2007/02/14(水) 17:36:100198デフォルトの名無しさん
2007/02/14(水) 17:43:37・ foreach(i : 1..array.length, n; array) { ... }
ってできたら、インデックスもズレないし、便利だよね?
・ ついでに
foreach(i : 0..TIMES) { ... }
ってできてもいいんじゃね?
・ それとは別に、Ruby のイテレータみたいなの欲しいな。
times(5) do (size_t i) { ... }
void times(size_t n, int delegate(size_t) yield) { ... }
みたいな。
0199デフォルトの名無しさん
2007/02/14(水) 17:44:36強力で設計の良いライブラリも持ちたいという意志はあるのねw
頑張れWalter! 出来れば「標準」ライブラリで頼むぜ!
0200デフォルトの名無しさん
2007/02/14(水) 17:46:57>強力で設計の良いライブラリ
boostはそんなライブラリじゃない訳だが。
0201デフォルトの名無しさん
2007/02/14(水) 17:48:390202デフォルトの名無しさん
2007/02/14(水) 17:49:35Walterはboostを持ちたいと言っている訳じゃないんだからいいんじゃね?
0203デフォルトの名無しさん
2007/02/14(水) 17:52:260204デフォルトの名無しさん
2007/02/14(水) 17:53:56既にtupleとかbindとか標準ライブラリでサポートされてきてるじゃん。
0205デフォルトの名無しさん
2007/02/14(水) 17:54:41そのあたりHaskellだとキレイにかけそう。
0206デフォルトの名無しさん
2007/02/14(水) 17:55:59C++0xで採用される予定のtr1はboostが基になってるのが多いね。
0207デフォルトの名無しさん
2007/02/14(水) 18:04:070208デフォルトの名無しさん
2007/02/14(水) 19:30:05boostの「実装コードが」時代遅れに見えるくらいにしたい、じゃね。
boostと同じ(or以上の)レベルの事を、もっと奇麗なコードで出来る言語仕様を……
というニュアンスとも。
0209デフォルトの名無しさん
2007/02/14(水) 20:33:13俺にもそう読めた
boostライブラリを言語仕様で実現したいんじゃないの
0210デフォルトの名無しさん
2007/02/14(水) 22:02:34Boostみたいなライブラリをダーティハック(とかいったらC++の人に叱られそう)なしで出来るようにしたいって話では。
0211デフォルトの名無しさん
2007/02/14(水) 22:13:580212デフォルトの名無しさん
2007/02/14(水) 22:25:590213209
2007/02/14(水) 22:40:39よく読んでみたら確かに微妙に違ったみたい
ニュアンスを完全には把握できてないや
ところでさあ
TangoってErrorクラスがなくなってたりして
dfl(dwtも?)と一緒に使うことができないっぽいんだがどうしようもないのかこれ
0214デフォルトの名無しさん
2007/02/15(木) 09:26:230215デフォルトの名無しさん
2007/02/15(木) 10:20:57? ふつうにvoid copy(char[] from, char[] to); が載ってるが。
0216199
2007/02/15(木) 10:33:07boostを思い出してみるに、確かに何となく違った気がする。
C++の言語仕様ならこれだけのことが可能なんだから、
これくらいは基礎として入っているべきだ、て感じ? 実際>>206な話だし。
GUIに通信にXMLにと何でも最初から入ってる、Javaみたいな意味での”強力”さってのは、
Dの標準ライブラリでは目指して無さそう? それはそれでいいのだけど。
0217デフォルトの名無しさん
2007/02/15(木) 11:33:55標準ライブラリにバイナリ本体を載せなくても、標準的なインターフェースは定義予約しておいてほしいと思う。
0218デフォルトの名無しさん
2007/02/15(木) 13:05:53あぁ、本当だ
よくよく見たらcharset=Shift_JISになってたわ
0219デフォルトの名無しさん
2007/02/15(木) 20:28:59COMを扱うライブラリを、紹介してもらえないですか?
出来れば、スクリプト並みに楽に扱えるものだと嬉しいです
あー、DもCOMも検索しづらい
0220デフォルトの名無しさん
2007/02/15(木) 23:33:380221デフォルトの名無しさん
2007/02/16(金) 00:54:15この流れ、おもしろすぎwwww
はたから見てて、久々にD言語使いたくなったwwww
0222デフォルトの名無しさん
2007/02/16(金) 02:18:210223デフォルトの名無しさん
2007/02/16(金) 02:24:25うらおの奴が作ってたような・・・。
0224デフォルトの名無しさん
2007/02/16(金) 02:33:01使用メモリを自分で決めるのと例外が投げられないのがちょっと気になる。
0225デフォルトの名無しさん
2007/02/16(金) 02:46:26あー確かにそうだったな・・・。
でもスタックって最初からサイズ決まってるんじゃないっけ。
0226デフォルトの名無しさん
2007/02/16(金) 03:35:21Feb 15, 2007
New/Changed Features
* Added -Jpath switch, which is now required in order to import text files.
* Enhanced -v output to include actual filename.
* name string for TypeInfo_Struct now part of the TypeInfo_Struct comdat.
* Compile time execution of functions
0227デフォルトの名無しさん
2007/02/16(金) 03:42:17コンパイル時ユニットテストが・・・!!
0228デフォルトの名無しさん
2007/02/16(金) 10:34:50定数要求されてるところに関数書いておくと、それが
いくつかの条件をみたす関数ならコンパイル時に実行しとくよ、
という話で、ユニットテストとはちょっと違う気が
0229デフォルトの名無しさん
2007/02/16(金) 12:00:35MyArray!(Person) children = new MyArray!(Person)();
}
とか、ひょっとして通るようになったんでせうか。
0230229
2007/02/16(金) 12:44:320231デフォルトの名無しさん
2007/02/16(金) 13:24:14コンパイル時実行で解決できるわきゃなかったか……。スレ汚し失礼。
0232デフォルトの名無しさん
2007/02/16(金) 16:00:13GCが自動的に動いたときに Error: Thread error: cannot pause とかいってデッドロックしてしまう
これはphobosかなんかのバグ?
0233デフォルトの名無しさん
2007/02/16(金) 17:41:38どういう順番でどう停止させているのか、あたりに問題が潜んでる可能性はあるかも。
ただ、普通にデッドロックが発生する設計になっちゃってるせいじゃないか?
という疑念がひしひしと。同期の設計を慎重に見直してみたら?
0234デフォルトの名無しさん
2007/02/16(金) 18:09:04これかな?
0235デフォルトの名無しさん
2007/02/16(金) 19:05:41というか書き直したほうがいいなこれ
Walterタンがんばって><
0236デフォルトの名無しさん
2007/02/17(土) 01:44:30ひどい奴だな、そこまでわかってるなら手伝ってやれよ。
つか別インプリメントして投稿ってのはナシなの?
0237デフォルトの名無しさん
2007/02/17(土) 01:57:01だれかえろいひと見てもらえると助かる
http://grugru.mine.nu/file.cgi?v=guru_guru_2560.zip
0238237
2007/02/17(土) 02:07:30void wait(uint milliseconds)
のほう変更し忘れた
0239237
2007/02/17(土) 02:41:23イベントのあたりがいろいろ間違ってたのをなおしました
0240デフォルトの名無しさん
2007/02/17(土) 21:30:04テンプレートクラスA(T)とクラスBがあったとして、
A!(B)のオブジェクトのclassinfoをたどって、
Tの(ここではB)のClassInfoなりTypeInfoって取得可能?
0241デフォルトの名無しさん
2007/02/17(土) 21:53:220242デフォルトの名無しさん
2007/02/17(土) 22:26:490243デフォルトの名無しさん
2007/02/17(土) 23:29:10乙
しかし俺には評価できない罠
どういう問題が解決されているのかな
0244デフォルトの名無しさん
2007/02/17(土) 23:46:11http://f17.aaa.livedoor.jp/~labamba/?BugTrack%2F26
たぶんこれが直ってるのと、スレッドハンドルがどんどんリークしていたのを修正しました
0245デフォルトの名無しさん
2007/02/18(日) 01:25:19classinfo.nameはコンパイル時定数じゃないから…
0246デフォルトの名無しさん
2007/02/18(日) 02:13:13>>234で絶賛放置中のBugであり>>232の原因の疑いアリという代物じゃないっすか。
問題ないならcommitして欲しいくらいですねぇ。
私ゃ評価も翻訳もできない身ですけど・・。
0247デフォルトの名無しさん
2007/02/18(日) 02:58:27クソワロタ
身に覚えがあるし・・・
0248デフォルトの名無しさん
2007/02/18(日) 09:11:54import std.stdio;
class A(T){}
class B{}
template TypeOfA( T )
{
static if( is(T U : A!(U)) )
alias U TypeOfA;
else
alias void TypeOfA;
}
int main()
{
alias A!(B) A_B;
writefln( typeid( TypeOfA!(A_B) ) ); // modulename.B
return 0;
}
こんなんじゃだめ?
0249240
2007/02/18(日) 10:35:53A_Bの型からじゃなくて、A_Bのオブジェクトから取得可能か、知りたいんだよね。
Dっぽくなくて恐縮なんだが。
>>241のゆうように無理っぽそうだが。(�dクス)
0250デフォルトの名無しさん
2007/02/19(月) 01:35:01hoge.dとsdltest.dっていう名前のソースが二つあって、
以下のようにコンパイルすると、sdltest.dのほうだけ128が返るんだが・・・どうしてだろう?
この128はdmdが返してるのか、SDLが返してるのか・・・それすらも分からないorz
%dmd hoge.d SDL.lib #SDL.libはあらかじめPATHが通ってる
%dmd sdltest.d SDL.lib
ソースは以下の通り
import std.stdio;
import SDL
int main(char[][] args)
{
if (SDL_Init(SDL_INIT_VIDEO))
throw new Error("Could'nt initialize video");
printf("hello,SDL!");
return 0;
}
0251デフォルトの名無しさん
2007/02/19(月) 01:36:24もう寝る。
0252デフォルトの名無しさん
2007/02/19(月) 01:37:51if (SDL_Init(SDL_INIT_VIDEO)) > if (SDL_Init(SDL_INIT_VIDEO) < 0)
でした・・・
こんどこそ寝る。
■ このスレッドは過去ログ倉庫に格納されています