web-dev-qa-db-ja.com

DはJavaおよびC ++に代わる信頼できる選択肢ですか?

D言語 は、JavaおよびC++の信頼できる代替手段ですか?信頼できる代替手段になるには何が必要ですか?わざわざ学ぶ必要がありますか?それは伝道に値しますか?

私が尋ねる主な理由は、ほとんどここにある新しいC++標準(c ++ 0x)により、言語がこれまで理解している誰に対しても返されないという点をはるかに超えていることは明らかだからです。 C/C++は決して死ぬことはありませんが、ある時点で先に進む必要があることを知っています。 COBOLでさえその日があり、Javaは多くの点でC++を元に戻しました。だから次は何ですか?Dは請求書を埋めますか?

160
Mark Kegel

実際のソフトウェア開発のためのプログラミング言語の成功と人気を決定するものは、言語自体の品質に部分的にのみ関連しています。純粋な言語として、DにはC++やJavaよりも多くの利点があると考えられます。少なくとも、純粋な言語としての信頼できる代替手段であり、他のすべてのものは同等です。

ただし、ソフトウェア開発では他のことも重要です-言語自体よりも重要です:移植性(実行するプラットフォームの数)、デバッガーサポート、IDEサポート、標準ライブラリ品質、動的ライブラリサポート、共通のAPI、ドキュメント、開発者コミュニティ、モメンタム、および商用サポートのバインディング(ほんの数例を挙げると)これらの点に関して、DはJava、C++、およびC#の背後に絶望的にあります。これらの点で、Python、Perl、PHP、Ruby、さらにはJavaScriptのようないわゆる「スクリプト」言語の背後にあります。

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

Dの見た目が気に入ったら、ぜひ、それを学んでください-Java and C++。伝道が役に立つとは思わないなら、それは長くはかからないはずです。 Dが成功する場合、この点は、それが本当に必要なのは、静かにそれを使用し、標準ライブラリやIDEサポートのような主要な欠点に対処するより多くの人々です。

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

127
dmazzoni

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

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

私たちはそれを使うのが大好きでした。学ぶのは簡単で、書くのは簡単でした。その機能の多くはかけがえのないものであり、C++に戻ったことが懐かしいです。

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

  1. 良いIDEは大きな問題でした。私たちはSciteをカスタマイズして独自のものを作ることになりました。これはうまくいきましたが、理想的ではありませんでした。
  2. 当時デバッガはありませんでした。 WINDBGをヒットまたはミスベースで動作させることができましたが、信頼性はありませんでした。デバッガを使用せずにコードをデバッグすることは、時として命にかかわることになりました。
  3. 当時選択できる標準ライブラリは2つありました(TangoとPhobos)。私たちは一方から始め、他方に切り替えましたが、実際には両方の機能の混合物が必要でした(Tangobos!)。これにより、頭痛の種といくつかのコードの書き直しが発生しました。
  4. 他のツールへのバインドは利用できません。最後に、DirectXに切り替える必要がありました(理由はありません)。 DirectXのバインディングは利用できなかったため、独自のC++を記述し、.dllとしてビルドしてバインドする必要がありました。これはかなり厄介な作業であり、時間がかかりました。

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

105
xan

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

DはC++の正当な後継者だと思います。言語の観点から、それは「すべての正しいことをします」(毎分決定に同意しなくても)。 CとC++が衰退しつつある中で、現代言語の世界でそれ自体を支えながら、D! Dはこの役割を果たしているだけでなく、優れています! D1.xを見るだけでそのことを納得させることができますが、D2.0を見ると驚くでしょう。私の意見では、命令プログラミングと機能プログラミングのパラダイムを橋渡しするのにD2.0と同様に機能する他の言語は今日ありません。これは今後数年でさらに重要になります。

大規模で成熟したライブラリだけでなく、主流の受け入れの欠如-または可視性さえ-areもちろん障害。しかし、このためにあなたがそれを帳消しにすることはできないと思います。 D willは今後数年以内に最も重要な言語の1つに成長すると確信しています。来る。

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

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

60
philsquared

私は、Dが天才の作品であり、主に1つの心であることを気に入っています。WalterBrightのZortechコンパイラーは当時素晴らしいものでした。

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

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

21
DarenW

Dは良い言語です そしてまともな人気 ですが、すべての言語と同様に、これは単なる別のツールです。どのツールを使用するかは、あなたがどのような人であるか、どのように考えているか、あなたが働いている環境、プログラムに適用される言語の制限、そして最も重要なことにはプログラム自体に依存します。時間がある場合は、D。最悪のシナリオを学習することをお勧めします。決して使用しないでください。より多くの場合、あなたはそれのどの側面が最も好きで、どの条件でそれが最も輝いているかを学び、新しいプログラムを作るときにそれを利用します。

D比較チャート を見て、その言語の機能が何であるかを確認し、適切かどうかを確認することをお勧めします。

15
Spodi

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

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

  • D vs C++、C++は私の意見では非常に素晴らしい言語ですが、コーディングが難しく、時間がかかり、成功するにはより多くの経験が必要ですが、Dはシンプルに同じことを可能にします

  • D vs C++、C++でできるかどうかはわかりませんが、Dは「auto」を使用して型制限変数の割り当てを許可しません。

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

  • D対C++、私がDで見つけた非常に素晴らしいことは、コードスタイルです、それはC/C++とまったく同じルックアンドフィールを提供しますが、コーディングしながら、私はDと呼ばれる本当にモダンなC/C++をやっていることを思い出させます

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

10
YumYumYum

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

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

7
larsivi

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

これ見たことある?

「GNUデバッガーはD言語サポートを追加します」: http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

また、digitalmarsサイトには、CとC++へのインターフェースについて議論するページがあります(これなしでは生きていけないライブラリーの場合)。 Cヘッダーファイルが与えられた場合、Dプロトタイプの作成時に突き刺すようなツールがあるのではないかと思います。

個人的には、Dで大規模なプロジェクトを行うためにこの時点でプッシュするつもりはありませんが、私はwould社内ツールにDを使用し、経験を積み、他の人に紹介します。

元の質問は、DがJavaおよびC++に代わる信頼できる選択肢であるかどうかでした。DとJavaは実際には多くの競争をするでしょう。 DはC++と競合し、Goになりました。他の質問はDとGoの違いに対処しますが、Goは一般に使いやすいと考えられていますので、Dの未来はC++間の息の大きさに大きく依存している、現在の丘の王、そしてGo、Googleの支援を受けているはるかに簡単な代替手段。

更新:私はちょうど Andreiの本の私のお気に入りの章 、並行性に関するものがオンラインで無料で利用できることを発見しました。間違いなく読む価値があります!

そして、ここに GoとDの相対的なメリット/目的/アプローチに関する議論があります です。

7
AmigoNico

質問が回答されたようです。 Dは、C++と比較して優れた言語です。

実用的な目的のためにDがより良いインフラストラクチャを持っているかどうかの問題は二次的です。

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

4
vfclists

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

4
gerleim

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

3
DarenW

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

3
Peter Lawrey

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

6か月後にもう一度確認します...

2
glen