2011-01-16 10 views
11

私はDelphiholicですが、最近はC#も学ぶことを考えていましたが、私はちょっと "未知のことを恐れています" C#のテストドライブとして、私はそれが気に入っていることを認めなければなりませんが、私はIDEが本当に好きではありません...このパスをたどった他の人が答えるなら、感謝するという質問があります:Delphiの開発者がC#に切り替える

デルファイの開発者は、Delphi言語の「基本的な」基本的な変更(基本的にはユーティリティ機能、ストリームなどを意味します)を、「システム、クラス、Windows」を「System.XXX.YYY.ZZZを使用しない」を使用していますが、私はDelphiからC#に手を差し伸べる場所がわかるまで、DelphiからC#への私の心の中で部分平等をしようとしています...

私は、「主な基本」の変更は、その.NETのあるでない場合は、私を誓うことを躊躇してはいけないと私も、私はできる限り明確にしようとするでしょう:-)

答えて

22

私は、ソフトウェア開発のために両方を頻繁に使用します。

.NETでは、サーバーアプリケーション(Webアプリケーション、Webサービス、Windowsサービス)の開発速度がはるかに高いです。

Delphiでは、ビジネスアプリの開発スピード(純粋なWindows UI)がはるかに高いです。

セクシーアプリの開発は、両方の環境で苦労しています。あなたが知っておくべき

いくつかのこと:

  • 多くの時間がかかります.NETフレームワークを学ぶ:それは巨大であるが、防犯機器の多くは(いくつかの宝石が本当によく隠されている)が含まれています。
  • ジェネリックス、ラムダ、LINQ、すべてが素敵ですが、それらを一度にすべて把握してください。
  • Webアプリケーションの場合、Webフォームはスキップしますが、 ASP.NET MVVCを学んでください(はい、Rubyの人は結構だった)。 HTML 5とJavaScriptも学びます。
  • セクシーなWindowsアプリの場合、WPFを学んでください。しかし、熟練した学習曲線(デザイナーとフレームワークは根本的に異なります)を用意してください。
  • あまりセクシーなUIを取得しないでください。ユーザーが機能を待っています
  • 市場がデルファイバージョン1以降を叩いているように、the market is bashing SilverLight too
  • WinFormsをスキップします。 WinFormsのようなものが必要な場合は、Delphiの生産性が向上します(既存のDelphi VCLコードベースを使用している場合はもっとそうです)。
  • WPFは(読まない:どちらも3の優しいスレッドである)だけスレッドフレンドリーVCLやリサイズなどなどである1、他の.NETであなたのデルファイのものの書き換えを行う(またはそのことについてはしないでください
  • : 1はプラットフォームAからプラットフォームBに書き換えます)。これは時間の無駄です。
  • スレッド化と同期化は、すべての開発環境で苦労します。痛みはそれほど一般的なものではありません(Delphi OmniThreadLibraryのように、.NET 4フレームワークのConcurrent Collectionsが役に立ちます)。しかし、最終的な詳細と例外のケースを得ることは、本当の苦痛です。
  • ガベージコレクションとは、メモリがリークしないことを意味するわけではありません。つまり、アプリケーションが終了したときにリークすることはありませんが、漏れが検出されにくい(少年、私はFastMMメモリ...ありがとう、TActionList /にTActionは本当に私が使用ものではありません、非常に良い答え

--jeroen

+0

+1私はあなたの答えが好きです大変ありがとうございます、メモリリークに関しては、非常に簡単です、私はいつも私が作成したすべてのインスタンスを扱います(私はDelphiでの開発について話しています)、ネバは「1:1書き直しをしようと思います。時間の無駄ですが、私は、既存のデータベースをロジックで使用してC#アプリケーションでアクセスすることで、ASPページがちょっと遅いのが分かります。 – ComputerSaysNo

+0

スクリプトエンジンが毎回各ページを解釈する必要があるため、従来のASPページは低速です。コンパイルされたインスタンスがキャッシュに保持されるので、ASP.NETページは通常高速です。キャッシュにないページ(最初のコンパイル、ASP.NETワーカープロセスのキャッシュ期限切れ初期化など)、または遅いロジック層(これはWPFアプリケーションでも遅い)の2つの理由により遅くなる可能性があります。 。 –

+0

@gbrandt:編集に感謝します。 –

12

、質問がかなり明確であると思いますライブラリはオブジェクト指向です。たとえば、System、SysUtils、StringUtilsなどの間に広がるグローバル文字列関数の代わりに、それらはすべてStringクラスの静的メソッドです。グローバルパス操作関数の代わりに、PathクラスまたはFileクラスの静的メソッドです。 TextFile/AssignFile/Rewriteの代わりに、StreamReaderを作成します(またはファイルが小さい場合は、File.ReadAllLinesまたはReadAllTextという静的ファイルを呼び出します)。ほとんどのものはかなり掘り下げて見つけられます。欠落しているものがいくつかあります。たとえば、.NETにIncludeTrailingPathDelimiterメソッドはありません(ただし、通常は必要ありません - Path.Combineが良い)。

私は、WinFormsをスキップするよう提案します。 Delphi VCLを使用していれば、WinFormsは使い慣れたにもかかわらず不満を募らせ、馬鹿げて不十分です。彼らはVCLの基本的なアイデアを取り入れましたが、それほど深みを感じないし、使い勝手を向上させることもありませんでした。 TAction/TActionListに相当するものはありません。Dockプロパティ(DelphiのAlignに相当)は、「Bring to Front」/「Send to Back」を使い混乱させるまで、コントロールを隠すことが好きです。ツールチップにはフォーム上に余分なコンポーネントが必要です。コントロールはほんの一握りしかなく、それは私の頭の上にあります。時間をかけてWPFを学びましょう。それはVCLの豊富さとそれ以上のものを持っていて、壁に頭を打つ時間を大幅に減らすことができます。

IDEには慣れていますが、Delphiよりはるかに優れています。別のキーストロークを学ばなければならないが、それは大きな問題ではない。 IDEはより応答性があります(「バックグラウンド」コンパイル中にロックされていないもの)。それはまたいくつかのキックオフアドオンを持っています - しばらくの間ReSharperを使用した後、あなたは少しDelphi IDEを逃すことはありません。

+0

).NET用モニター、私はWPFで見ていたし、それは非常に有望に見えます私はウェブアプリを書くと信じています。 C#では、基本的なものについては、私が知りたいと思っていたものをかなりカバーしていると思いますが(他の人が何かを追加したいかどうかを知りたがっています)、IDEはDelphiよりも悪いと言いました。それについての情報?最初は私はそれに特別な何かを見たことがない、逆に、私はそれであまり経験がありません(2〜6時間BSODのために終了...) – ComputerSaysNo

関連する問題