- ベストアンサー
VC系の疑問(習得の難易度、生産性他)
何度も似たような質問をして申し訳ありません。 日曜プログラマー志望なのですが、できるだけ多くのユーザーに”すぐに作れて”、すぐに”、”そのまま”使えるソフトを作りたいと思っています。 JAVAは多くの環境で使えますが、JAVA仮想マシンを入れていないと、ソフトを動かす事ができないのでそれに反します。 あくまで”多くのユーザー”、”すぐに”、”そのまま”が条件です。 そのためなら、Macを切り捨てても問題ありません。 ランタイムが足りなかったり、再起動が必要な作業は極力さけたいのです。 その結果、Delphiを視野に入れていましたが、書籍の少なさ、将来性の不透明さ、プログラムにクセがあるように思うので、踏ん切りがつかなくなっています。 そこで、VCでも外部依存しない単体の実行ファイル(exe)を作ると聞きました。 VCに関する質問なのですが、 ・習得の難易度は? ・生産性は? Delphiと比較して頂けるのが、大変参考になりますが、VCだけでも、問題ありません。 当方のプログラム歴は、Perl、PHP、JAVAの初心者本くらいです。VCの初心者本を読みましたが、DelphiよりはJavaScriptにも似てるし、概念も勉強したJAVAに似ているので、とりつきやすいイメージなのですが、VCの方が習得が難しく、生産性が落ちるのでは、当方としては意味がありません。 将来性は考えていないと言えば、嘘になりますが、順位は下の方です。 最終目的としては、チャット中に渡せて、そのまま使えるソフトを作りたいのです。 よろしくお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
> ”多くのユーザー”、”すぐに”、”そのまま”が条件です。 現実的に市販製品の多くはいまだ VC++ で実装されており、製品精度については実績十分です。 静的リンク版でビルドすれば、Windows 上で動作しない環境はほぼないです(バージョンに依存する処理を書かない限り)。 他製品で使われたりもしますし、VC6のランタイムは WinXP 以降の標準になるなど、上記の条件は十分に満たします。 # Mac は切る(or別バイナリ)がよいと思います。 > ・習得の難易度は? 難易度は、かなり高いです。Java等と比べたら、相当高いと思います。おそらく"意味がない"レベルの違いがあります。 まず、C++ の理解が必須です。 template 等は省略しても MFC 前提なら当面かまいませんが、C++ は機能優先/実用優先な言語なので、よいものを作るには最低限知らなければならないことが多くあります。 また、MFC 自体の習得、及び MFC は Win32API の薄いラッパーなので、これらに対する知識も必須です。 ・生産性は? 決して、高いとは言いかねます。 MFC は入門に適しているとは言いがたく、どちらかというと、「C++/Win32 に詳しい人の生産性をあげるツール」という感じです。 > 最終目的としては、チャット中に渡せて、そのまま使えるソフトを作りたいのです。 C/C++ は、”多くのユーザー”、”すぐに”、”そのまま”を満たしますが、"すぐに作れて" には、そうとう向かない言語です。 Java 等を含む新参の言語は、"すぐに作れて" には向きますが、その他の条件には制約が多いかと思います。 それぞれに強みや特性がありますので、旨くトレードオフしてください。
その他の回答 (9)
- yulali
- ベストアンサー率45% (29/64)
C#はどうでしょ?チャッ友がC#をやってまして、たとえば簡単なサンプルを作る際なんか、私がVC++でAPI引数の型や構造体で悪戦苦闘してる間に、彼はチョイチョイとソフトを作ってしまいます。 うらやましく思って、こないだC#の書籍をちょっとめくってみたんですが、まんまjavaのパクりでとっつきやすかったですよ。 確かにVC++を極めれば大抵何でもできますが、それにはwindowsを一から構築するくらいの気合と根性が要りますね。イベント駆動型GUI・何考えてんねん!?的設計のソケット・意味不明な動作のスレッド・殺人的なマルチバイト文字列の扱い・その他公開されないAPIと仕様・・・丸ごと暗記して理解しないといけません。あとAPIの日本語ドキュメントは少ないので、英語ドキュメントがスラスラ読めること必須。perlを理解するのに半年かかったなら、10年かかること請け合いです。 WindowsVistaはもう目前ですし、64bit環境が普及すれば、メモリ管理にシビアなC++のコードは書き直さなければならないかもしれません。やっとVC++を習得したら既に時代遅れ(もうなりかけてますが)なんて最悪でしょ。処理系依存のVC++よりC#とかDelphiとかRubyとかの高級言語を選択した方が良いと思います。 以上、もう後戻りできないVC++プログラマでした。
お礼
C、C+、C++、C#、C#.NET(?)とありますよね。 これらってけっこう違うんですか? 私の中では問題点を改良していったものと思っていたのですが。 Visualがつくものは、これらの言語を簡単に作成できる環境だと思ってたけど。 たしかに私もC#をパラパラと見たけど、JAVAとJavaScript、Perlに似ている気がして。 >習得したら既に時代遅れなんて最悪でしょ。 は、特に気にしていません。 それが怖かったらDelphiは選びませんよ。(苦笑 あくまで、多くのユーザーがすぐに簡単に動かせるソフトが目標ですから。
こんにちは。 VC に関する難易性は既に他の方々が仰ってられるので、私は少し異なった件を述べます。 質問者さんの要求を満たすのなら(質問者さんのプログラム歴からも)、WSH 上で JavaScript を利用されるのが一番かと思います。もしくは HTA でも良いかも知れません。 VC や Delphi で こてこてとプログラムを作る事を勉強されるのは全く否定はしませんし、大いに結構な事だと思うのですが、その手段は今回の目的にはそぐわないのではと思います。 (参考) WSH: http://www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html HTA: http://www.geocities.jp/kiaswebsite/hta/hta_application.html
お礼
意図違いでも別の方向から、質問者の意図を想像して回答は大歓迎です。 私も、よく勝手に妄想しますし。 別の似たような質問だったのですが、WSHやHSPも来るかなー?とは思っていました。 実は、かなり忘れてませんが、VBSも少しかじって、少し挫折しました。(w ただ、WSHやHSPでは、私の興味があるデーターベースや統計処理に少し力不足を(私の想像ですが)、感じてしまって。 いろいろなHPありがとうございます。
- MrBan
- ベストアンサー率53% (331/615)
#1です。 誤解させたようですみません。 既に他の方も書かれていますが、VCアプリでは静的/動的リンクの2種類が選択できます。 > 静的リンク版でビルドすれば、Windows 上で動作しない環境はほぼないです(バージョンに依存する処理を書かない限り)。 ランタイムが必要なのは、動的リンク時です。 静的リンクのデメリットは、これも既に書かれているように、サイズが大きいことです。 # 1MB規模で違うので、ナローバンドだときついかも。 なお、バージョン依存というのは、Win32APIには、Win95/98系で動かないものなどもあるので、それを使わないということです。 # MSDN(マニュアル)に、使える環境が書いてあります。 > VC6++で作ってランタイムが必要になるのは > MFCというライブラリを使ったときのみで、 > そのライブラリはexeに内包することができます。 VC6はいまさら入手が難しく、VC7以降はMFCを使わなくても C++ 用のmsvcr71.dll 等が必要になったりもするのですが、これも静的リンクすれば別途配布不要なことに変わりはありません。 また、DLL の登録等は必要ないので、一ファイルにこだわらないのならば、特にインストーラがなくても、dll を同一ディレクトリにおいてもOKです。
お礼
MBで違うとなると、確かにナローバンドではメールでは厳しいかもしれませんね。 まぁ、その辺は、HPも持っているのでそこからDLしてもらっても問題ありません。 ありがとうございます。
- dekopa-
- ベストアンサー率42% (161/378)
VC++の習得の難しさは、すでに皆さんが指摘されている通りです。 それに加えて、VC++の統合開発環境そのものの操作性の悪さが生産性を妨げます。 Delphiなら、ボタンを押したかったらフォーム上にボタンを置いて、ダブルクリックするだけでイベントコードを入力するエディタが開きます。使ってみれば分かりますが、直感的で簡単です。 VCは、まずDelphiのフォームの様な共通したウィンドゥがありません。 ダイアログ形式とSDI形式(メモ帳形式)、MDI形式(Excel形式)で気軽に切り替えできません。Delphiがフォームのプロパティを変えるだけ(MDIは多少のコーディングが必要)なのに対して、VC++なら通常はプロジェクトウィザードで1から作り直しです。 ボタンも、まずリソースエディタでボタンを置き、IDという一意の名前を決めます。 次にクラスウィザードを開き、そのIDに対してOnClickイベントを呼び出すコードを生成します。生成されたら、Delphi同様イベントコードを書きます。 最悪なのがこのクラスウィザードが吐くコードです。 C++はWindowsのイベントを処理するようにはなっていないので、VC++は大変な苦労をして(大量のマクロで誤魔化して)この処理をプログラマから隠蔽していますが、そのせいでイベントを気軽に切り替える事すらできません。「あ、このボタンのイベントいらなかった」といって気軽に消すことすら、初心者にはできません。 VC++が生成するコードは非常に理にかなっているというか、Microsoftの苦労が忍ばれる代物ですが、プログラマにとってはC++言語以上に癖の強いこれら「VC++独自の文化」を覚える必要があり、大半の人間はこれで挫折します。 またライブラリというか、画面を構成するコンポーネントの貧弱さも問題です。 VC++では、Delphiの数分の一、あるいは数十分の一しかコンポーネントがありません。 加えて、ボタンを1つだけイタリック体にしたい、と思ったら、コーディングが必要です。DelphiやVBならフォントプロパティでパラメータを変えるだけなのに、です。
お礼
>VC++の統合開発環境そのものの操作性の悪さが生産性を妨げます。 実はVBと同じような感じなのかな?と思っていたのですが、違うのかな? 統合開発環境が未だ未完成といった具合なのでしょうか? コンポーネントの少なさも意外です。 いろいろな豆知識ありがとうございました。 ただ、 >ダブルクリックするだけでイベントコード には、PerlやPHPでは、常に全体を意識しながら書いていたので、いきなりイベントコードの位置に動くのは多少、とまどってはいます。
- sha-girl
- ベストアンサー率52% (430/816)
>>VC6のランタイムは WinXP 以降の標準になるなど、上記の条件は十分に満たします。 >これは、XP以降の標準となっても、現在のどれくらいの一般ユーザーが満たしているのかが疑問になります。 VC6++で作ってランタイムが必要になるのは MFCというライブラリを使ったときのみで、そのライブラリはexeに内包することができます。 ですからその部分は気にしなくて良いと思います。 (ライブラリを内包するのはdelphiも一緒です。) MFCは質問にある「すぐに作れて」という部分をサポートするライブラリです。 ちなみにMFCはそのソース自体がVC++に添付されています。 欠点としてはMFCを内包するとexe自体が肥大化することです。 それはdelphiにもいえることです。また結局のところMFCは 基底にあるWinAPIを知っておかなければ使いこなせないでしょう。 >できるだけ多くのユーザーに”すぐに作れて”、すぐに”、”そのまま”使えるソフトを作りたいと思っています。 >VCの方が習得が難しく、生産性が落ちるのでは、当方としては意味がありません。 一般的にJavaより難易度が高く生産性が落ちます。つまり 「すぐに作れて」という部分があてはまらないと思います。 既出ですがVC++でまともなWinアプリを作るためにはC/C++だけでなく Windowsの仕組みについても最低限知っておく必要があるのです。 (私自身最初はVC++に挫折した覚えがあります) VC++をメリットはとにかく小回りがきくということです、 最悪、VC++の中ではアセンブラの記述もできるので力任せになんでも出来てしまいます。 (ちなみにDelphiもアセンブラの記述が出来ます)
お礼
VC++は小回りがきくんですねー。 興味本位なのですが、いろいろなプログラム言語の短所長所がしりたくなりました。 いろいろなプログラム言語を説明した本は、読んだ事があったんですが、詳しくは書かれていなくって。 生産性や習得が難しいのなら、私の希望ではありません。 ありがとうございました。
- Trick--o--
- ベストアンサー率20% (413/2034)
Delphiだって独自の方法でWindowsを操作してるのはMFCと同じこと。 設定次第では、その「独自」の部分もEXEに含めることは出来る(ランタイム等が不要になる)が、ファイルが大きくなるし、VCでも出来る。 貴方が出来るものを使うのが一番でしょうよ。 プログラム自体これから勉強する、というのならどれだって同じ。手に入りややすく、参考書等が充実しているものを選べばいい。 その意味ではVCでいいと思うけどね。
お礼
Delphiの書籍の少なさに不安はかなり感じています。 VBでもいいんですけどねー。 とりあえず、JAVAで1ヶ月かかったウィンドウからの容量単位変換がDelphiなら1日で同じ事ができたので、ちょっと満足してます。 でも、将来性の不透明さで書籍を買おうかどうかは、もう少し時間が必要かなー。 ありがとうございます。
- graphaffine
- ベストアンサー率23% (55/232)
念のため申し上げますが、VCは言語で無く処理系です。 従って、(言語である)JAVAやDelphiと比較するのは、はっきり言えば間違っています。 で、回答ですが、VCの習得の難易度は非常に高い。 理由は、VCを使うためには、下記の知識が全て必要になるから。 ・C/C++言語の知識 ・VCの操作手順 ・Windowsプログラミングの知識 因みに、私は上記知識が何も無いままVCを使い始め、まともなプログラムが組めるようになったのは数ヵ月後でした。趣味でやったことですが、業務でこんな状態だったらクビになってたでしょうね。 生産性については、VCをどのように使うかの話になってくるので、あくまでも一般論でしか言えませんが、他の処理系や言語と比して高いとは言えないでしょう。
お礼
私はPerlが分かってきたなー、と思ってきたのが半年くらいかかりました。 これからC系に出を出すのは、やめておきます。 日曜プログラマなので、どんどんソフトが完成した言った方が気持ちが良いし、長続きもしますし。 ありがとうございました。
- Trick--o--
- ベストアンサー率20% (413/2034)
WinAPIで書けばWindowsなら動くものが作れる筈。面倒だけどな。 面倒じゃなくするためにBorlandやMicrosoftが独自のライブラリを開発してるんだから。 ランタイムライブラリと一緒に渡す/インストーラをつけるのが一番楽なんじゃないの。
お礼
最終的なもくろみとしては、チャット相手に気軽に渡せて、気軽に使ってもらいたいのでランタイム不足やインストーラーはちょっと避けたい。 チャット相手は不特定なので、多くの環境で使えるのがベストかと。 ・・・の、結果win限定でもDelphiかと。 私も普通に使うのなら、ランタイムライブラリと一緒に渡す/インストーラをつけるのが一番楽だと思うけど。(苦笑 VBならVBSやVBAにも応用が利くし。 どうも、挙動が見えないインストーラーにあんまり言いイメージを持っていないのも起因の一つかも。
- jacta
- ベストアンサー率26% (845/3158)
> そのためなら、Macを切り捨てても問題ありません。 Windows限定とは書かずに、Macを切り捨てるとのことですので、Linux等のUnix系のOSや超漢字などは対応するという意味でしょうか? それならVisual C++は論外です。
補足
win以外のユーザーで次ぎに多いのがMacと考えたからです。 また、Linuxユーザーは私の様にwinも持っていてLinuxも持っている人が多いと思ったからです。 win限定ではなく、winで動けば多くのユーザーで動くと思ったからです。 あくまで”多くのユーザー”、”すぐに”、”そのまま”が条件なので。 本当は、JAVAや.NETのように多くの環境で動かす事ができ、なおかつその動かす環境がすでに多くのユーザーに整っているのが理想なのですが、それはやはり5、10年以降となると思うので、そこまで先は見ていません。
お礼
やはり、生産性は高くはありませんか。 実はその言葉を密かに望んでいました。 これでVC系がDelphiより少し難しいくらい、生産性も同じくらいとなると、さらに果てしなく悩む事になりました。 これで私には廃れつつあるけどDelphiがあっているのだと、一票です。 複数の言語を操りたいのですが、HP関係はPHP、身の回りの細々としたソフトのためにもう一つと考えています。 ありがとうございました。
補足
補足。 >VC6のランタイムは WinXP 以降の標準になるなど、上記の条件は十分に満たします。 これは、XP以降の標準となっても、現在のどれくらいの一般ユーザーが満たしているのかが疑問になります。 いまだに、win98ユーザーもいますし。 とりあえず、5,10年を見据えている訳ではなく、とりあえず、今現在からを見ています。 .NETならwinのアップデートをすれば入っている可能性は高いですが、アップデートもしない人もいますので、Delphiの方が使用環境を持つユーザーが多いと、私は考えました。 >チャット中に渡せて、 というのは、もちろんチャットしている間にプログラムを作りたいと思うのではなく、DLという意味です。 PHPでさえ、作成するのに2,3日はかかる私なので。^^; 誤解を含む表現なので、訂正いたします。