プログラマの方に質問です。

業務でJavaからWindowsプログラム(VisualC++/アンマネージド)にシフトしました。
ネットの掲示板を見ると,VC++の話題でCの基本的な質問をしたり,Microsoftのフレームワークの話題とC++の話題が混在して誤解を生んでいる例を見かけることがあります。
こうした部分を切り分けて考えられるように「こういう順序や内容で習得すればよい」「ここは似ていて勘違いしやすい」といったポイントを教えて下さい。
例) 型の種類は○○な順番で覚える,ポインタが効く場面はここだ,など

回答の条件
  • 1人10回まで
  • 登録:2009/03/24 23:41:51
  • 終了:2009/03/31 23:45:10

回答(3件)

id:hijk05 No.1

hijk05回答回数1307ベストアンサー獲得回数232009/03/25 03:42:49

ポイント27pt

>VC++の話題でCの基本的な質問をしたり,Microsoftのフレームワークの話題とC++の話題が混在

最初は区別なく習得するのが一番の早道です。

習得後、C++言語仕様の本を流し読みして、区別をつけます。

はじめから区別して勉強しようとすると逆に失敗します。

id:bebit

> はじめから区別して勉強しようとすると逆に失敗します。

スミマセン。ご指南いただいた内容はたしかにそうと思います。

それとは別に区別というか,何を積み重ねていけば習得できるのか知りたかったです。

2009/03/25 23:07:15
id:pigment No.2

pigment回答回数95ベストアンサー獲得回数22009/03/25 08:59:21

ポイント27pt

アセンブラ→C→C++→C#という順で勉強したらいいんじゃないかな?

id:bebit

C++→C#の流れが分かりません。Javaの経験があることを例示したからでしょうか。

アセンブラから始めるのは思いつきませんでした。

2009/03/25 23:03:43
id:tdoi No.3

tdoi回答回数174ベストアンサー獲得回数752009/03/25 17:53:48

ポイント26pt

私は、JavaもC++を含めたいろいろな言語を使って開発をしますが、ドキュメントの量という意味では、JavaもVC++環境もそんなに変わらないのではないかなと思います。

MSDNは膨大ですが、ドキュメントという意味では、JavaDocと同等の内容は含んでいると思います。


あくまで、予想に基づく、個人的な趣味が入った提案ですが、

・C/C++について理解

つまり、ポインタについてや、値渡し、参照渡しなどについて、プログラミング言語としての基本については把握した方がよいと思います。これについては、適当な本を一冊読む程度でよいと思います。なお、この目的では、Visual C++と名前のついた本はやめたほうがいいですよ。

おススメとしては、以下の2冊が理解できるようになると、十分です。

ここまで、把握していないC++プログラマもたくさんいると思いますし。

Effective C++

http://www.amazon.co.jp/Effective-%E5%8E%9F%E8%91%97%E7%AC%AC3%E...

More Effective C++

http://www.amazon.co.jp/%E6%96%B0%E8%A8%82%E7%89%88-More-Effecti...


個人的には、その後、

・Win32 API

を学ぶことによって、Windowsプログラミングについての理解を深めるとよいかと思います。

これによって、Windowsのメッセージ処理、ハンドルの扱いなど、Javaであれば、必ず、何かのクラスにラップされたものを意識するようになるはずです。

これの良書はちょっと思いつかないのですが、

猫でもわかるプログラミング

http://www.kumei.ne.jp/c_lang/

のWindows SDK編を眺めるなんてのはいいかもしれません。

書籍の方もたぶんよいものだと思いますが、読んでいないので。

また、MSDNにもドキュメントはありますので、適宜、参照すればよいかなと思います。


その上で、

・MFC・ATL

などを学び、Windowsアプリケーションの開発を、それらが簡単に(?笑)しているかを理解していくのがよいかなと思います。

この他にも、オブジェクト指向的な考え方とか関連することはあると思いますが、それは、Javaでの開発と基本的には変わりません。

言語仕様の特性(多重継承が可能、ジェネリックプログラミング(Javaもありますが))の違いはあるので、同じ思想でも表現方法が異なるケースはあります。

これらについては、

オブジェクト指向における再利用のためのデザインパターン

http://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%...

を読むと、よく分かると思います。

もし、ちゃんとデザインパターンを利用されているようであれば、Javaとの違いも明確になると思います。


というのが、個人的な理想ですが、全部、こなすのは、結構ヘビーです。

あとは、現在の業務をどの程度続けるのか、業務の内容がどのようなものなのかに応じて、調整すればと。

何かの参考になれば。

id:bebit

意図をくんでいただいた上である程度の道筋も示していただきありがとうございます。

Effective C++は知らなかったのでぜひ読んでみたいと思います。

最初にVisualC++と名前の付いた本を読んで失敗した経験があるので,あらためて裏がとれた感じです。

2009/03/25 22:58:08
  • id:tdoi
    「VC++の話題でCの基本的な質問をしたり,Microsoftのフレームワークの話題とC++の話題が混在して誤解を生んでいる」

    とは具体的に何が気になるのでしょうか?


    VC++で開発を進める中では、Cの基本で躓く人、C++そのものを使いこなせない人、ATLやMFCなどのフレームワークを理解できない人、VC++のプロジェクトの設定などソフトとしての利用方法で悩む人など、さまざまです。

    掲示板などでは、確かにこれらの情報が混在しているでしょうが、それぞれが、独立でもないです。


    具体的に、これまでのJavaでの開発と比べて、こんなことを学ばなきゃいけないと思っているけれども、といったものが明確になれば、もう少し立ち入ったコメントもできるかもですが、そういうのはありますか?

  • id:bebit
    コメントありがとうございます。

    > Cの基本で躓く人、C++そのものを使いこなせない人、ATLやMFCなどのフレームワークを理解できない人、VC++のプロジェクトの設定などソフト...
    そうです!その通りです。

    JavaDocが周到に用意されたJavaからVC++開発に入ったところを想定してください。
    MFCのフレームワークを使って開発を始めると,一見Javaのように書けるように思います。
    しかし,ポインタを使って値を渡す場面や文字列を変数に移し替えるにも単純に=で代入ではなく,strcpyやmemcpyといったものがあります。

    単に慣れていないだけかもしれませんが,そのひとつひとつで躓いては調べて,なので時間をとってこの辺をある程度学べば見えてくるよ,というのを知りたいです。

    例示していただいた中でソフトの使い方はほとんど悩むことはなかったです。
  • id:pigment
    strcpyでハマるならここを見るといいかも
    http://msdn.microsoft.com/ja-jp/library/tsbaswba(VS.80).aspx

    ズラズラ書いてあるけど、こういうものがあるという一覧にはなっているし、
    VCではどうしなければいけないのかということが分かるはず

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません