164

D 言語はJava や C++ の信頼できる代替手段ですか? 信頼できる代替手段になるには何が必要ですか? 私はそれを学ぶ必要がありますか?それは伝道に値するでしょうか?

私が尋ねた主な理由は、新しい C++ 標準 (c++0x) がほぼ完成したことで、この言語を理解している人にとって、後戻りできない点をはるかに超えていることは明らかだからです。C/C++ が死ぬことはないことはわかっていますが、ある時点で先に進む必要があります。COBOL でさえその日があり、Java は多くの点で C++ を元に戻しました。では、次は何ですか?Dは法案を満たしますか?

4

13 に答える 13

128

実際のソフトウェア開発におけるプログラミング言語の成功と人気を決定するものは、言語自体の品質に部分的にしか関係していません。純粋な言語として、D は間違いなく C++ や Java よりも多くの利点があります。少なくとも、他のすべての条件が同じであれば、それは純粋な言語として信頼できる代替手段です。

ただし、ソフトウェア開発にとって重要なのは、言語そのものよりも、移植性 (実行できるプラットフォームの数)、デバッガーのサポート、IDE のサポート、標準ライブラリの品質、動的ライブラリのサポート、一般的な API のバインディング、ドキュメント、開発者などです。ほんの数例を挙げると、コミュニティ、勢い、商業サポートなどがあります。これらすべての点で、D は絶望的に Java、C++、および C# に遅れをとっています。実際、これらの点では、Python、Perl、PHP、Ruby、さらには JavaScript などのいわゆる「スクリプト」言語よりも遅れていると私は主張します。

率直に言うと、D を使用して大規模なクロスプラットフォーム アプリケーションを構築することはできません。標準ライブラリが未熟なため、最新の IDE ではサポートされていません(Visual Studio と Xamarin Studio/MonoDevelop の両方にプラグインがあります)。動的/共有ライブラリのサポート、および他の言語へのバインディングがほとんどないため、D は今日のオプションではありません。

D の見方が気に入ったら、ぜひ学んでください。すでに Java と C++ を知っていれば、それほど時間はかかりません。私は伝道が役に立つとは思わない - 現時点で D が成功するのであれば、D が本当に必要としているのは、より多くの人がそれを静かに使用し、標準ライブラリや IDE サポートのような主要な欠点に対処することだ.

最後に、C++ については、ほとんどの人が言語が複雑すぎることに同意していますが、何千もの企業が言語のより小規模で明確に定義されたサブセットのみを許可することで、言語の健全な組み合わせの一部として C++ をうまく使用しています。生のパフォーマンスと少ないメモリ使用量の両方が必要な場合、C++ に勝るものはまだありません。

于 2008-09-28T22:20:34.920 に答える
109

私自身の経験をミックスに追加するだけです:

約 1 年前、私は 3 か月間続く小規模なゲーム プロジェクト (3 人のコーダー) に取り組み、D を主要言語として使用しました。私たちがこれを選んだ理由の 1 つは、SDL と私たちが使用していたその他のツールのバインディングが既にあったことと、主に C++ よりも優れているように思われることです。

私たちはそれを使うのが大好きでした。覚えるのも早く、書くのも簡単でした。その機能の多くはかけがえのないものであることが証明されており、それらが C++ に戻るのが恋しいです。

しかし、次の点が私たちの生活をより困難にしました。

  1. 当時は優れた IDE がなく、これが大きな問題でした。結局Sciteをカスタマイズして自作しました。これはうまくいきましたが、理想的ではありませんでした。
  2. 当時、デバッガはありませんでした。WINDBG をヒット/ミス ベースで動作させることはできましたが、信頼性に欠けていました。デバッガーなしでコードをデバッグすると、人生が地獄のようなものになることもありました。
  3. 当時、2 つの標準ライブラリから選択できました (Tango と Phobos)。1 つから始めて、もう 1 つに切り替えましたが、実際には両方の機能を組み合わせる必要がありました (Tangobos!)。これにより頭痛の種となり、一部のコードが書き直されました。
  4. 他のツールへのバインドは利用できません。最終的に、DirectX に切り替える必要がありました (理由については説明しません)。利用可能な DirectX のバインドがなかったので、C++ で独自に作成し、.dll としてビルドしてそれにバインドする必要がありました。これはかなり面倒な作業で、時間がかかりました。

全体として、私たちは D を書くのが好きでした。実際にコードを書くのが簡単になり、すぐに習得できました。私が言及した問題は、この質問に対して受け入れられた答えを反映しています-Dでアドレス指定する必要があるのは「余分な」ビットであり、そのコアはしっかりしています。

于 2008-11-07T13:17:16.323 に答える
61

私は C++ が行き止まりの言語になりつつあることに同意します - そして、過去 17 年間 C++ を使用してきた私にとって、それを言うのは苦痛です。

D は C++ の正当な後継者だと思います。言語の観点からは、「すべて正しいことを行います」(たとえ私が毎分の決定に同意しなくても)。C と C++ が衰退しつつある中、現代の言語の世界で持ちこたえながら、実際にそれらの機能を実行できるシステム レベル言語は他にないと思います - D を除いて! D はこの役割を果たすだけでなく、優れています。D1.x を見れば十分に納得できるはずですが、D2.0 を見ると圧倒されます。命令型プログラミングと関数型プログラミングのパラダイムを橋渡しする点で D2.0 ほどうまく機能する言語は、現在のところ他にないと私は考えています。

もちろん、メインストリームで受け入れられていないこと、さらには認知度が低いこと、そして大規模で成熟したライブラリ障害となっています。ただし、これを理由に書き留めることはできないと思います。私は、Dが今後数年以内に最も重要な言語の 1 つに成長すると確信しています。そして、現在真剣に取り組んでいる言語は、その時が来たら主導権を握ることができるでしょう。

主にアンドレイ・アレクサンドレスクの関与により、違いが生まれると思います。それは決して、D を世界にもたらすという重要な仕事をしたウォルター ブライトの信用を傷つけるものではありません。しかし、Alexandrescu は確かに C++ コミュニティにおいて重要かつ説得力のある人物であり、潜在的な D スイッチャーのほとんどはそこから生まれます。また、関数型プログラミングのサポートにおいて、D2.0 に重要かつ重要な貢献をしました。

D はシステム レベル言語のベータマックスになる運命にあることが判明するかもしれませんが、私のお金は今後 2 年以内に好転します。

于 2008-10-30T15:30:48.463 に答える
21

私は、D が天才の作品であり、主に一心同体であるウォルター・ブライトの作品であることを気に入っています。彼の Zortech コンパイラは、当時は素晴らしかったです。

対照的に、Bjarne が影響力を持っていたとしても、C++ は委員会による設計が多すぎます。あまりにも多くのアドオン機能と奇妙な新しい構文。この違いは、学習の容易さと日常の使用の容易さ、バグの減少に反映されています。

より一貫性のある言語は、生産性の向上とプログラマーの喜びにつながりますが、これは主観的で議論の余地があります! (私は自分の答えを投票するべきだと思います)

于 2008-09-29T04:56:44.640 に答える
15

D は優れた言語であり、それなりに人気がありますが、他のすべての言語と同様に、ツールの 1 つにすぎません。どのツールを使用するかは、ユーザーの種類、考え方、作業環境、プログラムに適用される言語の制限、そして最も重要なのはプログラム自体によって異なります。時間があれば、D を学ぶことを強くお勧めします。最悪の場合、D を使用することはありません。どのようなところが好きで、どのような条件で一番光るかを知り、新しいプログラムを作るときにそれを活かしてください。

D 比較チャートを見て、言語の機能を確認し、それがあなたに適しているかどうかを確認することをお勧めします.

于 2008-09-28T22:10:13.463 に答える
10

D言語は現代的です。完璧な言語はなく、これについては疑いの余地がありません。しかし、言語は生活を楽にするために生まれました。C ++と比較したD言語には、複雑さの点で多くの優れた機能があります。他の多くの言語の組み合わせの専門分野が含まれており、他の言語によって導入されたTOP機能を使用して、コーダーがより速くコーディングするのに役立ちます。Dおよびその他の言語の詳細については、以下も参照してください。

  • D vs C ++は互換性であり、巨大なC ++言語が関係しており、Dとの互換性が必要です。DはすでにCとの100%の互換性を可能にしますが、これはまだ良い勝利です。

  • D対C++、C ++は私の意見では非常に優れた言語ですが、コーディングが難しく、時間がかかるため、成功するにはますます多くの経験が必要ですが、Dでは同じことを簡単に行うことができます

  • DとC++、C ++で可能かどうかはわかりませんが、Dでは、「auto」を使用した型制限変数の割り当ては許可されていません。これは、厳密な型を作成できる必要がある場合に、変数を動的にするのに適しています。

  • D vs C ++、他の言語の経験がある場合は、すぐに始めることができ、ロードマップを簡単に学ぶことができ、経験豊富なチームと会社のサポートによって設計されています

  • DとC++は、私がDで見つけた非常に優れた点であり、コードスタイルです。これは、C / C ++とまったく同じルックアンドフィールを提供しますが、コーディングすると、Dと呼ばれる非常に最新のC /C++を実行していることを思い出します。

D言語にはもっと多くの正当な理由があり、言語を過小評価する理由はありません。常にユーザーが選択します。

于 2011-04-05T20:47:19.347 に答える
7

それは本当にあなたのニーズに依存します-Dで書かれた大規模な商用アプリケーションサーバー側に存在し、そのためにD(通常Tango / Mangoを使用)は完璧にフィットし、より多くのリクエストを処理できる可能性があります.他の言語/プラットフォームよりも。

プロトコルと対話性 (多くはそうです) の観点からより専門的なソリューションの場合、必要なライブラリを見つけるのにより多くの問題が発生し、ツールの欠如がより大きな影響を与える可能性があります。

于 2008-09-30T12:19:20.450 に答える
7

D はかなり印象的で、それに関する Andrei の本はよく書かれています。しかし、他の人が言ったように、ツールとプラットフォーム サポートが必要です。GDC は、時間の経過とともに、両方に対する答えとなる可能性があります。

これを見たことがありますか?

「GNU Debugger が D 言語サポートを追加」: http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

また、digitalmars サイトには、C および C++ とのインターフェースについて説明しているページがあります (これなしでは生きていけないライブラリー用)。Cヘッダーファイルがあれば、Dプロトタイプを書くのに苦労するツールがあるのだろうか。

個人的には、現時点では D で大規模なプロジェクトを行うことを強く勧めるつもりはありませんが、D を社内ツールとして使用し、経験を積んで他の人に紹介するつもりです。

最初の質問は、D が Java および C++ の信頼できる代替手段であるかどうかでした。D と Java が実際に競合することはあまりないと思います。D は C++ と競合し、現在は Go と競合しています。他の質問では D と Go の違いに対処していますが、一般的に Go の方が使いやすいと考えられています。したがって、D の将来は、現在の王者である C++ と、Google の支援を受けているはるかに簡単な代替手段である Go との間にどれだけの余地があるかに大きく依存していると思います。

更新: Andrei の本で私のお気に入りの章である同時実行性に関する章が、オンラインで無料で入手できることを発見しました。間違いなく読む価値があります!

そして、これは Go と D の相対的なメリット/目的/アプローチについての長い議論です。

于 2010-10-01T22:57:48.070 に答える
4

質問に答えたようです。D は C++ に比べて優れた言語です。

実用的な目的で、D がより優れたインフラストラクチャを備えているかどうかの問題は二次的なものです。

要するに、それらが両方ともサポートされていないまったく新しい言語である場合、D の方が優れた言語であり、したがって、D の方が優れた言語です。

于 2011-04-05T01:01:08.217 に答える
4

言語としては、D は C++ よりも C# に近いと常に感じていました。機能やライブラリではなく、「感覚」で。(C++ よりも) はるかにクリーンで、より楽しい ... 楽しいものです。信頼できる代替手段になるための最大の障害は、ツール、IDE、およびデバッガーです。D が広範な使用/採用のいくつかの障害を克服した場合、より多くのツールとライブラリが明らかになります。(私自身、使えるIDEとデバッガがあればDに戻ります。)

于 2008-11-18T12:50:15.773 に答える
3

1つのアプローチは、お住まいの地域の仕事を検索することです。あなたがやりたい仕事を見つけて、彼らが求めているスキルを見てください。彼らがC++またはRubyまたはOracleまたはDを求めている場合、それは主にあなたが望む仕事を得るのを助けるためのスキルです。

于 2009-03-08T07:59:15.653 に答える
3

私自身のペットプロジェクトに最適です。私は雇用主のプロジェクトに使用しますが、私が先に進んだ後にソースを引き継ぐ人を見つけるのがどれほど難しいかを知りませんでした. 少なくともサポートされているプラ​​ットフォームでは、回避する技術的な理由はありません。(木をたたく)

于 2008-09-29T04:48:01.400 に答える
3

非常によく設計された言語のように見えます。C - C++ - Objective C よりもはるかに優れています。IDE やデバッガーがなくてもしばらくは生活できますが、ドキュメント化された D 2.0 用の優れたライブラリがなければ生活できません。

6ヶ月ぶりに再訪…

于 2009-01-28T04:15:14.177 に答える