Delphi対C ++ Builder-Win32を使用するJavaプログラマにとってより良い選択です
-
05-07-2019 - |
質問
私はかなり経験豊富なJavaプログラマで、ここ数年でかなりのWin32の仕事をしています。主にVB6を使用していますが、本当にもっと良いものに移行する必要があります。
Delphi 2009で1か月ほど遊んでいます。VCLGUIのようなものが好きです。DelphiはVB6よりもWindows API呼び出しに適しているように見えます。 IDEに付属する単体テストフレームワークのように。
しかし、Delphiには広く使用されているガベージコレクターがないという事実に本当に苦労しています-すべてのオブジェクトを手動で解放するか、すべてのインターフェイスを使用する必要があるため、オブジェクト指向の方法。また、構文や、メソッドの先頭で変数をすべて宣言する必要があるという事実にも特に興味はありません。
Delphiを処理することはできますが、C ++ Builder 2009が私にとってより良い選択であるかどうか疑問に思っています。私はC ++ BuilderとC ++についてほとんど知りませんが、Delphiについてもほとんど知りません。私はC ++言語にはたくさんあることを知っていますが、生産的に物事を成し遂げるためにそれのサブセットを知ることだけが必要だと思います...私は今日のC ++がC ++ 10年前。
新しい開発のみを行うため、C ++言語のすべての側面を習得する必要はありません。Javaの各言語機能に相当するものを見つけることができれば、十分に満足できます。より高度なものをもう少し調べ始めることができます。 (それが痛いほど素朴に聞こえるならごめんなさい-もしそうなら私をまっすぐにしてください!)
では、DelphiとC ++ Builderの両方を初めて使用するJavaプログラマーにとって、Win32 exeとdllの生産的な開発に適した選択肢はどれだと思いますか?それぞれの長所と短所は何ですか?
解決
DelphiまたはC ++ Builder-難しい選択です!
ご存じのとおり、IDEとRADの観点からは基本的に非常に似ています。
それぞれの長所と短所は、背景に関係なく、このようなものです。どちらも、ネイティブWindows開発に最適な優れた2-way RADフォームデザイナーとフレームワーク(VCL)を共有しています。
Delphi:
- FOR:大規模で活発な熱狂的なコミュニティ
- FOR:Delphi 2009は長年にわたって最高のバージョンです
- FOR:Delphi" units" Cソース/ヘッダーファイルのペアが古風に見えるようにする
- AGAINST:オブジェクトがスコープを離れる際の自動破壊はありません。したがって、多くの「最終的な」コードがあります
- AGAINST:言語は「言葉遣い」になる可能性がありますが、これは好みの問題です
- AGAINST:サードパーティのDLLまたはライブラリを他の言語(特にC)で使用するには、Delphiヘッダーファイルを記述する必要があります
C ++ Builder
- FOR:C ++ Builder 2009はおそらくこれまでで最高のバージョンです
- FOR:RAIIイディオムはメモリ管理を大幅に簡素化します
- FOR:C ++ Builderの実装にバグがある場合でも、テンプレートは非常に便利で強力です。
- FOR:BOOSTおよびその他の最新のテンプレートベースのライブラリのサポート(Boostサポートは100%ではありませんが)
- FOR:Delphiとの優れた相互運用性により、ほとんどのDelphiコンポーネントを簡単に使用できます。
- FOR:C / C ++ヘッダーを含むサードパートDLL /ライブラリで使いやすい。
- FOR:C ++では、DelphiよりもCVのほうが見栄えがよくなります。
- AGAINST:CB2009は「ユニコードのみ」です-コードの移植性に対するこの影響は、Delphiの場合とは異なり、あまりよく考えられていません
- AGAINST:C ++ BuilderユーザーベースはDelphiよりもはるかに小さいです。たぶん20%以下。
- AGAINST:Borland / Inpriseは数年前にBCBをほぼ殺しましたが、コミュニティからの多大な努力の後にのみ復活しました。 (ただし、Codegear / Embarcaderoの取り組みは印象的です)
- AGAINST:C ++ BuilderはCodegearの頂点ではありません。
- AGAINST:サードパーティのコンポーネントベンダーは、C ++ Builderを常に理解/サポートしているわけではありません
これで終わりです。私の立場を述べるために、私は幸せなBCB2007 / 2009ユーザー(BCB5以降)であり、Delphiもあまり使用しません。数年前、私はC ++からDelphiへの切り替えを検討しましたが、RAIIイディオムの欠如は、私が納得するのが難しいことの1つでした。
他のヒント
Delphiを使用すると、
そのガベージコレクションメモリマネージャを使用しない場合でも、C ++よりもDelphiをお勧めします。 C ++が一般的な開発に与える唯一の利点は、中括弧構文です。 Delphiの構文を気にしないのであれば、ほとんどの場合、より良いものになります。確かにC ++ BuilderにはDelphi VCLとRTLがすべて揃っているため、Visual C ++ほど悪くはありませんが、Delphiの方が良い選択だと思います。
Excelアドイン(コメントで述べたように)には、より優れたCOMサポートがあるため、C ++ビルダーよりもDelphiをお勧めします(Excelアドインに必要だと思います)。
Delphiは、あなたの記憶を管理する必要がありますが、非常に簡単です。
MyObj = TMyObj.Create;
try
MyObj.DoSomething;
finally
MyObj.Free;
end
Delphiでは、すべてのオブジェクトがヒープに割り当てられるため、ルールを作成して解放すると、ルールは非常に簡単になります。
C ++とそのスタックおよびヒープベースのオブジェクトを使用すると、もう少し学習する必要があり、トラブルを起こす余地が増えます。
BCC 4.1 / DOSおよびDelphi 2007以降3.0からBorland CおよびC ++コンパイラを使用した後、あなたはいずれにせよすばらしい冒険に参加していることを正直に伝えることができます。 BorlandのBuilderおよびRAD IDEのC / C ++からの移行は、MicrosoftのVC ++、C ++、および.NET(最初のMS-DOSリリースのベージュを使用した3リングミニバインダー)からの実質的なパラダイムシフト(および学習曲線)です。
C ++とDelphiの選択は、両方の言語でいくつかの中小規模のプロジェクトに足を踏み入れた後に行うことをお勧めします。私はCプログラマーを始め、約5年後にDelphi(V3.0)に切り替えました。VCLにより、Windowsプログラミングがはるかに簡単で生産的になりました。
警告されますが、DelphiはCOBOL、FORTRAN、VisualBasicなどの他の言語を使用するプログラマーにとって魅力的な言語です。その構文とコードの規則により、トラブルを防ぐ一種の規律が強制されるからです。 Cの簡潔さと生の金属の力により、Cは優れたシステムプログラミング言語(デバイスドライバー、O / Sコード、リアルタイム組み込みプログラミング)になりますが、経験の浅い人には噛みつくことができます。
BorlandのC ++ Builder(C ++コンパイラに追加されたDelphiのVCL)は、C ++のシャープなエッジの多くを取り除き、2番目にお気に入りの言語です。 Borlandが両方の言語に.NETサポートを追加したため MSフレームワークのプログラミングにVC ++の代わりにBuilderを使用するという強力な議論があります。 C#にはC ++に比べてかなりの「親しみやすさ」が組み込まれていますが、プッシュされても、始めたばかりの場合はDelphiまたはBuilderに固執します。
ロープを学ぶため、プロトタイピングとクイックコンセプトプログラムのために、特にVCLとサードパーティのコンポーネントでDelphiを打ち負かすことができる言語はありません。誇大広告ではなく、事実だけです。
個人的には、言語間の違いとは別に、他の重要な考慮事項があると思います。たとえば、Delphi IDEは、WYSIWYG方式でGUIを構築するのに非常に優れています。 C ++ビルダーIDEを使用したことはありませんが、Delphiに匹敵するGUIビルダーがあれば驚くでしょう。
表面的にはC ++の構文はJavaの構文に似ていますが、Delphiのオブジェクトモデルは実際にはJavaのそれに近くなっています。 Delphiにはポインターが存在しますが、実際には(Javaのような)オブジェクト参照が99%使用されます。現代のC ++でも、ポインターを避けることは不可能だと思います。ポインタ自体に問題があるわけではありませんが、実際には...
個人的なノートでは、私は最近ほとんどJavaの男ですが、Delphiで2年間働いており、ハートビートでそれに戻りました。対照的に、私はC ++の経験が非常に限られており、その言語に戻るよりもトイレを掃除することを好みます:)
もちろんjava sintaxはdelphiよりもc ++に似ていますが、オブジェクトモデルはdelphiに似ていると思います:
- 単一継承。インターフェースは存在しますが、JavaインターフェースよりもCOMに似ています。
- オブジェクトはヒープに割り当てられ、参照によってアクセスされます
3つの言語を比較した論文を見つけることができますこちら
Delphiを使用すると、数回使用すると簡単になります。また、サードパーティのサポートが増え、C ++ Builderの前にDelphiで導入された機能の一部が追加されました
また、元Javaからこのブログを読んでおり、現在では、DelphiとSteve Shaughnessyのほとんどのデータベースおよびデータスナップの背後にいる人が、Javaの10年後のDelphiのプログラミングに関する彼の経験について書いています:-) http://blogs.codegear.com/steveshaughnessy/2006/12/03/ 30193
C ++ VCLでできなかったことは、Delphi VCLではできなかったことで、ほとんどすべてのDelphiコンポーネントはC ++ Builderで正常に動作します。私はWindowsとUNIXの両方をプログラムしているので、C ++はより移植性があります。
コンテナにC ++ STLまたは他の適切に設計されたライブラリを使用する場合、ガベージコレクションは重要なポイントになり、そうでなければ手動GCは難しくありません(すぐに良い習慣を習得できます-とにかく練習する必要がありますGC)。可能であればRAIIを使用し、メモリ管理をコンテナにカプセル化し、オブジェクトの所有権を明確にし、ポインタをnilable参照としてのみ使用する限り(すべて、言語に関係なく実行する必要があります)、GCは実際には問題。
"たとえば、Delphi IDEはGUIをWYSIWYG方式で構築するのに非常に優れています。 C ++ビルダーIDEを使用したことはありませんが、Delphiに匹敵するGUIビルダーがあれば驚くでしょう。"
実際には、C ++ Builder GUIエディターはまったく同じエディターであり、同じように機能します。素晴らしいです。
.Netには、Javaによく似た膨大な数のクラスがあります。 C#の構文はJavaに似ており、巨大なクラスライブラリが機能するため、かなり似ています。そして、それはプログラムするのに完全に適切な環境です。しかし、率直に言って、Delphiははるかに快適な言語、IDE、および一般的な作業環境です。 C#は、Delphiを設計した「フィール」と同じ人物によって設計されました。多くの点で非常によく似ているため、Delphiはネイティブコードにコンパイルされるため(Delphi .Netも使用できますが)、基本的に使用が難しいと想定しないでください。そうではありません。
Delphiはクールな言語であるため、個人的に推奨されます。ただし、C ++の学習に興味がある場合は、おそらくC ++ Builderが最も優れた方法です。
私は過去10年間、Delphiでプロとしてプログラミングを行っており、C ++について十分な知識を持っています。 私はDelphiの方法に行きます。構文ははるかに単純で、メモリ管理も簡単です。ネイティブDelphi向けのGCはまだ聞いていません... p>
前に言及するのを忘れていた1つのこと:
コストの観点からは、本当に選択する必要はありません 。 RAD Studio パッケージを購入すると、1つの個別の言語に対してわずかな追加料金で、Delphiの C ++ Builderパーソナリティを同じIDEで入手できます。
そして、C ++ BuilderパッケージにはDelphiコンパイラが含まれており、Delphi .pasファイルを記述/追加して、C ++プロジェクトの一部として含めることができます。
多くのWindowsプログラミングを行う場合は、C ++を学んでください。フランス旅行の準備としてドイツ語を学びますか? C / C ++は、Windows APIのネイティブ言語です。 WinAPIデータ構造と呼び出しの処理は、C / C ++で非常に簡単です。 RADについては、私はMSVCを約13年間使用しており、Visual StudioのGUIエディターを使用している人と同じくらい迅速にGUIアプリを作成できます。