- ベストアンサー
本格的にCプログラミングができるようになるまで
大学生です。大学ではまだ授業がありませんので、独学でC言語のプログラミングを勉強しています。C言語の文法を一通り理解し、ポインタに関しても1冊読んで理解しました(つもりです)。 C言語を教えている先生に個人的に、今後何を勉強すべきか聞いたところ、「いろんなアルゴリズムとかデータ構造を覚えるといい」と言ってくださいました。しかし、私には難しい事項ばかりで、「これらを勉強する意味は何なのか?」という疑問もあります。 また、オープンソースになっているプログラムを見ると、私のレベルを遥かに超えたものばかりで、読んでもさっぱりです。さらに、GUIツールキットの使い方なんかはもちろん、ライブラリの使い方や作り方、ソースを複数ファイルに分割する方法すら知らないことに気づきました(恥ずかしい限りです)。 独学を始めた頃は、「C言語をマスターすればソフトが作れるようになるんだろう」程度の認識でした。しかしここに来て、あまりにも多くの事項を学ばねばならない気がしてきました。「演習あるのみ」と仰る方もいますが、何を演習すればいいのかも分かりません。 一人前にプログラムが書けるようになるまでには、何をしなければならないのでしょうか。目的や理由も添えていただけると嬉しいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんにちは。 実際にアプリを開発してみてはどうでしょうか? 本に書かれている例題程度のものではなく、もっと大規模のものを。 そしてそのアプリを開発するにあたり ・どのような処理の流れにすれば実現するか ・実現するにあたり必要な情報は何か を大まかに決めます。 次に大まかに決めた各処理を実現するにあたり ・どのような処理の流れにすれば実現するか ・実現するにあたり必要な情報は何か ・考えられるエラーとその回避方法 を決めます。 この操作を何回も行って各処理を細かい単位していきます。 分かると思いますが、ここまでの操作はプログラム設計になります。 あとは ・どの処理系で実現するか ・どの言語で実現するか を考えていきます。 あとはプログラムを組んでいきます。ここはコーディングです。 そうする中でおのずと必要な本がわかります。 いきなり専門書を読んでいくより理解が早いと思います。 またC言語がアプリ開発を実現する為のコーディングにおける 一手段に過ぎないことがわかると思います。 ご参考までに。
その他の回答 (5)
- turukame2005
- ベストアンサー率24% (173/720)
ANo.5です。 ごめんなさい。 「.NET/CLI」」ではなく、「C++/CLI」です。 たいへん失礼しました。
お礼
C++/CLIですね。お手数お掛けして申し訳ございません。 ありがとうございました。
- turukame2005
- ベストアンサー率24% (173/720)
「アルゴリズムとかデータ構造」は、もっとずっと先の話です。 一口に「C」といいますが、ざっと並べて、「C言語」、「C++」、「VC++(SDK)」、「VC++(MFC)」、「.NET/CLI」と、これだけあります。 どれを勉強するか、決まっていますか。 このうち「.NET/CLI」の実体はVBですので、これをやるならVBを勉強をしたほうがいいと思いますが、その他は基本的な部分は同じモノで、右に行くほど「発展形」になります。 逆に言うと「ツブシが利かなく」なります。 基本は「C++」で、これなら「プログラミングとは何なのか」を、たっぷり理解できます。 個人的意見ですが、「C」は、ちょっと古いような気がします。 まず先生に相談するなら、その部分だと思うのです。 もし「C」と決まっているなら、ここまでは読み飛ばしてください。 プログラミングというのは、入口のハードルは高いのですが、ある程度分かると、案外すいすい行くものです。 「なにが分かっていないか」が理解できるようになると、調べ方も分かりますし、中級者くらいの自己満足は得られます。 まずはしっかりした参考書に金を惜しまず、掲載されているコードをきっちり理解しましょう。 最初はみんな初心者なのです。
お礼
学校では主に、C言語そのものを使って講義も実験や演習も、そして研究もするそうです。でも、C++あたりを学びながらオブジェクト指向の考え方などを学んでいくのがいいのかもしれませんね。 何が分かってないのかだんだん見えてきた・・・ような気もしますが、図書館、書店やネットでいい書籍を探しても、意外にみつからないんですよね。。。まずは調べ方からですね。 ありがとうございました。
- a-saitoh
- ベストアンサー率30% (524/1722)
プログラミングには5つの要素があります. 0.アルゴリズムなど,言語に依存しない,プログラミングの知識 1.言語の知識 2.処理系の知識 3.ツールキットやライブラリの知識 4.対象領域の知識 1.これは最低限は本を読めばいいです. 2.VisualC++を使う場合とTurboC++を使う場合とUNIXでmakeを使う場合はそれぞれ結構違います. C言語を知っていてもCコンパイラの使い方を知らないと何もできません. 3 プログラムはC言語だけで書くのではありません.OSのAPIや,ツールキットなど,既存のものを呼び出して使うというコトの方が多いのです.当然,それらについても知らなければなりません.そういうわけですから,たとえば,UNIXのCプログラムの達人でもWindows用のアプリを書かせたらさっぱり駄目なのが当然です. 4. 3Dグラフィックプログラムならアフィン変換とかの画像関係の理論を,会計プログラムを書きたければ会計の知識,とプログラムの対象領域の知識もなければ駄目です. とりあえず,質問者様は上記の1の初歩ができたところみたいですから,0,2,3あたりに取り組んではどうでしょうか.
お礼
必要な知識はこうやって分類されるんですね。 なかなか図書館や書店へ行っても、こういった本を見過ごしていて、0や1の本ばかり探してます。コンパイラについて詳しく書かれた本なんて一度も・・・。もっともっと幅広い知識をつけようと思います。でもこうして体系化していただけると、次はこれを学ぼう!って思えるので助かります。 もしよろしければ、2や3に関してお薦めの書籍等ありましたら教えてください。主にLinuxでGCCを使っています。 ありがとうございました。
- Tasuke22
- ベストアンサー率33% (1799/5383)
本気になって書くと本一冊になってしまいますが。 私はプログラミングは大きく2つの意味があると思っ ています。 1)業務の自動化(誰もが考える当然の内容ですね これには大きく、ゲームの実現も含めます。 まあ、人間がなるべく手を下さず、色々なことが 出来たり楽しんだりすることです。 2)プログラミングの自動化 自動化は理想目的ですが、その途中段階に同じ部 品は作らない、とか、エラーの出難いコードにする とか、プログラミングそのものに関するテーマで す。 例えば、ソフトウェアの世界で最大に貢献した(と 私が思っている)オブジェクト指向は(2)のテーマか ら生まれています。何故、オブジェクト指向が必要な のか、オブジェクト指向以前はどうだったのか、などの 勉強も大きいでしょう。 コードの勉強はテーマが思いつかないと話にならない ので本に頼ります。例えばC++パワフルテクニックとか 細かいテーマが幾つもありコードと解説があります。 これを真似て、自分の手でパンチして実行し、パンチミ スを修正し、などの作業だけでも随分伸びると思います。 これらはテーマそのものが大切で、ベテランと思われる 人が行なっても、良かったな、と思うところがあります。 自分でテーマが思い付く様になると、一応プログラム言 語で話が出来るようになったと言えるでしょう。 図書室に行けば本は幾らでもあるでしょう。 どのような方面のシステムを作りたいかは知りませんが、 業務で、クライアント-サーバ型のシステムでは、今私が 流行していると思うのが、 HTML+JavaScript+PHP+MySQLの基本組合わせです。 これらをセットで環境をつくるのがxamppです。 容易にクライアント-サーバ型のインターネットタイプの 開発環境が実現します。 JavaScriptもPHPもC++に非常に似た言語なのでとっつき 易いでしょう。GUIとかあまり考えなくてもいいでしょう。 あまり長くなってきたので止めます。どっちみち、書き 切れないですね。
お礼
なるほど・・・プログラミングの意味といったら、(1)に該当することしか考えたことがありませんでした。 テーマが思い浮かばないというのも辛いです。初心者向けの書籍は「関数とは、構造体とは・・・」、それを超えた本は難解なもの、と別れてしまっています。教えていただいた本も書店で探してみます。 でも、浮かんだプログラムが書ける日までは遠そうですね・・・。 ありがとうございました。
- cell2jp
- ベストアンサー率0% (0/2)
昔の自分を見ているようで共感します・・(ww アルゴリズムの勉強とか、必要になったときに、勉強すればいいのですよ。 学校の先生は真面目な意見しかくれないと思います。 基本的な知識が付いたのなら色んなソフトやゲームを作ってみるのが一番です。 ゲームを作ることとか興味ありますか? http://l.huu.cc/g/ 今のあなたならこの辺を見たらきっとすぐゲームが作れるようになると思いますよ。 ここは掲示板で質問するとことこまかく答えてくれるので 何か躓いた時にも安心です。 後、windowsプログラミングとか手前味噌ですが 猫でもわかるC言語 http://www.kumei.ne.jp/c_lang/ とかどうでしょうか。
お礼
皆さんも通る道だと思うと何だか安心します^^ ゲームなんかが作れるようになったら嬉しいですね。しかもそんなに遠くない道のりみたいですね。当方Windowsが使えないのが残念ですが、他にもサイトや書籍を自分で探して、触ってみたいと思います。 ありがとうございました。
お礼
頑張っていろいろ作ろうとはするんですが…いつでも挫折してしまうんですよねえ。コンパイルエラーも出ないし、何も間違ってない(ように見える)のに、きちんと実行されない場合とかあって。 でも、何もしないより頑張ってみます。コーディング以外の作業にも慣れていきたいと思います。 ありがとうございました。