[解決済み] Delphi vs C++ Builder - Win32を使用するJavaプログラマーにとってどちらが良い選択か?
質問
私はかなり経験豊富なJavaプログラマーで、ここ2、3年はWin32のものをかなりやっています。 主にVB6を使用してきましたが、もっと良いものに移行する必要があります。
Delphi 2009で1ヶ月ほど遊んでみました。 VCL GUIが好きだし、DelphiはVB6よりもWindows APIコールに適しているようだし、VB6よりもOOがずっと得意だし、IDEに付属するユニットテストのフレームワークも気に入っている。
しかし、Delphiには広く使われているガベージコレクタがないという事実には本当に苦労しています。すべてのオブジェクトを手動で解放するか、すべてにインターフェースを使用しなければならないのは、オブジェクト指向で効果的に物事を行う方法にかなり大きな影響を与えているようです。 また、構文や、変数をすべてメソッドの先頭で宣言しなければならないという事実も、特に気乗りしません。
Delphiは何とかなるのですが、C++ Builder 2009の方がいいのかなと思っています。 C++ BuilderとC++についてはほとんど知らないのですが、それならDelphiもほとんど知りません。 C++言語には多くのものがあることは知っていますが、生産的に物事を成し遂げるためには、その一部しか知る必要がないのでは......と思っています。 10年前のC++より、今のC++の方がプログラミングの生産性が高いと聞いたことがあります。
私は新規開発のみを行う予定なので、C++言語のすべての側面をマスターする必要はありません。Javaの各言語機能に相当するものを見つけることができれば十分満足できますし、進歩すればより高度なものに少しずつ目を向けることができるようになるでしょう。 (痛いほど素朴に聞こえたらごめんなさい。もしそうなら、私を正してください!)
DelphiとC++ Builderの両方を初めて使うJavaプログラマーにとって、Win32のexesとdllを生産的に開発するには、どちらが良い選択だと思われますか? また、それぞれの長所と短所は何だと思われますか?
解決方法は?
DelphiかC++ Builderか、それは難しい選択です!
ご承知の通り、IDEやRADの観点からすると、基本的に非常によく似ています。
それぞれの長所と短所は、バックグラウンドに関係なく、ちょっとこんな感じです。どちらも、Windowsネイティブの開発に最適な2ウェイRADフォームデザイナーとフレームワーク(VCL)を共有しています。
デルファイ
- FOR: 大規模で活発、熱狂的なコミュニティ
- FOR: Delphi 2009はここ数年で最高のバージョンです。
- FOR: Delphiのquot;units"は、Cのソースとヘッダーファイルのペアを古臭く感じさせる。
- AGAINST: オブジェクトがスコープを出たときに自動的に破棄されないので、コードに 'finally' がたくさん出てくる。
- 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: 履歴書ではDelphiよりC++の方が見栄えが良いかもしれません。
- AGAINST: CB2009 is "unicode only" - このコードのポータビリティへの影響はDelphiとは異なり、あまりよく考えられていない。
- 反対:C++BuilderのユーザーベースはDelphiよりずっと小さい。おそらく20%以下でしょう。
- AGAINST: Borland/Inpriseは数年前にBCBをほぼ消滅させ、コミュニティの大きな努力の末に復活させたのです。(ただし、Codegear/Embarcaderoのコミットメントは印象的なようです)
- 反対:C++BuilderはCodegearの中でトップではない。
- AGAINST: サードパーティコンポーネントベンダーが必ずしもC++Builderを理解/サポートしているとは限りません。
そんなところでしょうか。私はBCB2007/2009のユーザー(BCB5から)であり、Delphiもまれにしか使いません。数年前、C++からDelphiへの乗り換えを検討しましたが、RAIIイディオムがないことが、なかなか折り合いをつけられないポイントでした。
関連
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】破損したjarファイル
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] noexceptを本当に使うべきはいつですか?
-
[解決済み] Javaは複数行の文字列をサポートしていますか?
-
[解決済み] Java 8 Iterable.forEach() vs foreachループ
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。