D言語ドラフト一応読んだよ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG何か聞きたいことはあるかね。
0002デフォルトの名無しさん
NGNG00031
NGNG・C風味のシンタックス
・単一継承+インターフェース
・ガベコレ
つまり、Java/C#とよく似てる。
人によっては90%同じと言うかもしれない。
C++/Java/C#を使ってる人ならすぐ使える。
00041
NGNG一番の違いは、VMなしを前提としていること。
VMの有無は、理論的には言語使用と独立であり、
JavaでもC#でも機械語にコンパイルすることは可能だが、
やっぱりコンパイル/リンク/デバッガー/Make等を意識して
設計した痕跡があちこちにある。
00051
NGNGこれはデバッグモード/リリースモードをコンパイル時に
切り替えることを前提としてると思う。
00061
NGNG当初は演算子オーバーロードと一緒に切る予定だったらしいが、
現在の仕様書にはこれを入れると書いてある。
機能はC++と同じだが、書き方は変えるみたい。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG00111
NGNG設計者は、C/C++と同様のgeneral purposeな言語にするつもりのようだ。
しかし、ガベコレがあるのでカーネルやリアルタイムシステムには使えない。
また、サーバサイドではJavaに負ける。
JavaVMは、これからCに近いスピードになっていくからね。
だから、もし使われるとしたら
クライアントサイドの大規模プロジェクトだと思う。
gnome/kde/mozilla/excel/emacsのようなものを作るには
ピッタリだ。
0012デフォルトの名無しさん
NGNG>gnome/kde/mozilla/excel/emacsのようなものを作るには
そういう用途ならgnomeやemacsなんかでも
使われてるlisp系が良いと思うけど。
ところで、GNUな人はGuileを崇拝してないのか?(w
0013デフォルトの名無しさん
NGNG00141
NGNGC#/Javaに対する大きな利点としてはDBCがあると思う。
DBC付きのインターフェース継承ってありそうでなかった。
静的な型チェック+Pre/Post conditionを使いこなせば、
単体テスト完了時点で、かなりの品質を確保できる。
開発者のレベルがまちまちの大規模プロジェクトでは
すごく有効だと思う。
0015デフォルトの名無しさん
NGNG00161
NGNG凡人プログラマには静的な型チェックが必要。
00171
NGNGJavaのSwingのような標準のGUIライブラリは作らないようだ。
しかし設計者はSymantecの人らしいので、
Winのことはよくわかっている。
だから、外付けのwin用のGUIライブラリは
すぐ提供されると思う。
0018デフォルトの名無しさん
NGNG静的な型チェックは(チェックする機会を作れば)lispでもできるよ。
使われないのは多分、読みにくいからだろう(w
0019デフォルトの名無しさん
NGNG正直、マクロを取っ払ってるのは失敗な気が。
0020デフォルトの名無しさん
NGNGパクるんじゃねーよ!
00211
NGNGDesign By Contract
例えば、平方根を計算するメソッドは次にようになる。
long square_root(long x)
in { assert(x >= 0); }
out (result) {assert((result * result) == x);}
body {return math.sqrt(x);}
bodyが実際のメソッド本体。
inはこのメソッドに渡すパラメータに要求する条件。
この場合は、正の数でなければ平方根は計算できない。
outは、このメソッドが満たす条件。
平方根*平方根=元の数になるはずという意味。
このようにして「お前がこれこれの条件を満せば、
俺はこういう仕事をする」ということをソースに表現する。
inとoutを発注元が書いて、bodyを下請けが書く。
発注元が頭よければ下請けが馬鹿でも大丈夫。
0022デフォルトの名無しさん
NGNG00231
NGNG「D」という名前はいろいろな意味で突込みが厳しいようだ。
どうも、それが狙いみたいだけど。
0024デフォルトの名無しさん
NGNG取れた場合、型チェックは?
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG目的はなんなの?
何か作られた理由でもあんの?
00271
NGNG俺はドラフト読んだだけなので自信がないが、
たぶん、こんなもんだと思う。
import stdio;
int main()
{
printf ("Hello, world\n") ;
return 0;
}
0028デフォルトの名無しさん
NGNGもしかして作者はとうふ屋ですか?
いまだに(80)86使いこなしますか?
0029デフォルトの名無しさん
NGNGC#だのDだの余計な言語を作りやがって!!!
Delphi最高!
他はゴミ箱逝き!!!
0030デフォルトの名無しさん
NGNGうひょー・・・一行目以外はすっかりC/C++だね(w
argv/argcとリターンコードをDBCでチェックするようなHelloWorldを書くべきかな
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGただ単にマクロを取っ払いたかっただけの勇み足にしか見えん。
マクロというか、プリプロセッサを無くしたのは良い
かもしれないが、マクロ自体は無くす必要は無い筈。
0033デフォルトの名無しさん
NGNGリア厨なので英語チンプンなのれす。
00341
NGNGCのAPIはコンパチで呼べると書いてあるので、
たぶんできると思う。
サンプルプログラムにprintfもあるし。
型チェックはしないと思う。
同じ名前で引数の型が違うのは、C++と同じでできる。
この場合は型チェックもやるはず。
>>25
俺も知りたい。
たぶん、できないと思う。
>>26
開発者がC++/C#/Javaが微妙に嫌いで使いたくないからじゃないかな。
自分がそうだから、みんなそうだと思ってるような気がする。
俺は3つとも好きだけどね。
0035デフォルトの名無しさん
NGNGこれはどうだろう?
完全なUnitTestを導入するとしたらDの提供する機能では不十分だね。
どの道外部のTestingFrameworkが必要になりそう。
in/outはあると便利かもしれないけど
>out (result) {assert((result * result) == x);}
>body {return math.sqrt(x);}
なんてコードが常に書けるとは限らないからね。
0036>33
NGNGWhen can I get a D compiler?
I'm hard at work on one. I hope in a couple months. I had not anticipated being slashdotted.
0037デフォルトの名無しさん
NGNGこの作者はDel坊に氏ねと言ってますか?
00391
NGNG>>32
マクロは何でもできる
→しかし、ふつーはこう使ってる
→「こう使ってる」所を言語に入れて後はステ
というのが開発者の思考パターンらしい。
言語を作る人は、自由度を上げて、ひとつの
言語要素であれもできるこれもできるというパターンが
好きなのが多いんで(その極がLisp)、この人はちょっと珍しい。
そのために、言語仕様がふくらんでいく。
ここで好き嫌いがわかれるだろうね。
俺も、この点はちょっとハラハラしながら見てるが、
ここまではそれなりのバランスを取ってるような気がする。
>>33
まだ、α版しかなくて未公開です。
でも、言いだしっぺがコンパイラ屋さんなんで処理系はそのうちできると思うよ。
0040デフォルトの名無しさん
NGNGあとdotted は dot;点アルね
アメリカさんは決まりきった語を省くから
salsh dotted work ;猛烈な 仕事が 点在してる アル
だと思うアル。。。
004133
NGNG>でも、言いだしっぺがコンパイラ屋さんなんで処理系はそのうちできると思うよ。
おぉ。なんか安心できる。
しかし、せっかくDを名乗るなら、大改革をしてほしかったなぁ。
漏れ的にはAppleScriptやHyperTalkみたいな自然言語に
近い言語体系がよかったんだけどなぁ。
00421
NGNG言語に含まれたDBCの機能を利用して、
外部のテストルーチンを書けば便利だと思うよ。
例えばclass Aがあるとして
A a ;
という変数に対して、
assert(a) ;
とすると、class Aの不変条件をチェックできる。
要所要所にこれを入れておけば、もしAにバグがあって
aの内部状態がおかしくなった時に、
おかしくなった所で検出できる。
0043デフォルトの名無しさん
NGNGい言語(欠番)
ろ言語(欠番)
まず、
「は」言語をCにぶつける。
「に」言語はDにぶつけろ。
Delphiには「フジヤマ」言語で対抗。
最終的に「スシ」言語で天下を取る。
00441
NGNGVisual DはありえんがD Builderはできるだろう。
:=さえ捨てれば生きていける。
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG意味のない気負いブリにワロタ
004725
NGNG00481
NGNG俺の予想では、リフレクションはまずサポートされない。
RTTIはdynamic_cast<>と同じ。
00491
NGNG実は俺もそう思ってる。
意外にレスがつくんでびっくりしたよ。
0050デフォルトの名無しさん
NGNGこれではまともなGUIライブラリは作れないだろ。
このC/C++との絶妙な距離間のとり方
(コード非互換の上、アドバンテージが少ない)
が災いして流行ることはなさそう。
ちょっと便利ってだけでほいほい移行できたら
Cなんてとっくに廃れてるよ。
0051デフォルトの名無しさん
NGNGそれは無いだろう。
Cより便利なシステム記述言語って何がある?
0052デフォルトの名無しさん
NGNGせいぜい、既存の言語の改良どまりっぽいもんな。
0053デフォルトの名無しさん
NGNGこの言語は夢のように見える。
00541
NGNG・ ローカル変数を使わないとエラー
未使用のローカル変数を放置しておくと、ソースの可読性をさまたげるので、こ
れはなかなかよいと思う。
・ HTMLへのコードの埋めこみ
HTMLファイルをコンパイラに食わせると、<code>...</code>を抜き出してコンパ
イルしてくれる。JavaDocのようにコメントにドキュメントを埋めこむのではな
く、ドキュメントにコードを埋めこむ。文芸的プログラミングの復活か?
・ debug行
debug(3) { ... } と書いておくと、コンパイル時にdebugレベルを3以上にした
時だけ、...の部分が有効になる。
・ typedef
typedef Money int ;としておくと、
void print(int i) ;
void print(Money m) ;
は、別のメソッドになって、引数のタイプで区別される。
00551
NGNGGenericContainerというインターフェースに対して、
bool empty() ;
int size()
void add(T t)
post { assert(size() == before.size() + 1); }
invariant() { assert(empty() || size() > 0); }
なんてふうに、メソッドの意味を規定できる。このインターフェースを実装する
奴は、「要素を加えるとサイズがひとつ増える」とか「空だったらサイズが0だ
し、0でなければ空とは言えない」みたいな、インターフェースの意味を満たす
ことを強制される。
これをバリバリ使ってフレームワークを構築すれば、フレームワークの提供者と
ユーザの責任範囲が明確になってかなり品質が向上するぞ。
KDEとかmozillaのように多種多様なコンポーネントが複雑にからまるようなソフ
トにDが向くと俺が言ったのは、こういう意味だ。また、大規模ビジネスソフト
でありがちな、小数のできる設計者と多数のヘボプログラマというチームを活用
するためにも有効だ。
なお、現時点でのスペックにはインターフェースの詳細は書いてない。DBCがつ
くというのは、俺の勝手読みだ。
0056デフォルトの名無しさん
NGNGこれ,マジ面白いと思いました
ただし個人的には <code>〜</code> の部分というよりは
<pre><code>〜</code></pre> の部分だけを抜いて欲しいなとか思ってみたりして
# 重箱の隅つっついて正直スマンかったです(笑い
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059名無しさん@Emacs
NGNGhttp://slashdot.org/article.pl?sid=01/08/15/234223
0060デフォルトの名無しさん
NGNG/. に出て、web page に、短時間の間に大挙して人が押し寄せてくることらしい。
転じて、/. に出てなくても、短時間の間に...を slashdotted って呼ぶらしい。
0061デフォルトの名無しさん
NGNGまるでどこぞの巨大掲示板のようだね
0062デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG2chる。
0065デフォルトの名無しさん
NGNGあからさまに少数の限定した人達がオタ用語を使ったところでどうだと言うのだ?
0066デフォルトの名無しさん
NGNGC++のプリプロセッサとしてインプリメントされていれば、
汎用的にどこでも使えて実用性が生まれて面白かったかも。
(既に過去形かい>われ)
0067デフォルトの名無しさん
NGNGGCの採用と演算子のオーバーロード廃止の二点で却下。
演算子を活用すると可変長引数みたいな醜い部分を
排除できるから素敵(はぁと)。
0068デフォルトの名無しさん
NGNGそういうの隠蔽されるとちょっといや。
GCは・・・まぁJavaで慣れたからいいや。
0069デフォルトの名無しさん
NGNG(シフト、ストリーム出力、列のアペンド、ローテート、イベント送信)
をメンテして欝になった。
00701
NGNGGCCのフロントエンドを作るって書いてるから、
汎用性は比較的早く確保されると思われ。
0071>70へ教育的指導
NGNG007266
NGNGほほう。
各UNIX+Win OS用のネイティブバイナリ必須のわしとしては
JavaやC#より魅力的。
GCCのフロントエンドということは、既存のC用のライブラリ等も
利用可能かな?C++ライブラリは無理かな。
しかし、C#とかDとかなんでC++の上位互換で作ってくれないのか。
気持ち的にはバッサリ逝きたいのはわかるし、そのままでは穴を
残しまくることになるけどさ。
00731
NGNG> 各UNIX+Win OS用のネイティブバイナリ必須のわしとしては
> JavaやC#より魅力的。
ついでに言っておくと処理系をオープンソースで配布するとのこと。C#との最も
大きな違いはそこになるかも。
> GCCのフロントエンドということは、既存のC用のライブラリ等も
> 利用可能かな?C++ライブラリは無理かな。
CのAPIとの互換性は確保する(Cのヘッダファイルは理解する?)とのことなので、
CのライブラリはほとんどOK。C/C++とソースレベルの互換性は無いので、C++ラ
イブラリはたぶん使えない。
0074デフォルトの名無しさん
NGNGJavaのネイティブコンパイラが欲しい人はMaxOS X
ってことじゃだめか、やっぱ
0075名無しさん
NGNG0076デフォルトの名無しさん
NGNG彼らが作るものは、ウィン厨の俺には使いこなせないことが多いんだが・・・・
0077デフォルトの名無しさん
NGNG君なら出来るよ。
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNGなんだか良く分からないけど、ありがとう。
希望が湧いてきた、頑張ってみるよ( ´∀`)
0080デフォルトの名無しさん
NGNG昔 MSDOS用の DataLight-C(広域最適化が優秀だった),
Zortech-C++(MicrosoftやBorlandより先に出たDOS用C++),
Symantecに移って Win32用の Symantec C++ を書いた人。
この人、たぶんGUIに興味なし。
0081デフォルトの名無しさん
NGNGC言語ではプリプロセッサがソースコードの置き換えを
行っているけど、D言語では?
00821
NGNGDではありがちなプリプロセッサの用途ごとに代替の手段を用意している。
・ 定数の宣言
const int BUFSIZE = 4096 ;
とかenumを使う。
・ 短く汎用的なロジックの定義(min/maxとか)
inline関数を使う。
・ ジェネリックプログラミング(複数の型で同一のアルゴリズム)
templateを使う。
ここまではC++と同じで、C++では推奨だったことがDでは必須になっている。
・ #ifdefによる条件コンパイル(デバッグ用のコード)
debug文という機能を使う。
・ #ifdefによる条件コンパイル(機種依存の処理)
機種依存コードをひとつのモジュールに入れて、そのモジュールを機種ごとに置き換える。
・ #includeで他のモジュールを引用する
import文。
プリプロセッサで処理すると、コンパイルエラーがわかりにくかったりデバッガ
が使えなかったりするが、上記のように言語仕様の中に組込めばそういう問題は
ない。
これ以外の変てこなプリプロセッサの使い方は、わけわからんソースになるから
D言語では禁止。
C#ではこのあたりをどう考えているのか、誰か詳しい人解説してくれ。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG>これ以外の変てこなプリプロセッサの使い方は、わけわからんソースになるから
これ以外、ってプリプロセッサ自体無い様だけど?
0085
NGNGやはりC/C++のスーパーセットでなければならない。
そうでないと、Cの次のDってことにはならない。
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG俺が覚えた言語の順番だったり・・・・
0088デフォルトの名無しさん
NGNGwarata
0089デフォルトの名無しさん
NGNG0090他力本願
NGNG次はMetroworksの番だ!
C++のスーパーセット言語作ってくれ〜〜〜〜〜〜
どこもやってないし、CodeWarriorならIDEも申し分ないし、
色んなターゲット環境へのポーティングも得意だし、
言うことなし!なんだが。
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGD言語でゲーム作ってみて〜。
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGスンマソン信者なものでつい。
あれ以降Motrola向け技術開発も増えたけど、今もいい仕事してる。
でも組み込み系にフォーカスしているのは否めないか。
0096デフォルトの名無しさん
NGNGたとえネイティブでもGCがあるからにはランタイムの仕掛けが
いろいろとあって箱庭的環境と思われ。
0097デフォルトの名無しさん
NGNGそういやこの組み合わせってはじめて見るな
0098デフォルトの名無しさん
NGNG今のVBってネイティブ+GCだろ。
0099デフォルトの名無しさん
NGNG被害者発見!
0100デフォルトの名無しさん
NGNGWalter BrightとBjarne Stroustrupが、コンストラクターに
おけるオプティマイズ方法案(一時変数生成の抑止)を
相談するエピソードが"The Design and Evolution of C++"に
出てくるね。アイスかなんか食べながら、ってのがカッコいいなぁ。
010180
NGNGアイスとは…二人とも甘党なのか。(単に暑かっただけか)
彼らが顔あわせる機会というと、↓この時かな?
http://anubis.dkuug.dk/JTC1/SC22/WG21/docs/meetings
■ このスレッドは過去ログ倉庫に格納されています