16

私はかなり経験豊富な Java プログラマーで、ここ数年でかなりの Win32 関連の作業を行っています。主に VB6 を使用してきましたが、もっと良いものに移行する必要があります。

Delphi 2009 で 1 か月ほど遊んでいます。VCL GUI が好きです。Delphi は VB6 よりも Windows API 呼び出しに適しているようです。VB6 よりも OO の方がはるかに優れているという事実が本当に気に入っています。ユニットも気に入っています。 -IDE に付属するテスト フレームワーク。

しかし、広く使用されている Delphi 用のガベージ コレクタがないという事実に本当に苦労しています。すべてのオブジェクトを手動で解放するか、すべてにインターフェイスを使用する必要があることは、オブジェクト指向の方法で効果的に物事を行う方法にかなり大きな影響を与えるようです。 . また、私は構文や、メソッドの先頭ですべて変数を宣言する必要があるという事実に特に熱心ではありません。

Delphi は扱えますが、C++ Builder 2009 の方が適しているのではないかと考えています。私は C++ Builder と C++ についてほとんど知りませんが、Delphi についてもほとんど知りません。C++ 言語には多くの機能があることは知っていますが、物事を生産的に行うには、そのサブセットを知るだけで十分だと思います... 今日の C++ は、 10年前。

私は新しい開発のみを行っているので、C++ 言語のすべての側面を習得する必要はありません。Java の言語機能のそれぞれに相当するものを見つけることができれば、私は十分に満足しています。より高度なものではもう少し。(それが痛々しいほどナイーブに聞こえる場合は申し訳ありません-もしそうなら、私をまっすぐにしてください!)

では、Delphi と C++ Builder の両方に不慣れな Java プログラマーにとって、Win32 exe と dll の生産的な開発にはどちらがより良い選択だと思いますか? またその理由は? それぞれの長所と短所は何だと思いますか?

4

12 に答える 12

23

Delphi または C++ Builder - 難しい選択です。

ご存知のように、IDE と RAD の観点から見ると、これらは基本的に非常に似ています。

背景に関係なく、それぞれの長所と短所は次のようになります。どちらも、ネイティブ Windows 開発に最適な優れた双方向 RAD フォーム デザイナーおよびフレームワーク (VCL) を共有しています。

デルファイ:

  • FOR: 大規模で活発な熱心なコミュニティ
  • FOR: Delphi 2009 は長年にわたって最高のバージョンです
  • FOR: Delphi の「ユニット」により、C のソース ファイルとヘッダー ファイルのペアが古風に見える
  • 反対: オブジェクトがスコープを離れても自動的に破棄されないため、多くの「最終的に」がコードに含まれます
  • 反対: 言語は「冗長」になる可能性がありますが、これは好みの問題です。
  • 反対: 他の言語 (特に C) でサードパーティの DLL またはライブラリを使用するには、Delphi ヘッダー ファイルを作成する必要があります。

C++ビルダー

  • FOR: C++Builder 2009 はおそらくこれまでで最高のバージョンです
  • FOR: RAII イディオムはメモリ管理を大幅に簡素化します
  • FOR: テンプレートは、C++Builder の実装にいくつかのバグがあっても、非常に便利で強力です。
  • FOR: BOOST およびその他の最新のテンプレート ベースのライブラリのサポート (ただし、Boost のサポートは 100% ではありません)
  • FOR: Delphi との優れた相互運用性は、ほとんどの Delphi コンポーネントを簡単に使用できることを意味します。
  • FOR: C/C++ ヘッダーを持つサードパーティの DLL/ライブラリで使いやすい。
  • FOR: C++ は Delphi よりも CV に適している可能性があります。
  • 反対: CB2009 は「Unicode のみ」です。これがコードの移植性に与える影響は、Delphi の場合とは異なり、よく考えられていません。
  • 反対: C++Builder のユーザーベースは、Delphi よりもはるかに小さいです。20%以下かもしれません。
  • 反対: Borland/Inprise は、数年前に BCB をほとんど殺してしまいましたが、コミュニティからの多大な努力の後、ようやく復活しました。(ただし、Codegear/Embarcadero の取り組みは印象的です)
  • 反対: C++Builder は、Codegear の最上位にあるわけではありません。
  • 反対: サードパーティのコンポーネント ベンダーが常に C++Builder を理解/サポートしているとは限らない

それはそれについてです。私の立場を述べると、私は BCB2007/2009 ユーザー (BCB5 以降) に満足しており、Delphi もあまり使用していません。数年前、私は C++ から Delphi への切り替えを検討しましたが、RAII イディオムの欠如は、私が折り合いをつけるのが難しいと感じた 1 つのことでした。

于 2008-10-11T08:48:25.780 に答える
10

Delphi を使用すると、Barry Kellyによって作成されたBoehm ガベージ コレクター APIを使用できるため、Delphi でガベージ コレクションを行うことができます。Barry は、CodeGear でコンパイラ アーキテクトとして働く前に、これを書きました。非常に大規模なアプリケーションでは問題があり、64 ビットの Delphi では動作しない可能性があります。彼はこのポッドキャストのインタビューでそれについてかなり話しています。

そのガベージ コレクション メモリ マネージャーを使用しない場合でも、C++ よりも Delphi をお勧めします。一般的な開発で C++ が提供する唯一の利点は、中かっこの構文です。Delphi の構文が気にならない場合は、ほとんどの場合、Delphi の構文の方が優れていることがわかります。確かに、C++ Builder には Delphi の VCL と RTL がすべて含まれているため、Visual C++ ほど悪くはありませんが、それでも Delphi の方が適していると思います。

Excelアドインの場合(コメントで述べたように)、C++ビルダーよりもDelphiをお勧めします.COMサポートが優れているためです(Excelアドインには必要だと思います)。

于 2008-10-07T21:22:58.610 に答える
8

Delphi は、覚えるのがはるかに簡単です。確かに、メモリを管理する必要がありますが、非常にシンプルです。

MyObj = TMyObj.Create;

try
  MyObj.DoSomething;
finally
  MyObj.Free;
end

Delphi では、すべてのオブジェクトがヒープに割り当てられるため、作成したオブジェクトを解放するルールは非常に単純です。

スタックおよびヒープ ベースの obj を使用する C++ は、学ぶべきことがもう少しあり、トラブルに巻き込まれる可能性が高いことを意味します。

于 2008-10-07T21:12:15.887 に答える
7

BCC 4.1/DOS 以降の Borland C および C++ コンパイラーと 3.0 から 2007 年までの Delphi を使用した後、正直に言って、あなたはどちらにしても素晴らしい冒険に出ていると言えます。Borland の Builder および RAD IDE 上の C/C++ から移行することは、Microsoft の VC++、C++、および .NET からの実質的なパラダイム シフト (および学習曲線) です (最初の MS-DOS リリース (ベージュの 3 リング ミニ バインダー) から VC を使用しています)。

C++ と Delphi のどちらを選択するかは、両方の言語でいくつかの中小規模のプロジェクトに足を踏み入れた後に行うことをお勧めします。私は C プログラマーを始め、約 5 年後に Delphi (V3.0) に切り替えました。このとき、VCL によって Windows プログラミングがはるかに簡単になり、生産性が向上しました。

注意してください。Delphi は、COBOL、FORTRAN、VisualBasic などの他の言語から来たプログラマーにとって魅力的な言語です。その構文とコード規則は、トラブルを未然に防ぐ一種の規律を強制するからです。C の簡潔さと生の金属の力により、C は優れたシステム プログラミング言語 (デバイス ドライバー、O/S コード、リアルタイムの組み込みプログラミング) になりますが、経験の浅い人にとっては噛み付く可能性があります。

Borland の C++ Builder (Delphi の VCL が C++ コンパイラに追加されたもの) は、C++ の鋭いエッジの多くを取り除き、私の 2 番目に好きな言語です。Borland が両方の言語に .NET サポートを追加したため、MS フレームワーク プログラミングに VC++ の代わりに Builder を使用するという強い議論があります。C# には C++ に比べてかなりの「親しみやすさ」が組み込まれていますが、やり始めたばかりであれば、押し付けられても Delphi または Builder に固執します。

ロープの学習、プロトタイピング、および迅速なコンセプト プログラムの場合、特に VCL とサード パーティ コンポーネントを使用する場合、Delphi に勝る言語はありません。誇大広告ではなく、単なる事実です。

于 2008-10-14T19:56:32.217 に答える
6

個人的には、言語の違い以外にも重要な考慮事項があると思います。たとえば、Delphi IDEは、WYSIWYG方式でGUIを構築するのに非常に優れています。私はC++Builder IDEを使用したことがありませんが、Delphiと同じくらい優れたGUIビルダーがあれば本当に驚きます。

表面的にはC++の構文はJavaの構文に似ていますが、Delphiのオブジェクトモデルは実際にはJavaの構文に近いものです。ポインタはDelphiに存在しますが、実際には(Javaのような)オブジェクト参照が99%の時間使用されます。最近のC++でも、ポインタを避けることはできないと思います。ポインタ自体に問題があるわけではありませんが、実際には...

個人的な話ですが、最近はほとんどJavaの人ですが、Delphiで2年間働いていたので、ハートビートで戻ってきました。対照的に、私はC ++の経験が非常に限られており、その言語に戻るよりもトイレを掃除したいと思っています:)

于 2008-10-07T22:42:19.713 に答える
3

Delphi を使用すると、数回使用するとより簡単に使用できるようになると思います。また、サード パーティのサポートが充実しており、C++ Builder の前に Delphi で導入された機能の一部も利用できます。

元 Java のこのブログも読んでください。現在は Delphi でデータベースとデータスナップのほとんどの作業を行っている人物です。Steve Shaughnessy は、10 年間 Java を使用した後の Delphi プログラミングに関する彼の経験について述べています :-) http://blogs.codegear.com/steveshaughnessy/ 2006/12/03/30193

于 2008-10-09T12:26:41.173 に答える
3

もちろん、Java sintax は Delphi よりも C++ に似ていますが、オブジェクト モデルは Delphi に似ていると思います。

  • 単一の継承。インターフェイスは存在しますが、Java インターフェイスよりも COM に似ています。
  • オブジェクトはヒープに割り当てられ、参照によってアクセスされます

ここで3つの言語を比較した論文を見つけることができます

于 2008-10-07T21:04:38.430 に答える
2

「たとえば、Delphi IDE は、WYSIWYG 方式で GUI を構築するのに非常に優れています。C++ ビルダー IDE を使用したことはありませんが、Delphi と同じくらい優れた GUI ビルダーがあれば、本当に驚きます。」

実際、C++Builder GUI エディターはまったく同じエディターであり、同じように機能します。素晴らしいです。

.Net には、Java と同様に膨大な数のクラスがあります。C# の構文は Java と似ており、巨大なクラス ライブラリがあるため、Java とほぼ同じように機能します。そして、それはプログラミングするのに完全に適切な環境です。しかし、率直に言って、Delphi は、はるかに快適な言語、IDE、および一般的な作業環境です。C# は、Delphi を設計したのと同じ人物によって設計されており、多くの点で非常によく似ています。そのため、Delphi はネイティブ コードにコンパイルされるため (ただし、Delphi .Net も使用できます)、基本的に使いにくいとは考えないでください。そうではありません。

個人的には Delphi をお勧めします。Delphi はクールな言語だからです。ただし、C++ の学習に興味がある場合は、C++ Builder を使用するのがおそらく最も良い方法です。

于 2008-10-09T05:31:34.520 に答える
2

C++ VCL でできて Delphi VCL でできなかったことは何もなく、ほとんどすべての Delphi コンポーネントが C++ Builder で正常に動作します。私は Windows と UNIX の両方でプログラムを作成しているので、C++ の方が移植性が高くなります。

コンテナに C++ STL やその他の適切に設計されたライブラリを使用する場合、ガベージ コレクションのようなものは論点になり、そうでなければ手動 GC は難しくありません (GC に関係なくとにかく練習する必要がある良い習慣をすぐに学びます)。可能な限り RAII を使用し、メモリ管理をコンテナーにカプセル化したままにし、オブジェクトの所有権を明確にし、ポインターを nilable 参照としてのみ使用する限り (言語に関係なく、これらすべてを行う必要があります)、GC は実際にはそうすべきではありません。問題。

于 2008-12-19T22:38:04.463 に答える
1

私が前に言及するのを忘れた1つのこと:

コストの観点から、実際に選択する必要はありません。RAD Studioパッケージを購入すると、1つの言語に比べてわずかな追加料金で、同じIDEでDelphiC++Builderの両方のパーソナリティを利用できます。

また、C ++ BuilderパッケージにはDelphiコンパイラが含まれており、Delphi .pasファイルを作成/追加して、C++プロジェクトの一部として含めることができます。

于 2008-10-13T18:31:35.523 に答える
1

私は過去10年間、Delphiで専門的なプログラムを作成しており、C++に関する十分な知識を持っています。私はデルファイウェイに行きます。構文ははるかに単純で、メモリ管理も簡単です。ネイティブDelphi用のGCはまだ聞いたことがありません....NETgcのために導入されたDelphi.Netコードのトラップはあまり好きではありませんでしたが、gcsはあまり好きではありません;-)

于 2008-10-13T15:56:09.253 に答える
1

多くの Windows プログラミングを行う場合は、C++ を学んでください。フランス旅行に備えてドイツ語を勉強しますか。C/C++ は、Windows API のネイティブ言語です。C/C++ では、WinAPI データ構造と呼び出しの処理が非常に簡単になります。RAD に関して言えば、私は MSVC を約 13 年間使用しており、Visual Studio の GUI エディターを使用する人と同じくらい迅速に GUI アプリを作成できます。

于 2009-01-13T19:32:40.607 に答える