- ベストアンサー
C言語上級者になるための学習方法をご教授ください。
はじめまして。 私はC言語はある程度できるようになり、業務でも多少デバッグ/メンテナンスを行っているレベルです。 業務では0からソースを書いたことがなく、人の書いたソースのデバックなどで、まだ真にソースコードを書く力、読む力がついていません。 何かそこそこの大きさの規模のプログラムを自分で作成したり、人のソースコードを解析したりして力をつけたいと思っています。 しかし、ネット上で検索してみても、C言語入門のようなサイトなどしか見当たらなく、数十ステップ程の課題などしか発見できません。 何か程よく参考になりそうなソースコードなどを紹介しているサイトや、こんなものを作ってみればなどの情報などがございましたら ご教授頂きたいと思います。 抽象的で申し訳ありませんがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ここのサイトなどどうでしょう?使えそうなプログラムもありそうですし、ソースサイズも大きいとおもいます。(じつは私も先日知ったばかりで、詳しくはない) http://sourceforge.jp/ 上記に登録されている、興味あるプログラムのソースが解読できるまでに、様々な知識が必要になると思います。UnixやCの書籍を何冊か購入しないとダメかもしれませんね。日本語処理だけでも一冊の本になるくらいですし。 私の場合、一般人がインターネット使えないころ、有名なストールマンのGnuライブラリが収録されたテープカートリッジを宅配で送ってもらい、テープからSunのワークステーションにソースを落として、なんとかコンパイルが通るようにソースやMakefileを修正したりする作業とかで覚えました。(膨大なSunのマニュアルには圧倒されました。) なんにしても、書籍を読むだけじゃあダメで、大きめのソース読んで、機能拡張などの修正作業やって、そこで「あれ?コンパイルエラーになるなあ?」とか「ちゃんと動作してくれない」って、実際に手を動かさないとダメみたいですね。 なお、LinuxをPCに開発環境とソースとともにインストールすると、膨大なC言語やC++のソースがインストールされるので、それを読んでみるのもいいと思いますよ。 お勧めの1冊は、アスキー出版の「エキスパートCプログラミング --知られざるCの深層」です。目からウロコの内容です。
その他の回答 (2)
- entree
- ベストアンサー率55% (405/735)
> 何か程よく参考になりそうなソースコードなどを紹介しているサイトや、 読む力を付けたいのであれば、GNU のサイトを参照しただけでも読み切れ ない位のオープンソースが転がっています。 http://ftp.gnu.org/gnu/ 中でも coreutils、findutils、grep、libiconv、gettext、glibc あたり のソースを、あらかじめ機能を確認した上で読んでみると結構いいかもし れません。(main から読む必要はないです) > こんなものを作ってみればなど オセロプログラム (AI機能までは実装しない) を作る課題が大学の授業 などで出題されているのを何度か目にしたことがあります。 ・板の状態を表示する ・人間が場所を指定したところに打って石を返す。 ・双方が打てなくなったら試合を終了して結果を表示する。 ライブラリをほとんど使わないので知識はあまり身に付きませんが、「制 御構造」、「ポインタ」、「構造体」の理解度を確かめることくらいはで きると思います。
お礼
ありがとうございます。 http://ftp.gnu.org/gnu/ 見てみます。 オセロプログラムですか、おもしろそうです。 さっそく作ってみます!
- don_go
- ベストアンサー率31% (336/1059)
「学問に王道無し」 一気に上級者になれる方法はありません。 素人→初心者→初級者→中級者→上級者 と順に経験を 積み重ねて実力を上げていく必要があります。 現在している事すら十分に理解できていない状態で あれこれと手を伸ばすのは、かえって混乱を招く結果に しかなりません。 まずは、目の前にある物を確実にこなしていく事が大事 です。 >今人の書いたソースのデバックなどで、まだ真に >ソースコードを書く力、読む力がついていません。 デバッグをしているのであれば、ソースコードを読む 機会があると思いますが、まずはそのソースコードを 読む練習から始めてはどうでしょうか? もちろん最初の内から全てを読めるとは限りませんので 短い関数の解析から順にできる範囲で... それを続けていけば、やがては長いプログラムでも容易 に読めるようになり、自分でも書ける様になります。 学ぶ事は手近な見本を真似る事から始めましょう。
お礼
回答ありがとうございます。 積極的に吸収して行こうと思います。
お礼
回答ありがとうございます。 Linuxのソースコードですか。一度読んでみようと思ったのですが、 私にはまだ大きすぎでどこから読んでよいものかと困ってしまいました。 ですがやはり手を動かさなきゃ駄目なんですね!