DはJavaとC ++の信頼できる代替品ですか?[閉まっている]


163

あるD言語は JavaやC ++に信頼できる代替?信頼できる代替品になるには何が必要ですか?わざわざ学習する必要がありますか?それは伝道に値しますか?

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


23
COBOLが戻ってきますが、それがあなたの空想をくすぐるなら、先に進んでDを学んでください。お茶の葉を読むことは、The Next Big Languageを予測する上で他の何よりも重要です。
Shog9 2008

5
次の大きな言語が何であるかは関係ありません。もっと雇用主に次のプロジェクトでDを使用したいと言ったら、その言語は真面目ではないので、真剣に受け止められないでしょう。まだ。
Mark Kegel

22
デジタルマーズによる「D vs. C ++」ページは、C ++に対して非常に差別的であることに注意してください。多くの場合、彼らは「C ++はそれを行うことができない」と言いますが、C ++ はそれ行うことができます
Johannes Schaub-litb

23
@ヨハネス:それは言語が可能にすることではなく、言語が容易にすることです。-ブライアンハート
missingfaktor

9
@Rahul、同意しましたが、彼らはそう言うべきです。「これはC ++では簡単ではありません」のようであり、それがまったく不可能ではありません。
Johannes Schaub-litb

回答:


130

実際のソフトウェア開発におけるプログラミング言語の成功と人気を決定するものは、言語自体の品質に部分的にのみ関連しています。純粋な言語として、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が成功する場合、本当に必要なのは、静かにそれを使用し、標準ライブラリーやIDEサポートなどの主要な欠点に対処する人々です。

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


8
「最新のIDEではサポートされていない」と言うのは少し過大評価です。日食にもサポートがあります。それはまだファーストクラスではありませんが、それはそこにあり、良くなっています。
BCS

46
証拠の不在は不在の証拠ではありません。
FeepingCreature 2009

29
「ピンクのユニコーンがある」などの肯定的な主張をする場合、受け入れるのが合理的である前に証拠を提供する必要があります。確かに、@ FeepingCreatureが述べたようにピンクのユニコーンがないことを意味するのではなく、単にそれが説得力のある、または有効な引数ではないことを述べているだけです。
JoshD 2010年

8
@Feeping:ジェームズランディがぶらぶらするのが好きなのはかわいいことですが、それは事実ではありません。あなたのテストは、テスト何か見つけなければならないことを支持する妥当な証拠を持っていますが、それは不在の証拠です。
GManNickG 2011

9
D1とTangoを使用して大規模なアプリケーションを構築することを付け加えておきます。さて、私たちはクロスプラットフォームではなく、Linuxだけですが、まだです。私たちの全体のインフラストラクチャは、Dで書かれており、我々はまた、Dに書かれた大きなDHTのバックエンドで毎時以上の30Kの要求を処理される
Marenz

108

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

約1年前、私は3か月続く小規模なゲームプロジェクト(3人のコーダー)に取り組み、Dを主要言語として使用しました。すでにSDLと使用していた他のいくつかのツールのバインディングがあり、主にC ++よりもメリットがあるように見えるため、一部は実験として選択しました。

私たちはそれを使うのが大好きでした。習得が簡単で、書きやすかったです。その機能の多くは非常に貴重であることが判明しましたが、C ++に戻ってしまったことを寂しく思います。

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

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

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


4
クールな入力...デバッガが登場しました!! :)
bbqchickenrobot

13
DirectXが問題である理由がわかりません。私はDプログラマではありませんが、DはCを理解できると思いましたか?そしてDirectXにはC APIがありますか?

DirectXのものをネイティブDインターフェイスで使用するのは比較的簡単なので、C ++でラッパーを作成する必要はありません
Quonux

@Quonux:それは当時の私たちの経験で、08年にさかのぼります。それ以来、物事が大きく進んでいることは間違いありません。悲惨な詳細はもう思い出せない。
xan

1
2019年の更新:Dプログラミング言語が大幅に拡張されました。DlangでそのままGDBを使用できるようになりました。DPPでは、C言語のヘッダーをDlangに直接含めることができます。Calypsoは、Qtを含むDlangのC ++ライブラリを使用しましょう-いくつかのバグがありますが、大部分は機能します。
noɥʇʎԀʎzɐɹƆ

60

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

DはC ++の後継者として正当だと思います。言語の観点からは、それは「すべての正しいことをします」(私が毎分の決定に同意しなくても)。CとC ++が衰退する中で、現代の言語の世界でそれ自体を維持しながら、彼らが実際に行うことができるシステムレベルの言語は他にはない-Dを除いて!Dはこの役割を果たすだけでなく、Dも優れています。D1.xを見るだけで納得できますが、D2.0を見るとびっくりします。命令型および関数型プログラミングパラダイムの橋渡しにおいてD2.0と同じように機能する言語は今日のところ他にない-私の意見では、これは今後数年間でますます重要になるでしょう。

もちろん、主流の受容の欠如、あるいは可視性さえも、大規模で成熟したライブラリー、もちろん障害です。しかし、これが原因であなたがそれを帳消しにすることはできないと思います。D 今後数年以内に最も重要な言語の1つに成長するだろうと私は確信しています。そして、それを真剣に受け止めている人々は、その時が来れば、リードする立場にあるでしょう。

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

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


20
Cはシステムレベルのプログラミングの減少傾向にありません。Linuxでは、Windows、およびOS Xは、すべて同様に、マイクロコントローラのための多くのマイクロコントローラとのOSがC.使用してプログラムされているCで開発されている
ケビン

12
Dは「正しいことはすべてやっている」とは思わない。正しいことは、より良いC ++を作成しようとするのではなく、ゼロからやり直すことです。C ++からの大規模な切り替えを正当化するには、もっと根本的な変更が必要だと思います。
jalf 2009年

9
Kevin:WindowsとOS XはCで開発されていません。もちろんカーネルのチャンクは開発されていますが、WindowsはC ++のヒープとOS X Obj-Cを使用しています。Linuxは、Cが1つの真の言語ステータスに昇格され、他には何も使用されていないことを私が知っている唯一のOSです。
jalf 2009年

16
素晴らしい予測。この投稿から2年が経過しましたが、Dは主流の採用には近づいていません。
mikerobi

18
@mikeobi LOL!2年はあなたがその文を読んだときから始まります;-)
philsquared 2010年

20

私は、Dが天才の作品で、主に1人の心であるWalter Brightの作品だと気に入っています。

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

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


9
現在、それに取り組んでいる別の天才もいます-Andrei Alexandrescu。彼がD2.0で行ったことは、私見ですが、少なくともウォルターがD1.xで行ったのと同じくらい驚異的です。それらの2つの間(他の多数の貢献者を割り引いていない)、Dは考慮すべき言語になりつつあります。このスペースを見る
philsquared 2008年

5
3人(またはそれ以上)のプログラマーを輩出しましょう:Bartosz Milewski
BCS

7
したがって、C ++はもともと1人の本当に賢い人によって作成され、現在は本当に頭が良い人たちの委員会によって管理されています。ええ、私はそれがDをどのように優れているかを理解しています。;)(ヒント:C ++の醜さは委員会とは関係ありません。これは、言語の設計目標の結果です。これは、(ほぼ)Cのサブセットであることが意図されていました。Dはそうではなく、そうであるように意図されていませんでした。 、これは、いぼの多くを回避できることを意味します(それがもたらした人気も回避することを犠牲にして)
jalf

4
@jalfあなたは、C ++の「醜さ」が委員会によって設計されたためではないことは正しいと思います。進化は遅いのですが。
philsquared 2013年

15

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

私は見てお勧めしますD比較チャート機能は、言語のためのものであり、それはあなたのために右に聞こえるかどうかを確認します。


10

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

  • D対C ++は互換性であり、巨大なC ++言語が関与し、Dとの互換性が必要です。DはCとの100%の互換性を可能にします。

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

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

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

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

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


7

それは本当にあなたのニーズに依存します-Dで書かれた大規模な商用アプリケーションサーバ側に存在し、そして(通常はタンゴ/マンゴーを使用して)そのDのために最適です、あなたはおそらくより多くの要求にサービスを提供することができるようになっています他の言語/プラットフォームよりも。

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


1
そのような商用アプリの例を提供できますか?
Alexander Malakhov

1
@ Alexander Malakhov:A ...うーん...良い質問....商用アプリが存在するかどうか尋ねられてうれしい....よく考えられた質問...確かに.....私は賞賛する... ...これは私たちが尋ねるべき種類の質問です.....あなたの知性を示しています.....うーん...私に検索させてください... Dの商用アプリ...うーん....まあ..ちょっと待って...わかってるけど...思い出せない...確かにある...ちょっと待って...私はまだ探している...待ってくれ!
シンプルフェロー

7

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

これ見たことある?

"GNUデバッガーが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との間で、Dが呼吸する余地に大きく依存していると思います。

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

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


Rustについてはあまり知りません。1.0になるのを待っています。しかし、あなたは正しい、それは間違いなく見る価値があるように見え、この同じスペースで遊ぶように見えます。
AmigoNico 2012年

1
Dについて私が気に入らない唯一のものは型システムです。古く見えます。OO階層は侵入的です。私はそれを出発点として好きではありません。これで錆びが良くなります。
ヘルマン・Diago

4

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

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

要するに、両方ともまったく新しい言語であり、周囲に何のサポートもない場合、Dがより良い言語です。


4

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


mono-dプラグインはどうですか?:mono-d.alexanderbothe.com
user1284631

3

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


3

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


3

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.