2011-04-23 6 views
1

私は、主にWindowsプラットフォーム(XP以上)用に開発している、初心者のCおよびC#プログラマーです。私のプログラムはGUIを備えた非常に小さなツールなので、現在はWinAPIを使って書いています。私は私のプログラムをほぼ完全にコントロールするためにWinAPIが好きです。私はそれを学ぶのに多くの時間を費やします。 WinAPIの知識が私の時間を学習に費やす価値があるかどうか、私は自分自身に尋ねました(私が将来の開発者としてこの知識を使用できるかどうかは分かりますが)。WinAPIの適用範囲

私は.NET Frameworkを使用しますが、Windows XPのユーザーは小さなツールを実行するために巨大な.NET Frameworkパッケージをインストールする必要があります。私は本当にそれが好きではありません。

だから、WinAPIには少なくとも良い方法がいくつかありますか?今すぐ学び、.NETに固執することに時間を費やさない方がいいでしょうか?

+3

XPを実行している皆さんは、すでに.netがインストールされています。ランタイムインストールが不要な生産的なフレームワークが必要な場合は、Delphiをご覧ください。 –

+0

@David Heffernan、それは本当に特定のXPユーザーのニーズに依存しています。それが必要なアプリケーションを入手しない限り、XPには.NET Frameworkをインストールしません。残念なことに、.NETについて知りません。提案していただきありがとうございます、私はDelphiを試してみましょう! – Joulukuusi

+1

@Angelユーザーが.netについて知っているかどうかは関係ありません。現実には、XPユーザーの大部分が.netに依存する何か他のものをインストールしているということです。とにかく、DelphiはGUIプログラムを作成するための非常に効率的なツールです。 –

答えて

1

まず、私はあなたに質問してみましょうか?私はポイントが表示されません? Windowsユーザーは、GUIアプリケーションをWindows GUIアプリケーションと見なします。その時、完全に制御する必要はありません。

imho MFCや.Netなどの既存のフレームワークを使用する代わりに、すべて自分で行うことは正当な理由です。 が好きな人は、まだコントロールを受けることができますが、ほとんどの場合はそうする必要はありません。

すべてのベスト:すべてのことを、自分ですべてを行うのに比べて、できるだけ早く行うことができます。

+0

私はフルコントロールがパフォーマンスの向上をもたらすと考えています。現在のアプリケーションではそれほど重要ではないかもしれませんが、大きなプロジェクトでは重要です。最後の言葉で何を意味したのか説明してください。私の英語は、私がそれを正しく理解していることを確認するのにはそれほど良いものではありませありがとうございました! – Joulukuusi

+0

パフォーマンスの向上について:時期尚早の最適化です。パフォーマンスの向上が必要であることを証明できますか?そうでなければ時間の無駄だからだ。最後の文章:私はそれを改めました。私はフレームワークが自分ですべてを行うのに比べて開発時間をかなり短縮することを意味しました。 – jgauffin

+0

たとえば、以前私がC#で書いたアプリケーションは、「コールドスタート」のために約1〜3秒かかっていました。私はC言語で書き直したとき、より速く起動するようになりました。しかし、はい、私は可能な時間とお金を無駄に言及について心配です。最後の文章を編集していただき、ありがとうございました。 – Joulukuusi

1

はい。ネットのすべてのものは、Windows APIの単なるラッパーです。あなたがWin32とGDIでやっていることを知っているなら、.net GUIの多くは非常に使い慣れていて簡単に手に入ります。また、純粋なネットプログラマーの多くとは異なり、ボンネットの下で実際に何が起こっているのかをもっとよく理解することができます。これは時には非常に便利です。

Windows XPについて心配する必要はありません。マイクロソフト自身は現在SP3のみをサポートしていますが、重大なセキュリティ上の欠陥については多少なりともサポートしています。それ以来、2つの新しい世代の世代がありました。したがって、Win7をサポートし、XPユーザーにアプリケーションを実行するための前提条件が必要だと伝えてください。すでに.netがインストールされていないWInXPユーザが見つかった場合、それはです。それがあまりにも有罪だと感じるなら、.net 3.5や4.0にアップグレードする必要がないように.net 2.0をターゲットにすることが役立つかもしれません。

私はWin32 APIを学ぶのは時間の無駄だとは思いません。

しかし、面倒なことに、もっと多くの.netがあります。これは、アプリケーションの作成に多くの時間と手間をかけません。 Win32では、多くの作業を自分で行ったり、異種のサードパーティ製のライブラリを統合したりする必要がありますが、これは数行のコードで実現できます。これはむしろ解放的なものです。

はなぜあなたはGUIアプリケーションをコーディングするときに、すべての完全な制御が必要なことだと思います:すべての

+0

WinFormはWinAPI用のラッパーですが、これはWPFでも当てはまりません。 – svick

2

知識はめったに役に立たない。 Windows APIを学ぶことはで直接(多くの場合、MFCや.NETの知識に関連して)に適用されるかもしれませんが、APIレベルでの動作の理解は重要です。

市場性の高いスキルをお探しの場合は、.NETとMFCの知識はもちろん、未加工のWindows APIよりも多くの需要があるため、これらのスキルを開発することで、潜在的な雇用主の幅が広がります。しかし、あなたはさらに多くの競争もしています。

Windows APIの知識はあまり一般的ではありません。つまり、これらのジョブの競争が少なくなるだけでなく、雇用者が少なくなります。

最初のプログラミングジョブでは、群衆と一緒に行くと雇用するのが簡単です。最も需要の多いスキルを開発します。一度仕事をすれば、興味深いものに余暇を残すことができます。

これは何年も前のことです。私は銀行向けのCOBOLを書く仕事をしていて、自分のパーソナルコンピュータにアセンブリ言語、C、Pascalプログラムを書いて私の夕方を過ごしています。それは時間がかかりましたが、最終的に私は本当にやりたい仕事をしています。

1

上位レベルのC#/。NETツールを使用すると、ほとんどのアプリケーションの開発時間を短縮するのに非常に役立ちますが、すべての高レベルツールは低レベルのコントロールを犠牲にします。したがって、速度が精度よりも重要であるかどうかによって、コントロールがWinAPIまたは.NETツールで指示されるかどうかによって、ニーズに合わせて適切になります。つまり、.NETはP/Invoke機能を使用してWinAPI Cライブラリを呼び出すことができます。 P/Invoke wikiを使用して、WinAPI呼び出しを呼び出す適切な方法を示すことができますが、状況によってはこれがかなり毛深いことに注意してください。それが何であれ、私はC#言語の作業を楽しんでいます。

1

エンジェル、私は上記のことに同意しません。 .NETは明らかにWindows開発の現在のステップであり、Windows XPボックスにはXP SP3を実行するのに十分なメモリとパフォーマンスがあり、この時点でXPはアンティークである場合、Windows XPに正常にインストールされます。あなたがちょうど出発しているなら、なぜ古代から始めるのですか?

私はプログラマの標準によって古代です。これは専門家によるプログラミングの30年目ですが、これはずっと前からアセンブラで始まりました。私は、基本的なC環境でさえも全部のゴミであったDOS 1.1以降、マイクロソフトの環境で作業してきました。最初のアセンブラでBorlandのTurbo Pascalで作業を開始した後、OWLを使用したBorlandのC++が熱いチケットだったのですが、MicrosoftはVistual Studioを最高のクラスにしてWFCとCOMを導入しました。

私の仕事の大部分は、常にシステム開発とコミュニケーションが行われているため、Windows API世界の通常の「ユーザーアプリケーション開発」の部分については検討していませんでしたが、常にWin32のコアC APIです。 APIの優れたセットですが、.NETのC#は非常に簡単で、はるかに多くのソフトウェアを非常に高速に処理できます。

誰もMicrosoft APIをすべて習得することはできません。それは圧倒的だ。最新のものから始めることもできます!私はプログラマのために醜いおじいちゃんですが、私は何年もCとC++でプログラミングを簡単にWin32 APIに直接渡すことはしませんでしたが、Microsoftは.NETとC#JITコンパイラでこのような素晴らしい仕事をしました

私にとって大きなことは、プログラマ、とにかくシニアプログラマはもはや単なる「Windowsプログラマ」ではなくなり、世界は.NETやJavaのようなオブジェクト指向のプラットフォームに移行したことです。 C#とJavaは同じものの近くにいるので、なぜ両方を学ばないのですか?これらは将来のためのプラットフォームです。 C#コードはLinuxのMono上で動作し、Javaは何でも実行され、モバイルデバイスの開発のための主要な環境です。

ベンダーによって時代遅れになった10年前のオペレーティングシステムにいくつかのライブラリをインストールしなければならないようにするために、プログラミング環境で自分自身を制限するのはなぜですか?最近では、複数のコア、ギガバイトのRAM、ストレージのテラバイトのコストが数百ドルに上っていることを考えると、XPに抱かれた数少ないホールドオーバーを放棄することは、時間を無駄にする価値があるとは思わない。

関連する問題