• ベストアンサー

C++かAPI?

専門学校生で1年C言語とopenGLをやり、2年次プログラム専攻なのですが、他の言語にも興味がわきました。winAPI?は分かりやすいが使える部分が少ない、しかし仕組みを理解すると結構役立つ、というのをどこかで見たのですが時間的にもったいない寄り道になってしまうのでしょうか。それならc->C++という流れのほうがいいのでしょうか。 この二つの言語に絞った理由はCやった後の流れとしてとっつきやすいのかなと思ったからです。 勘違いしてる部分があると思いますが、ぜひ意見を聞かせてもらいたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がると申します。んっと、質問者さんが「プロを目指すのか」どうかにもよるのですが。一応立脚点を「お仕事としてプログラムをする」ことを前提に。 まずはC言語をしっかりと習熟しましょう。メモリ管理やポインタ周り、文字列処理をしっかりと。昨今、あらゆる言語を学ぶ上で「基礎になっている」といって過言ではありません。というか、このあたりをおろそかにしている限り「プロ」としては二流三流の壁から抜け出せません。 で、しっかりとできてから、次はC言語では学びにくい(無理ではありませんが)、オブジェクト指向を把握するために、オブジェクト言語を勉強しましょう。 お勧めはC++あるいはJava。C++はCからの流れで覚えやすいのですが、ちょっと「ベタ」な部分もあり、癖もあります。 Javaはオブジェクトとしてはとてもよいのですが、C言語からかなり世界観が変るのでちょっと戸惑う可能性と、あまりのクラスの多さに当てられてしまうかもしれません。 余裕があるなら C -> C++ -> Java って感じでしょうか。ちなみにC#は現実問題として「現在Windowsプラットフォーム以外ではほとんど用いられていない」ことなどから、あまりお勧めしません。っていうかJavaやってればすぐ分かります(ほとんどそっくりさんですから)。 で、まず間違いなく「オブジェクト指向による設計やらプログラミングやら」は、一度は頭を悩ませ、痛ませ、いらないものであると感じられるかと思います。 そのときは「ちゃんとオブジェクトが使えている人」に「なんで使わなきゃいけないの?」って聞いてみてください。オブジェクトは、かなり多くの人が引っかかって脱却できない「壁」になることが多いので。 Win32APIは言語ではないので。もしWindows系プログラマをやるなら…一度はあたっておくべきでしょうが、そろそろ.netを基準に考えたほうが良いかもしれません。 逆にUNIX系をやるのであれば、システムコールの類をしっかりといじくり倒しておきましょう。 何はともあれ。「言語ができるようになった」時点で「スタートライン」です。その後の精進を是非忘れず、頑張ってください。

eallendir
質問者

お礼

がるさんお返事ありがとうございます。質問文で、C言語をやり~などと後ろめたい気持ちで書いていましたが正にそこをつかれました。C言語習うには習ったけどもやはり使いこなせた感はありません・・・。やはり基礎であるC言語自体を分かったフリで通っていいわけないですよね。復習したいと思います。 そしてやはり・・・オブジェクト指向なのですね。どういうものなのかさっぱりイメージはできていませんが’壁’であることは何となく知っていました。 余裕があるなら>> なるほど、その流れが理解しやすいのですね。 .net > とは何でしょう。関係ないかもしれませんがvisual stadioというソフトをちょっと調べてた時も.netてのがありましたがネットで使うプログラミングなのかな?というイメージで、全く知りません。 Windows系プログラマなのかUNIX系プログラマなのか、それもイメージできません。学校選びの段階から、興味がある分野というだけで選んだ所で、そこでプログラミングを知り、言語に興味をもち始めたばかりという本当に知識が無いのです・・。プログラマという職業自体何をどんな言語で作っているのか、というのも想像できていないので言語の選択も何を選んだら就職、また就職後に最良なのか(愚問ですが)分からないです。 OSもどちらを選んでやるとどういう利点と欠点がプログラミングにおいて出るのかもわかりませんが、学校ではUNIXのviエディタを使ってプログラミングしています。UNIXの授業も当然あるのですが、そちらは全く興味がわかず取り組む姿勢も随分怠けてしまったのであまり理解できている部分はありません・・。 Cの復習をし、その後関連書籍などを見てC++やJavaに挑戦したいと思います。 ちなみにお勧めの書籍があれば教えてほしいです。 分からない、という事だらけですみません。 長文失礼しました。

その他の回答 (4)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.5

がるです。いくつか補足などを。 C言語を履修されるのであれば、前述もいたしましたが、ポインタとメモリ管理周りを特にしっかりとされることをお勧めします。 オブジェクト指向を視野に入れて、構造体もしっかりと把握しておくとグッドです。 で、オブジェクト指向は…ぶっちゃけ「業務で必要性を感じてから」が本当のスタートラインであるように思われます。 まぁ、壁にぶつかった時点でまた質問など投げていただければ、って感じでしょうか。 .netは、MSが出しているフレームワークです。クラス群という見方をして、当面は差し支えないかと。 で、ターゲットOSがとりあえず決まっていないのであれば、まずは基礎をしっかりと。後は個人的見解で恐縮ですが、UNIX -> Windowsのほうが、割合に履修しやすいように感じます。 書籍については、一度書店で「嫌っていうほど」大量に斜め読みの立ち読みをしてみていくとよいかと思います。 以上、なにか参考になればよいのですが。

eallendir
質問者

お礼

嫌っていうほど>> 実はこの回答を見る前に書店に行って色々みてきたのですが、あまり大きくない書店だったので数冊しか置いておらずその中で選ぶのもまずいかなと思ってやめておきました。 またamazonでC言語関連の本のレビューなどを見て、自分では演習が足らないと思っているので「解きながら学ぶC言語」という本が良さそうに感じました。 しかしポインタとメモリ管理が、先を考えるととても重要なんですね。ポインタなんてそれだけの本もあるようですし。その重要性も忘れないように復習したいと思います。 立ち読みでさらっと読んだだけでまた勘違いかもしれないですが、クラスというのはCの構造体のようなものでその中に関数もメンバとして入れられる、それを定義したもので、それを使えるように存在させたものがオブジェクトなのかなと思いました。構造体の扱い方なども重要そうですね。 UNIX>Windowsですか。確かに学校でも「仕事場がWindowsだけで動いてるわけじゃないぞ」と言われてるので必要なのかなと思いUNIXではありませんがKnopixというのをやってみようと思ったのですが、どうもうまくいかず・・。なのでvisualstadioと言うソフトのアカデミックというのを購入しWindowsでやろうかと検討していました。とりあえずはタダのvisualc++expressというのをDLしてみました。 また質問でも> 親身に回答してくださりありがとうございます。

  • ac_2000
  • ベストアンサー率10% (9/87)
回答No.4

おっと、ごめん。専門学校生(もうすぐ2年?)だったね。授業で数十時間C言語をかじっただけということだね。そんなんでオブジェクト指向なんて無理だわ。C#をしらないとか、.netを知らないとか、コンピュータに関わる動向にも興味がないみたいだし。C++、C#、Javaなんて無理無理。C言語をもっとちゃんと勉強しなさい。それこそがもっとも将来役に立つ。ひとつの言語を深く学び身に着けていれば新しい言語の文法なんて数日で身につく。ひとつの言語を深くやるほうが大切。 C言語でくだらないコマンドラインのおもちゃを作ってもつまらないから、CGIを作るのがおすすめ。CGIならマン-マシンインタフェースとしてWebを使えるから、HTMLで簡単。

eallendir
質問者

お礼

知識がない上にただ興味がわいただけで質問してすみませんでした。C言語、特に演習が足りてないと思うのでそういった書籍を参考に復習したいと思います。 お返事ありがとうございました。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

 C言語ばりばりという事なのでこういう表現するするが、WinAPIはもっとも単純に言うと「Windowsを操作するための関数群」だ。  元々CやC++でアプリを組むというのは、ターゲットとなるシステムにあわせてライブラリを使う。標準Cライブラリでコンソールプログラム、OpenGLでグラフィックを操作するプログラム、WinAPIでWindowsを操作するプログラム。この点において究極のところC言語とC++言語はまったく変わりが無い。言語仕様が違うだけだ。  つまり、WinAPIに行く、というのは「C言語は覚えた、OpenGLの関数群も覚えた、さぁ次はWinAPIでも叩いてみるか」という風に、ライブラリを変更するという話だ。OpenGLだって「Open(オープンソースの)G(グラフィック)L(ライブラリ)」でしょ?  これに対して、C→C++というのは言語を変更するというお話。  ところで、「1.C++に興味が湧いた」のか、「2.C言語に飽きた(と言ったら語弊があるかも知れないが)のでC以外もやってみたい」のか、量りかねているところだ。 1→前述の通り、WinAPIはライブラリなので、C++に行くかどうかとはあまり関係のない話だと思う。将来、C++屋になりたいというのであれば、WinAPIは無理して通る程のものでもないと個人的には思う。まぁ、「ライブラリ構築の仕方」としてはある程度参考になるかも知れない。C++の前にオブジェクト指向の基礎を学んでおくと良いだろう。 2→どうせ別の事をやるなら生C言語とは理念もジャンルも違うサーバサイドJavaなんてどうだろう。今後も講義でCを進めていくなら、個人的には別ジャンルの事をやる方が見聞も広がろうというものだ。

eallendir
質問者

お礼

お返事ありがとうございます。そしていまいち掴めないプログラミング言語の体系をわかりやすく噛み砕いて説明していただきありがとうございます。 1,2とありますが、多分どちらでもない感じです・・。C言語に飽きたなど言えるほど使いこなせてはいないし、かといっていきなりC++に興味がわいたわけでなく、C言語という一つの言語をとりあえず授業としては習い終わり、他の言語があるという事に気づき単純に他の言語の存在に興味がわいたのです。 C++が選択肢として出たのは、ここの掲示板でWindowsソフトの90%はc++でできている、というのを見てそれほどまでに重要な言語なのかと最近知ったからです。また、学校で提出する作品作り(どういう事を学び、何を作れるのかまだわかりませんが)に使える言語なんじゃないか、という漠然としたイメージもありました。 またJAVAも聞いた事がある、ネット上で動くアプリケーションなんだったかな?程度の知識であまりピンときていませんでしたがやはり重要な言語なのですね。 選択肢に入れ考え直してみます。

  • ac_2000
  • ベストアンサー率10% (9/87)
回答No.1

Cに染まる前にオブジェクト指向を身につけてしまったほうがいい。 C#とかJavaって選択肢はないのかな? C++をやらなければならない特別な理由がないなら、C#かJavaがお勧め。メモリ管理などのテクニカルなことに囚われずに、機能の実装に集中できるから。

eallendir
質問者

お礼

お返事ありがとうございます。 やはりCの後はオブジェクト指向というのが次のステップなのですね。c#はどういうものなのか全くしらなかったので選択肢に入りませんでした。javaなど機能の実装が主なのですね。

関連するQ&A

  • WinAPI、DirectXの本

    4月で専門学校2年生になるんですが、2年次からDirectXとWinAPIの授業があるようなので予習をしておこうと思ったのですが、たくさん本があってどれがいいのか分かりません。 皆さんはどういった本でこれらを勉強してきたのでしょうか。 両方とも全く触れてこなかったので入門レベルで、分かりやすい良い本を紹介して欲しいです。 ちなみに1年次はOpenGLとCをやっていました。

  • WinAPIでCGは可能か

    大学で三角形メッシュやCGを勉強するかもしれないのですが 私の大学ではOpenGLを用いて計算機実験をするらしいです. ですが 私は、WinAPIをc言語で書く事の方が慣れているので そっちで計算機実験をしたいという気持ちがあるのですが WinAPIだと何か不足な自体が起こり得るのでしょうか? 又は OpenGLだと使い易いなどの利点があるのでしょうか? 使い易さや、機能の面でWinAPIだと大変と分かったら、潔くOpenGLを勉強するつもりです...

  • RSAのCプログラム

    何かC言語で書かれたRSAの一連の流れを示したものはありますか?Googleでプログラムを探しているのですがどうしてもみつかりません。プログラムとして、単純なものでよいです。ある平文に対して、はじめに2つの素数を見つけ(p,q)、鍵を生成し、暗号化をして、それを復号するというような一連の流れをC言語で見てみたいのでプログラムがありましたら教えてください。お願いします。

  • C言語の解読

    C言語は、まったく未経験でソフトだけは持っています。教えてgooで "OS" や "google" はC言語で書かれている。大概のプログラムはC言語で書ける。というので興味があります。しかし、今からC言語の仕事をする自信はありません。C言語で書かれているプログラムの内容を理解するにはどのくらい時間がかかるのでしょうか?どこかでOSのソースを見ることなどできないでしょうか?

  • C言語でTIFファイルを読み込むプログラムを教えてください。

    C言語でTIFファイルを読み込むプログラムを教えてください。 C言語でTIFファイルを読み込むプログラムを組みたいのですが、テキストや参考書、ネットで調べてもよく分かりません。 もしお分かりになるのでしたらプログラムの一連の流れ(ソースプログラムも書いていただけるとなおさら嬉しいです)を教えていただけると助かります><

  • C言語の勉強について

    C言語の勉強について わたしは、前からC言語に興味を持っており入門書を買って勉強しました。 基本的なことは理解できましたが、これからどうすればいいのかわからなくなってしまいました Cに興味を持つ前はHSPをしていたのですが、これはさすがにプログラムの基本さえわかっていれば ヘルプを開き自分で考えて、だいぶ本格的ななゲームも作れたのですが、Cは思ったとおりに行かなくて そもそも、コマンドプロンプトから実行するプログラムしかわからないのですが みなさんは、私くらいのころはどんなことをしていましたか? ひたすらプログラムを書いていましたか? それとwindowsアプリケーションの開発はもっと後になりますか? C言語ではどんなソフトを作ったりしたことがありますか?

  • C++とWIN32APIとゲームプログラミング

    WINDOWSで動くゲームを作りたくて3日ほど前からC++の勉強を始めました。 (最終的にはグラディウスのような横スクロールシューティングが作りたいです。) そこで質問なんですが 1、Win32APIについて調べるとC言語を使っての入門サイトばかりがヒットします。 Win32APIはC言語で書くものなんでしょうか? そうなってくると今WindowsのGUIアプリを作るのにC++を勉強していますが無駄ってことでしょうか? 例: 猫でもわかるプログラミング http://www.kumei.ne.jp/c_lang/index.html Win32API入門 http://wisdom.sakura.ne.jp/system/winapi/win32/index.html ちなみに今学習に利用しているサイトは以下のサイトです。 C++入門 http://www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html 2、ポインタの概念について ポインタのイメージですが値を格納している場所みたいな感じで大方あってますでしょうか? 僕は組み込み系をやっているのでアセンブラにどっぷり漬かっています。 なんていうかレジスタの番地がポインタに該当するのかなって思っています。 ↓みたいなイメージで考えています。 ポインタ=データの場所=レジスタ番地 これであってますか? 3、まだGUIには進んでませんがウインドウのメニュー(ファイル、編集等)を作るのにリソースファイルも作るって説明が上記ページ(猫でもわかる)に書いてましたがリソーススクリプトとかヘッダーもプログラム言語とは別に勉強する必要があるんでしょうか? 4、C++のクラス概念について クラスとは複数の関数をひとまとめにしてグループ管理(おおざっぱに言うとサブルーチンの集まり的な)するようなものってイメージであってますか? 5、WindowのGUIアプリのプログラムの概要ですが各オブジェクト(ウインドウやボタン、マウスポインタ等)に対して「クリックされた」とかのアクションに対して動作するプログラムを書くって事でいいんでしょうか? 6、お勧めの参考書籍について 今までアセンブラをはじめPerlやJavaScript、C言語のお勧め入門書をいろんなサイトのレビューを見て買いましたが本よりネットの入門サイトのほうがかなり役にたってきました。それでも入門書を買うのは気持ち的に安心するからなんですが・・・ それを踏まえた上で僕の最終的な目的にあうような本があったら是非教えてください。 7、勉強の進め方や「合わせてこれも勉強しろ」っていう項目があれば教えてください。 現状としては 「C++の基礎(必要ですか?)」→「Win32API」→「DirectX」で行こうと思っています。

  • 基礎からC・C++を学習し、DirectXへの道

    私はゲームにおけるプログラミングを理解したく、C・C++を勉強したいと思っています。 しかしC言語についてはまったく知識がありません。過去にBASICで音楽をつくったりEXCELでVBAをいじった程度のド素人です。 いちおうゲームに関する技術は一通り理解しています。CGソフトでのモデリング、マッピング、アニメーションもできます。 専門用語になりますが、いちばんできるようになりたいのは「シェーダの作成」です。レンダリング部分を自在にいじれるようになりたいのです。 このような状況で、C・C++を学習するにはどうしたらよいでしょうか?私は普段は会社勤めですのでできれば都内で学習できる学校に通いたいと思っています。 ゲーム全般の学習ができなくても、C・C++がある程度理解できるようになれば、あとはDirectXやOpenGL、Cgfxなどの専門書で理解できるのでしょうか? Cの基礎からの学習方法だけのアドバイスでもかまいません。よろしくお願いします。

  • C言語とJavaの同時学習

    拝見してくださった方、ありがとうございます。 プログラミング言語についての質問です。 知識のある方&経験者にお聞きしたいのですが、 CとJava、Rubyの同時学習は出来るものでしょうか? 当方高等専門学校、情報系の学科に在籍しており 必修科目でCとRubyは単位を取得しなければなりません。 3年次に在籍しているのでCの基礎知識はあるのですが、 CとRubyはあまり興味が持てません……(-_-;) そこで他の言語を色々調べてみたところ、Javaに興味が湧いてきました。 全てしっかり調べた訳ではありませんが、RubyとJavaは同じオブジェクト指向言語という事で 同時学習も可能かな?と考えています。 流石に3つしっかり進めるのは恐らく力量と時間が不足するので、 Androidアプリ等開発してみたいので、Javaを専門的にやってみたいのです。 しかし、必修科目に含まれているためCとRubyもそこそこ同時に学習しなければなりません……。 知識や認識が足りない浅慮だとは思いますが やった方がいいと思われる順番、手順等ありましたらご教授下さい。

  • C言語で一定時間実行し、時間が経過したら処理を終わらせるには?

    今C言語でOpenGLを用いて図形を表示させるプログラムを書いています。 一定時間(例えば5秒)だけ画像を表示させ、 時間が過ぎらたらその画像をけし、 何も描いてないウィンドウだけ表示させるようにさせたいのですが、 プログラミングは全くの初心者で、どうすればいいのかわからず 困っています。 どなたか教えていただけないでしょうか。 出来れば関数名だけでなく、サンプルプログラムなどで 教えていただければ幸いです。 すみません、宜しくお願いします。

専門家に質問してみよう