2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

D言語ドラフト一応読んだよ

1 :デフォルトの名無しさん:01/10/21 23:33
http://www.digitalmars.com/d/index.html
何か聞きたいことはあるかね。

2 :デフォルトの名無しさん:01/10/21 23:37
C#との違いを語ってくれ

3 :1:01/10/21 23:41
まず基本は

・C風味のシンタックス
・単一継承+インターフェース
・ガベコレ

つまり、Java/C#とよく似てる。
人によっては90%同じと言うかもしれない。
C++/Java/C#を使ってる人ならすぐ使える。

4 :1:01/10/21 23:45
>>2
一番の違いは、VMなしを前提としていること。
VMの有無は、理論的には言語使用と独立であり、
JavaでもC#でも機械語にコンパイルすることは可能だが、
やっぱりコンパイル/リンク/デバッガー/Make等を意識して
設計した痕跡があちこちにある。

5 :1:01/10/21 23:47
例えば、DBCやUNITTESTを言語仕様の中に取りこんでいること。
これはデバッグモード/リリースモードをコンパイル時に
切り替えることを前提としてると思う。

6 :1:01/10/21 23:51
C#ともうひとつ大きく違うのがテンプレートのサポート。
当初は演算子オーバーロードと一緒に切る予定だったらしいが、
現在の仕様書にはこれを入れると書いてある。
機能はC++と同じだが、書き方は変えるみたい。

7 :デフォルトの名無しさん:01/10/21 23:58
これで何作るの?

8 :デフォルトの名無しさん:01/10/21 23:59
リフレクション・RTTI関連の機能の説明がないような...

9 :デフォルトの名無しさん:01/10/22 00:03
Dの利点はなんでそ?

10 :デフォルトの名無しさん:01/10/22 00:06
よーするにネイティブコード吐くC#/Javaでしょ

11 :1:01/10/22 00:07
>>7
設計者は、C/C++と同様のgeneral purposeな言語にするつもりのようだ。

しかし、ガベコレがあるのでカーネルやリアルタイムシステムには使えない。
また、サーバサイドではJavaに負ける。
JavaVMは、これからCに近いスピードになっていくからね。

だから、もし使われるとしたら
クライアントサイドの大規模プロジェクトだと思う。
gnome/kde/mozilla/excel/emacsのようなものを作るには
ピッタリだ。

12 :デフォルトの名無しさん:01/10/22 00:14
>>11
>gnome/kde/mozilla/excel/emacsのようなものを作るには

そういう用途ならgnomeやemacsなんかでも
使われてるlisp系が良いと思うけど。
ところで、GNUな人はGuileを崇拝してないのか?(w

13 :デフォルトの名無しさん:01/10/22 00:13
win用のGUIソフトって作れるの?

14 :1:01/10/22 00:14
>>9 >>10
C#/Javaに対する大きな利点としてはDBCがあると思う。
DBC付きのインターフェース継承ってありそうでなかった。

静的な型チェック+Pre/Post conditionを使いこなせば、
単体テスト完了時点で、かなりの品質を確保できる。
開発者のレベルがまちまちの大規模プロジェクトでは
すごく有効だと思う。

15 :デフォルトの名無しさん:01/10/22 00:17
DBCって何ですか?

16 :1:01/10/22 00:17
>>12
凡人プログラマには静的な型チェックが必要。

17 :1:01/10/22 00:20
>>13
JavaのSwingのような標準のGUIライブラリは作らないようだ。
しかし設計者はSymantecの人らしいので、
Winのことはよくわかっている。
だから、外付けのwin用のGUIライブラリは
すぐ提供されると思う。

18 :デフォルトの名無しさん:01/10/22 00:24
>>16
静的な型チェックは(チェックする機会を作れば)lispでもできるよ。
使われないのは多分、読みにくいからだろう(w

19 :デフォルトの名無しさん:01/10/22 00:25
Java/C#と同じ方向性か。
正直、マクロを取っ払ってるのは失敗な気が。

20 :デフォルトの名無しさん:01/10/22 00:26
DはDelphiのDだろバーカ!
パクるんじゃねーよ!

21 :1:01/10/22 00:29
>>15
Design 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を下請けが書く。
発注元が頭よければ下請けが馬鹿でも大丈夫。

22 :デフォルトの名無しさん:01/10/22 00:29
俗に言う「Hello, world!」プログラムをDで書いてみてYO!

23 :1:01/10/22 00:31
>>20
「D」という名前はいろいろな意味で突込みが厳しいようだ。
どうも、それが狙いみたいだけど。

24 :デフォルトの名無しさん:01/10/22 00:31
可変引数は取れるの?
取れた場合、型チェックは?

25 :デフォルトの名無しさん:01/10/22 00:32
メモリ開放は手動で出来るの?

26 :デフォルトの名無しさん:01/10/22 00:33
つーかいきなり出てきた感じがするんだけど。>D
目的はなんなの?
何か作られた理由でもあんの?

27 :1:01/10/22 00:34
>>22

俺はドラフト読んだだけなので自信がないが、
たぶん、こんなもんだと思う。

import stdio;
int main()
{
printf ("Hello, world\n") ;
return 0;
}

28 :デフォルトの名無しさん:01/10/22 00:35
頭文字D?
もしかして作者はとうふ屋ですか?
いまだに(80)86使いこなしますか?

29 :デフォルトの名無しさん:01/10/22 00:37
せっかくDelphiの時代が到来したと思ったら、
C#だのDだの余計な言語を作りやがって!!!

Delphi最高!
他はゴミ箱逝き!!!

30 :デフォルトの名無しさん:01/10/22 00:39
>>27
うひょー・・・一行目以外はすっかりC/C++だね(w
argv/argcとリターンコードをDBCでチェックするようなHelloWorldを書くべきかな

31 :デフォルトの名無しさん:01/10/22 00:39
>>28 ウマイ

32 :デフォルトの名無しさん:01/10/22 00:39
正直、なんでimport`statement'にしたのかわからん。
ただ単にマクロを取っ払いたかっただけの勇み足にしか見えん。
マクロというか、プリプロセッサを無くしたのは良い
かもしれないが、マクロ自体は無くす必要は無い筈。

33 :デフォルトの名無しさん:01/10/22 00:40
して、そのコンパイラ等は何処に?
リア厨なので英語チンプンなのれす。

34 :1:01/10/22 00:42
>>24
CのAPIはコンパチで呼べると書いてあるので、
たぶんできると思う。
サンプルプログラムにprintfもあるし。
型チェックはしないと思う。

同じ名前で引数の型が違うのは、C++と同じでできる。
この場合は型チェックもやるはず。

>>25
俺も知りたい。
たぶん、できないと思う。

>>26
開発者がC++/C#/Javaが微妙に嫌いで使いたくないからじゃないかな。
自分がそうだから、みんなそうだと思ってるような気がする。
俺は3つとも好きだけどね。

35 :デフォルトの名無しさん:01/10/22 00:43
>C#/Javaに対する大きな利点としてはDBCがあると思う。
これはどうだろう?
完全なUnitTestを導入するとしたらDの提供する機能では不十分だね。
どの道外部のTestingFrameworkが必要になりそう。

in/outはあると便利かもしれないけど
>out (result) {assert((result * result) == x);}
>body {return math.sqrt(x);}
なんてコードが常に書けるとは限らないからね。

36 :>33:01/10/22 00:47
あと2ヶ月だって。slashdottedってなに?
When 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.

37 :デフォルトの名無しさん:01/10/22 00:50
Delphi使いはこの先どうやって生きていけばいいですか?
この作者はDel坊に氏ねと言ってますか?

38 :ほらよ>37:01/10/22 00:52
http://www.2ch.net/accuse2.html

39 :1:01/10/22 00:52
>>30 正解!
>>32
マクロは何でもできる
→しかし、ふつーはこう使ってる
→「こう使ってる」所を言語に入れて後はステ

というのが開発者の思考パターンらしい。
言語を作る人は、自由度を上げて、ひとつの
言語要素であれもできるこれもできるというパターンが
好きなのが多いんで(その極がLisp)、この人はちょっと珍しい。
そのために、言語仕様がふくらんでいく。
ここで好き嫌いがわかれるだろうね。
俺も、この点はちょっとハラハラしながら見てるが、
ここまではそれなりのバランスを取ってるような気がする。

>>33
まだ、α版しかなくて未公開です。
でも、言いだしっぺがコンパイラ屋さんなんで処理系はそのうちできると思うよ。

40 :デフォルトの名無しさん:01/10/22 00:56
slashって猛烈なって意味が無かったアルか?
あとdotted は dot;点アルね
アメリカさんは決まりきった語を省くから
salsh dotted work ;猛烈な 仕事が 点在してる アル
だと思うアル。。。

41 :33:01/10/22 00:57
>>39
>でも、言いだしっぺがコンパイラ屋さんなんで処理系はそのうちできると思うよ。
おぉ。なんか安心できる。

しかし、せっかくDを名乗るなら、大改革をしてほしかったなぁ。
漏れ的にはAppleScriptやHyperTalkみたいな自然言語に
近い言語体系がよかったんだけどなぁ。

42 :1:01/10/22 00:58
>>35
言語に含まれたDBCの機能を利用して、
外部のテストルーチンを書けば便利だと思うよ。
例えばclass Aがあるとして
A a ;
という変数に対して、

assert(a) ;

とすると、class Aの不変条件をチェックできる。
要所要所にこれを入れておけば、もしAにバグがあって
aの内部状態がおかしくなった時に、
おかしくなった所で検出できる。

43 :デフォルトの名無しさん:01/10/22 01:01
日本も1文字の言語作れや。
い言語(欠番)
ろ言語(欠番)
まず、
「は」言語をCにぶつける。
「に」言語はDにぶつけろ。
Delphiには「フジヤマ」言語で対抗。
最終的に「スシ」言語で天下を取る。

44 :1:01/10/22 01:04
>>37
Visual DはありえんがD Builderはできるだろう。
:=さえ捨てれば生きていける。

45 :デフォルトの名無しさん:01/10/22 01:07
「ゲイシャ」言語はエロゲースクリプト

46 :デフォルトの名無しさん:01/10/22 01:08
>>43
意味のない気負いブリにワロタ

47 :25:01/10/22 01:09
なんかつまんない言語だな。流行るかどうかは別にして。

48 :1:01/10/22 01:12
>>8
俺の予想では、リフレクションはまずサポートされない。
RTTIはdynamic_cast<>と同じ。

49 :1:01/10/22 01:19
>>47
実は俺もそう思ってる。
意外にレスがつくんでびっくりしたよ。

50 :デフォルトの名無しさん:01/10/22 01:21
delegateもなさそうだな。
これではまともなGUIライブラリは作れないだろ。

このC/C++との絶妙な距離間のとり方
(コード非互換の上、アドバンテージが少ない)
が災いして流行ることはなさそう。
ちょっと便利ってだけでほいほい移行できたら
Cなんてとっくに廃れてるよ。

51 :デフォルトの名無しさん:01/10/22 04:28
>>50
それは無いだろう。
Cより便利なシステム記述言語って何がある?

52 :デフォルトの名無しさん:01/10/22 04:35
>>47
せいぜい、既存の言語の改良どまりっぽいもんな。

53 :デフォルトの名無しさん:01/10/22 07:22
C#/JAVAのネエィテイブコンパイラがほしい俺には、
この言語は夢のように見える。

54 :1:01/10/22 09:14
あと、小技的に面白いと思ったのが、

・ ローカル変数を使わないとエラー

未使用のローカル変数を放置しておくと、ソースの可読性をさまたげるので、こ
れはなかなかよいと思う。

・ HTMLへのコードの埋めこみ

HTMLファイルをコンパイラに食わせると、<code>...</code>を抜き出してコンパ
イルしてくれる。JavaDocのようにコメントにドキュメントを埋めこむのではな
く、ドキュメントにコードを埋めこむ。文芸的プログラミングの復活か?

・ debug行

debug(3) { ... } と書いておくと、コンパイル時にdebugレベルを3以上にした
時だけ、...の部分が有効になる。

・ typedef

typedef Money int ;としておくと、

void print(int i) ;
void print(Money m) ;

は、別のメソッドになって、引数のタイプで区別される。

55 :1:01/10/22 09:57
DBC付きインターフェースのありがたみについて補足しておくと、例えば、
GenericContainerというインターフェースに対して、

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がつ
くというのは、俺の勝手読みだ。

56 :デフォルトの名無しさん:01/10/22 10:22
> ・ HTMLへのコードの埋めこみ

これ,マジ面白いと思いました
ただし個人的には <code>〜</code> の部分というよりは
<pre><code>〜</code></pre> の部分だけを抜いて欲しいなとか思ってみたりして

# 重箱の隅つっついて正直スマンかったです(笑い

57 :デフォルトの名無しさん:01/10/22 14:21
c# ネイティブコンパイラが出れば不要だろ。

58 :デフォルトの名無しさん:01/10/22 16:36
DBCは「規定」と訳すより「契約」を使ったほうがよさげ。

59 :名無しさん@Emacs:01/10/22 17:34
slashdotted は /. に出たってことじゃないの?
http://slashdot.org/article.pl?sid=01/08/15/234223

60 :デフォルトの名無しさん:01/10/22 18:35
>>59
/. に出て、web page に、短時間の間に大挙して人が押し寄せてくることらしい。
転じて、/. に出てなくても、短時間の間に...を slashdotted って呼ぶらしい。

61 :デフォルトの名無しさん:01/10/22 20:57
>60
まるでどこぞの巨大掲示板のようだね

62 :デフォルトの名無しさん:01/10/22 21:30
ヲタ用語使う言語開発者って以下略

63 : ◆6eFTVtLI :01/10/22 21:36
言語開発者なんてオタ以外の何者でもない

64 :デフォルトの名無しさん:01/10/22 21:56
>>61
2chる。

65 :デフォルトの名無しさん:01/10/22 23:15
>>62
あからさまに少数の限定した人達がオタ用語を使ったところでどうだと言うのだ?

66 :デフォルトの名無しさん:01/10/23 00:39
初期のC++がCのプリプロセッサだったように、
C++のプリプロセッサとしてインプリメントされていれば、
汎用的にどこでも使えて実用性が生まれて面白かったかも。
(既に過去形かい>われ)

67 :デフォルトの名無しさん:01/10/23 01:28
わたし的にはテンプレートは好きだが
GCの採用と演算子のオーバーロード廃止の二点で却下。
演算子を活用すると可変長引数みたいな醜い部分を
排除できるから素敵(はぁと)。

68 :デフォルトの名無しさん:01/10/23 01:33
>>67
そういうの隠蔽されるとちょっといや。
GCは・・・まぁJavaで慣れたからいいや。

69 :デフォルトの名無しさん:01/10/23 02:04
<<演算子が5通りの意味で使われてるソース
(シフト、ストリーム出力、列のアペンド、ローテート、イベント送信)
をメンテして欝になった。

70 :1:01/10/23 09:20
>>66
GCCのフロントエンドを作るって書いてるから、
汎用性は比較的早く確保されると思われ。

71 :>70へ教育的指導:01/10/23 13:01
る。

72 :66:01/10/23 16:59
>>70
ほほう。
各UNIX+Win OS用のネイティブバイナリ必須のわしとしては
JavaやC#より魅力的。
GCCのフロントエンドということは、既存のC用のライブラリ等も
利用可能かな?C++ライブラリは無理かな。

しかし、C#とかDとかなんでC++の上位互換で作ってくれないのか。
気持ち的にはバッサリ逝きたいのはわかるし、そのままでは穴を
残しまくることになるけどさ。

73 :1:01/10/23 21:22
>>72

> 各UNIX+Win OS用のネイティブバイナリ必須のわしとしては
> JavaやC#より魅力的。

ついでに言っておくと処理系をオープンソースで配布するとのこと。C#との最も
大きな違いはそこになるかも。

> GCCのフロントエンドということは、既存のC用のライブラリ等も
> 利用可能かな?C++ライブラリは無理かな。

CのAPIとの互換性は確保する(Cのヘッダファイルは理解する?)とのことなので、
CのライブラリはほとんどOK。C/C++とソースレベルの互換性は無いので、C++ラ
イブラリはたぶん使えない。

74 :デフォルトの名無しさん:01/10/23 21:41
C#のネイティブコンパイラが欲しい人はWindows
Javaのネイティブコンパイラが欲しい人はMaxOS X

ってことじゃだめか、やっぱ

75 :名無しさん:01/10/23 21:55
21世紀のCってかんじ

76 :デフォルトの名無しさん:01/10/24 07:35
これって、UNIX畑の人達が作ってるの?
彼らが作るものは、ウィン厨の俺には使いこなせないことが多いんだが・・・・

77 :デフォルトの名無しさん:01/10/24 08:32
>>76
君なら出来るよ。

78 :デフォルトの名無しさん:01/10/24 09:02
lisp風にプログラムを動的に書きかえられるといいな。

79 :デフォルトの名無しさん:01/10/24 09:29
>>77
なんだか良く分からないけど、ありがとう。
希望が湧いてきた、頑張ってみるよ( ´∀`)

80 :デフォルトの名無しさん:01/10/24 09:45
>>76 作者の Walter Bright は
昔 MSDOS用の DataLight-C(広域最適化が優秀だった),
Zortech-C++(MicrosoftやBorlandより先に出たDOS用C++),
Symantecに移って Win32用の Symantec C++ を書いた人。
この人、たぶんGUIに興味なし。

81 :デフォルトの名無しさん:01/10/24 10:33
>>78

C言語ではプリプロセッサがソースコードの置き換えを
行っているけど、D言語では?

82 :1:01/10/24 11:49
>>81
Dではありがちなプリプロセッサの用途ごとに代替の手段を用意している。

・ 定数の宣言
const int BUFSIZE = 4096 ;
とかenumを使う。

・ 短く汎用的なロジックの定義(min/maxとか)
inline関数を使う。

・ ジェネリックプログラミング(複数の型で同一のアルゴリズム)
templateを使う。

ここまではC++と同じで、C++では推奨だったことがDでは必須になっている。

・ #ifdefによる条件コンパイル(デバッグ用のコード)
debug文という機能を使う。

・ #ifdefによる条件コンパイル(機種依存の処理)
機種依存コードをひとつのモジュールに入れて、そのモジュールを機種ごとに置き換える。

・ #includeで他のモジュールを引用する
import文。

プリプロセッサで処理すると、コンパイルエラーがわかりにくかったりデバッガ
が使えなかったりするが、上記のように言語仕様の中に組込めばそういう問題は
ない。

これ以外の変てこなプリプロセッサの使い方は、わけわからんソースになるから
D言語では禁止。

C#ではこのあたりをどう考えているのか、誰か詳しい人解説してくれ。

83 :デフォルトの名無しさん:01/10/24 12:03
debug文はJavaにもほしいな。

84 :デフォルトの名無しさん:01/10/24 12:07
>>82
>これ以外の変てこなプリプロセッサの使い方は、わけわからんソースになるから
これ以外、ってプリプロセッサ自体無い様だけど?

85 : :01/10/24 12:15
Dと言うからには、
やはりC/C++のスーパーセットでなければならない。
そうでないと、Cの次のDってことにはならない。

86 :デフォルトの名無しさん:01/10/24 12:19
BCPL->B->C->P->Lと進むというのが定説

87 :デフォルトの名無しさん:01/10/24 12:24
Basic→C→Perl→Lispか?
俺が覚えた言語の順番だったり・・・・

88 :デフォルトの名無しさん:01/10/24 13:08
>>87
warata

89 :デフォルトの名無しさん:01/10/24 13:20
>>87 PはPascalじゃないのかに、

90 :他力本願:01/10/24 15:32
SunもBorlandもMSもSymantecも新言語を作った。
次はMetroworksの番だ!
C++のスーパーセット言語作ってくれ〜〜〜〜〜〜
どこもやってないし、CodeWarriorならIDEも申し分ないし、
色んなターゲット環境へのポーティングも得意だし、
言うことなし!なんだが。

91 :デフォルトの名無しさん:01/10/24 16:00
だから Metroworks はモトローラに買われて終わったんだってば。

92 :デフォルトの名無しさん:01/10/24 22:59
ていうか使ってみて〜。
D言語でゲーム作ってみて〜。

93 :デフォルトの名無しさん:01/10/25 05:18
Dあげ

94 :デフォルトの名無しさん:01/10/25 05:18


95 :デフォルトの名無しさん:01/10/25 09:48
Metroworksは終わってないっ!
スンマソン信者なものでつい。
あれ以降Motrola向け技術開発も増えたけど、今もいい仕事してる。
でも組み込み系にフォーカスしているのは否めないか。

96 :デフォルトの名無しさん:01/10/25 21:19
>各UNIX+Win OS用のネイティブバイナリ必須のわしとしては
たとえネイティブでもGCがあるからにはランタイムの仕掛けが
いろいろとあって箱庭的環境と思われ。

97 :デフォルトの名無しさん:01/10/25 21:38
>ネイティブでもGCがあるからには
そういやこの組み合わせってはじめて見るな

98 :デフォルトの名無しさん:01/10/25 21:54
>>97
今のVBってネイティブ+GCだろ。

99 :デフォルトの名無しさん:01/10/25 23:40
>>98
被害者発見!

100 :デフォルトの名無しさん:01/10/26 15:11
>>80
Walter BrightとBjarne Stroustrupが、コンストラクターに
おけるオプティマイズ方法案(一時変数生成の抑止)を
相談するエピソードが"The Design and Evolution of C++"に
出てくるね。アイスかなんか食べながら、ってのがカッコいいなぁ。

24 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)