D言語は複数の標準ライブラリとGCに関する問題を持っていますか?

StackOverflow https://stackoverflow.com/questions/3205509

  •  13-09-2020
  •  | 
  •  

質問

成熟した安定したDがどのようになっているのか、そしてそれがC / C ++のための良い置き換えかもしれない場合は疑問に思います。

現在2つの標準ライブラリ(PhobosとTango)があることを知っています。まだ統一標準ライブラリがない場合がありますか?

さらに、言語にはGCED /非GCEDコードの境界に問題があることを少し前に聞いた。D Webサイトでのそれについての参照が見つかりませんでしたので、この問題はまだ本当ですか?

役に立ちましたか?

解決

Dのバージョン1は成熟して安定しており、実際の仕事に使用する人が間違いなくされています。 Phobosは、Dが今までに持っていたか、可能性があると思われる唯一の標準図書館ですが、D1のPhobosは、ギャップを埋めるためにさまざまなサードパーティのライブラリが作成されたことが十分に不足しています。 Tangoはこれらの最大のもので、最も頻繁に使用されているサードパーティのライブラリです(したがって、それが不要であっても、それが頻繁に第2の標準ライブラリと呼ばれ、Walter Brigtherはそれがそうではないと指摘するのが速くなるでしょう)。しかし、D1のTangoとPhobosは非常にうまく混ざらない(Tangoがガベージコレクターのような標準的なものを置き換えたため、IIRC)、D1でプログラミングがPhoboSなしでタンゴを使用する可能性が良いです。また、D1は、LDCとGDCを含むデジタルマークからのプライマリコンパイラに加えて、複数のコンパイラによってサポートされています。

Dのバージョン2は今満期と安定性に達するだけです。彼らは言語に大きな変更を加えるのをやめましたので、あなたは一般的に、彼らがまだ言語を捨てながら、過去の場合と同じようにあなたに壊れるすべてのことを心配しなければなりません。実際、Andrei AlexandRescuは、テキスト内の有効なバーリングエラーを保持するべきである言語上の最終的なリソースとしてDプログラミング言語をリリースしました。(そしてそれは私が最も良いプログラミング言語の本の一つです。 'veも読んでください)。しかし、まだたくさんのバグ修正が行われるので、あなたの特定のアプリケーションのための公正なビットの刺激を引き起こすバグに遭遇することは非常に可能です。それは間違いなく十分に成熟していて、それを実際の作業をするのに十分安定していますが、それがバグに遭遇することが非常に可能であることに注意してください。

タンゴはまだD2に移植されていないので、D2でプログラミングするときは、実際にはオプションではありません。しかし、Phobosは非常にうまくいっぱいになっています。それはそれに大きな追加をたくさん入手しています(実際には容器があります! - Phobosのコンテナの欠如は、PhobosではなくD1でむしろD1に使用する大きな理由である)であり、その中にいくつかの本当に強力なものがあります - std.algorithmは特にいいです。 DED Dは、Lambda関数、ネスト関数、および関数ポインタを処理する方法は、C ++の現在の基準よりも簡単なアルゴリズムに合格機能を渡します。また、Tangoが複製したガベージコレクターと他のコアのものがPhobosとは別のものとなるようにD2に固定されています。そのため、TangoがD2に移植されたら、PhobosとTangoコードを混ぜることができるでしょう - 前の答えで指摘されているのですが、PhobosとTangoはかなり異なるデザイン哲学を使用しています(タンゴは非常にJava様とPhobosインターフェースではなくアヒルタイプティングでテンプレートとメタプログラミングを使用して非常に高く使用しているので、私はその立場からどれほどうまく混合するかわかりません。

現在、DMDはD2の仕様に関して最新のコンパイラであると私は信じていますが、GDCとLDC Dコンパイラで行われている作業があると考えています(ただし、その作業を積極的に活発にしていますがはありません。また、Walter Brightは現在DMDの64ビットポートに取り組んでいるので、次の日のうちの64ビットコンパイルを比較的早くネイティブにしています。

全体的に、D2は使用の準備ができていると言っていますが、バグ修正などに関してまだたくさんの作業が行われていることに注意する必要があります。そのため、D2は間違いなく趣味の使用の準備ができていますが、仕事で深刻な使用のために潜在的にはが安定している場合(ボーイングとミスが死を意味するのかのように)、D1はまだある可能性があります。より良い選択。もちろん、D2について覚えておくべき大きなことは、D1が持っていない機能がたくさんあることです。そうすれば、あなたが本当にロック - ソリッドの安定性が必要な限り、D2は可能性があります。幸いなことに、それは成熟して安定しているので、D2を使ってもっと良いことが良くなるでしょう。

D1とD2の両方が、一般的な場合のCおよびC ++の代替品です。彼らはCとC ++を行うことができ、(特にD2の場合)はおそらくそれをよりよくすることができます。 Dが後に落ちるかもしれない主な場所はそれがどれだけうまく最適化されているかです。 CまたはC ++のようにDのほど速くなるコードがたくさんありますが、まだDで行われているのはまだたくさんありますので、さらに最適化する余地がたくさんあり、効率のためにCとC ++の背後に遅れます。 。それで、一般的には、Dは効率的ですが、あなたが得ることができるほど効率が大幅に効率的であるならば、それはまだ必要なものに十分に良くないかもしれません(それはそこに着いています)。また、そこに熟成しているのと同じレベルのコードの近くには、熟成していない間は、成熟したCとC ++ライブラリがたくさんあります。 C関数はDから呼び出すことができ、C ++コードのいくつかは(DでC ++コードを混合するときにはかなりの制限があるが)の一部がある可能性があるため、Dとともに任意のCコードを使用できます。障害があるがそれは気づくべきものです。 t

それが欠けているところの主な場所はGUIライブラリになるでしょう。D1のためのいくつかはいくつかあり、D2のためのGUIライブラリーで行われているが、私はそれらのいずれかがこの時点で特に成熟しているとは思わない。

だから、すべてと同じように、どの言語はあなたがしていることによって異なります。Dはほとんどのものをしてうまくやります。しかし、それはすべてをしません、そしてそれはまだ成熟しています。個人的には、この時点で、私が特定のプロジェクトのために他の何かを使用する必要がない限り、私はDを使います。だから、私はdを使っていることを非常にお勧めしますが、あなたはそれを調べて、それが本当にあなたがこの時点であなたが望むものをするかどうかを見るためにそれを使う必要があります。

他のヒント

PhobosでD2を使用することをお勧めします。それは言語が十分に楽しく、実装の問題によって引き起こされる時折の欲求不満を補うのに十分なほど安定している時点です。

現在2つの標準図書館(Phobos and Tango)があることを知っているので、私は彼らを統一しようとしている人々がいるかもしれないと思います。

「統一」は、ライセンスの違いによりまったくありそうもない。タンゴがD 2.0に移植されると、Phobosと一緒に使用できるようになります。これはD 1.0で(簡単に)可能ではありません。

さらに、言語にはGCED /非GCEDコードの境界に問題があることを少し前に聞いた。 D Webサイトでのそれについての参照が見つかりませんでしたので、この問題はまだ本当ですか?

メモリの管理方法には注意していない場合にのみ問題があると思います。 GC割り当てオブジェクトへのすべての参照がGCルートとしてマークされているメモリ領域の外側に格納されている場合、GCは参照されていないオブジェクトを検討し、削除されます。

今日のC交換としてDを選択しなければならなかったら、D(V 1.0またはV 2.0)とどの標準図書館を提案しますか?

PhobosとTangoはやや異なる方向に進んでいます。 Phobos(D2.0)はD2の新機能と密接に関係しています。タンゴはより多くの特徴詰まり、そしてPhobosには存在しないモジュールを含みます。 HTTP / FTPクライアントのサポート、さまざまな暗号化クラスなど、さまざまなデザイン哲学に従います(Phobosはより命令/メタプログラミング - ISH、タンゴは非常に厳密には厳しくおしっこしており、したがってその点でJavaに似ています)。< / P>

成熟した安定したDがどのようになっているのか、そしてそれがC / C ++のための良い置き換えかもしれない場合は疑問に思います。

ANSI、ISO、ECMAなどの標準装備体にまだ後退していない言語を使用するのは、Waryです。それはおそらく成熟度の指標です。たとえば、JavaとDelphiはたとえばそのカテゴリに分類され、それらの言語を使用している間に、それらはおそらく「成熟」として説明することができます。

もう1つの尺度は、言語のために書かれた書籍の数と品質です。Dのための1つの本があり、私はAndrei Alexandrescuによって知っています。彼はまた長い記事 Drの言語で。DOBBS、特に標準図書館の問題を扱います。

PhobosとSDLでD1で小さなゲームを書いているのは良い経験をしましたが、それはかなり小さなプロジェクトでした。

私の意見では、Dはありません:

  • 人々が助けを得て回答を検索することができる公式ウェブフォーラム(ニュースグループではありません)
  • Dに変換された多くのSDKの公式リポジトリ(たとえば、SDL、GTKなど。これらは、それらがまったく存在する場合は、見つけて使用するのが難しいことがよくあります。)

C交換の問題は、潜在的な交換が理論的なレベルで「良い」または「成熟」であるかどうかについての問題は、むしろ実際的な考慮事項と、Cが何のために「十分に良い」という事実についてもあるかどうかについてのものではありません。それは使いました。言語があらゆる主要なオペレーティングシステムに対して完全なネイティブビルドおよびランタイム環境を完全に持っていない限り、それはCのために何を使用するのかは実際的ではありません。CがPOSIXの言語であるという事実は、問題全体の大きな部分です。

Dのような他の他の半低レベル言語は、特殊なフィールドに大きなアプリケーションを持つことができます。重要なOS(全部がはるかに少ない)にDビルドまたはランタイム環境が付属していないため、Massight Multiplatformソフトウェア(Webサーバー、データベースサーバー、Wordプロセッサ、Webブラウザなど)を見ることはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top