- ベストアンサー
C++かAPI?
専門学校生で1年C言語とopenGLをやり、2年次プログラム専攻なのですが、他の言語にも興味がわきました。winAPI?は分かりやすいが使える部分が少ない、しかし仕組みを理解すると結構役立つ、というのをどこかで見たのですが時間的にもったいない寄り道になってしまうのでしょうか。それならc->C++という流れのほうがいいのでしょうか。 この二つの言語に絞った理由はCやった後の流れとしてとっつきやすいのかなと思ったからです。 勘違いしてる部分があると思いますが、ぜひ意見を聞かせてもらいたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
がると申します。んっと、質問者さんが「プロを目指すのか」どうかにもよるのですが。一応立脚点を「お仕事としてプログラムをする」ことを前提に。 まずはC言語をしっかりと習熟しましょう。メモリ管理やポインタ周り、文字列処理をしっかりと。昨今、あらゆる言語を学ぶ上で「基礎になっている」といって過言ではありません。というか、このあたりをおろそかにしている限り「プロ」としては二流三流の壁から抜け出せません。 で、しっかりとできてから、次はC言語では学びにくい(無理ではありませんが)、オブジェクト指向を把握するために、オブジェクト言語を勉強しましょう。 お勧めはC++あるいはJava。C++はCからの流れで覚えやすいのですが、ちょっと「ベタ」な部分もあり、癖もあります。 Javaはオブジェクトとしてはとてもよいのですが、C言語からかなり世界観が変るのでちょっと戸惑う可能性と、あまりのクラスの多さに当てられてしまうかもしれません。 余裕があるなら C -> C++ -> Java って感じでしょうか。ちなみにC#は現実問題として「現在Windowsプラットフォーム以外ではほとんど用いられていない」ことなどから、あまりお勧めしません。っていうかJavaやってればすぐ分かります(ほとんどそっくりさんですから)。 で、まず間違いなく「オブジェクト指向による設計やらプログラミングやら」は、一度は頭を悩ませ、痛ませ、いらないものであると感じられるかと思います。 そのときは「ちゃんとオブジェクトが使えている人」に「なんで使わなきゃいけないの?」って聞いてみてください。オブジェクトは、かなり多くの人が引っかかって脱却できない「壁」になることが多いので。 Win32APIは言語ではないので。もしWindows系プログラマをやるなら…一度はあたっておくべきでしょうが、そろそろ.netを基準に考えたほうが良いかもしれません。 逆にUNIX系をやるのであれば、システムコールの類をしっかりといじくり倒しておきましょう。 何はともあれ。「言語ができるようになった」時点で「スタートライン」です。その後の精進を是非忘れず、頑張ってください。
その他の回答 (4)
- galluda
- ベストアンサー率35% (440/1242)
がるです。いくつか補足などを。 C言語を履修されるのであれば、前述もいたしましたが、ポインタとメモリ管理周りを特にしっかりとされることをお勧めします。 オブジェクト指向を視野に入れて、構造体もしっかりと把握しておくとグッドです。 で、オブジェクト指向は…ぶっちゃけ「業務で必要性を感じてから」が本当のスタートラインであるように思われます。 まぁ、壁にぶつかった時点でまた質問など投げていただければ、って感じでしょうか。 .netは、MSが出しているフレームワークです。クラス群という見方をして、当面は差し支えないかと。 で、ターゲットOSがとりあえず決まっていないのであれば、まずは基礎をしっかりと。後は個人的見解で恐縮ですが、UNIX -> Windowsのほうが、割合に履修しやすいように感じます。 書籍については、一度書店で「嫌っていうほど」大量に斜め読みの立ち読みをしてみていくとよいかと思います。 以上、なにか参考になればよいのですが。
お礼
嫌っていうほど>> 実はこの回答を見る前に書店に行って色々みてきたのですが、あまり大きくない書店だったので数冊しか置いておらずその中で選ぶのもまずいかなと思ってやめておきました。 またamazonでC言語関連の本のレビューなどを見て、自分では演習が足らないと思っているので「解きながら学ぶC言語」という本が良さそうに感じました。 しかしポインタとメモリ管理が、先を考えるととても重要なんですね。ポインタなんてそれだけの本もあるようですし。その重要性も忘れないように復習したいと思います。 立ち読みでさらっと読んだだけでまた勘違いかもしれないですが、クラスというのはCの構造体のようなものでその中に関数もメンバとして入れられる、それを定義したもので、それを使えるように存在させたものがオブジェクトなのかなと思いました。構造体の扱い方なども重要そうですね。 UNIX>Windowsですか。確かに学校でも「仕事場がWindowsだけで動いてるわけじゃないぞ」と言われてるので必要なのかなと思いUNIXではありませんがKnopixというのをやってみようと思ったのですが、どうもうまくいかず・・。なのでvisualstadioと言うソフトのアカデミックというのを購入しWindowsでやろうかと検討していました。とりあえずはタダのvisualc++expressというのをDLしてみました。 また質問でも> 親身に回答してくださりありがとうございます。
- ac_2000
- ベストアンサー率10% (9/87)
おっと、ごめん。専門学校生(もうすぐ2年?)だったね。授業で数十時間C言語をかじっただけということだね。そんなんでオブジェクト指向なんて無理だわ。C#をしらないとか、.netを知らないとか、コンピュータに関わる動向にも興味がないみたいだし。C++、C#、Javaなんて無理無理。C言語をもっとちゃんと勉強しなさい。それこそがもっとも将来役に立つ。ひとつの言語を深く学び身に着けていれば新しい言語の文法なんて数日で身につく。ひとつの言語を深くやるほうが大切。 C言語でくだらないコマンドラインのおもちゃを作ってもつまらないから、CGIを作るのがおすすめ。CGIならマン-マシンインタフェースとしてWebを使えるから、HTMLで簡単。
お礼
知識がない上にただ興味がわいただけで質問してすみませんでした。C言語、特に演習が足りてないと思うのでそういった書籍を参考に復習したいと思います。 お返事ありがとうございました。
- anmochi
- ベストアンサー率65% (1332/2045)
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を進めていくなら、個人的には別ジャンルの事をやる方が見聞も広がろうというものだ。
お礼
お返事ありがとうございます。そしていまいち掴めないプログラミング言語の体系をわかりやすく噛み砕いて説明していただきありがとうございます。 1,2とありますが、多分どちらでもない感じです・・。C言語に飽きたなど言えるほど使いこなせてはいないし、かといっていきなりC++に興味がわいたわけでなく、C言語という一つの言語をとりあえず授業としては習い終わり、他の言語があるという事に気づき単純に他の言語の存在に興味がわいたのです。 C++が選択肢として出たのは、ここの掲示板でWindowsソフトの90%はc++でできている、というのを見てそれほどまでに重要な言語なのかと最近知ったからです。また、学校で提出する作品作り(どういう事を学び、何を作れるのかまだわかりませんが)に使える言語なんじゃないか、という漠然としたイメージもありました。 またJAVAも聞いた事がある、ネット上で動くアプリケーションなんだったかな?程度の知識であまりピンときていませんでしたがやはり重要な言語なのですね。 選択肢に入れ考え直してみます。
- ac_2000
- ベストアンサー率10% (9/87)
Cに染まる前にオブジェクト指向を身につけてしまったほうがいい。 C#とかJavaって選択肢はないのかな? C++をやらなければならない特別な理由がないなら、C#かJavaがお勧め。メモリ管理などのテクニカルなことに囚われずに、機能の実装に集中できるから。
お礼
お返事ありがとうございます。 やはりCの後はオブジェクト指向というのが次のステップなのですね。c#はどういうものなのか全くしらなかったので選択肢に入りませんでした。javaなど機能の実装が主なのですね。
お礼
がるさんお返事ありがとうございます。質問文で、C言語をやり~などと後ろめたい気持ちで書いていましたが正にそこをつかれました。C言語習うには習ったけどもやはり使いこなせた感はありません・・・。やはり基礎であるC言語自体を分かったフリで通っていいわけないですよね。復習したいと思います。 そしてやはり・・・オブジェクト指向なのですね。どういうものなのかさっぱりイメージはできていませんが’壁’であることは何となく知っていました。 余裕があるなら>> なるほど、その流れが理解しやすいのですね。 .net > とは何でしょう。関係ないかもしれませんがvisual stadioというソフトをちょっと調べてた時も.netてのがありましたがネットで使うプログラミングなのかな?というイメージで、全く知りません。 Windows系プログラマなのかUNIX系プログラマなのか、それもイメージできません。学校選びの段階から、興味がある分野というだけで選んだ所で、そこでプログラミングを知り、言語に興味をもち始めたばかりという本当に知識が無いのです・・。プログラマという職業自体何をどんな言語で作っているのか、というのも想像できていないので言語の選択も何を選んだら就職、また就職後に最良なのか(愚問ですが)分からないです。 OSもどちらを選んでやるとどういう利点と欠点がプログラミングにおいて出るのかもわかりませんが、学校ではUNIXのviエディタを使ってプログラミングしています。UNIXの授業も当然あるのですが、そちらは全く興味がわかず取り組む姿勢も随分怠けてしまったのであまり理解できている部分はありません・・。 Cの復習をし、その後関連書籍などを見てC++やJavaに挑戦したいと思います。 ちなみにお勧めの書籍があれば教えてほしいです。 分からない、という事だらけですみません。 長文失礼しました。