• ベストアンサー

C言語上級者になるための学習方法をご教授ください。

はじめまして。 私はC言語はある程度できるようになり、業務でも多少デバッグ/メンテナンスを行っているレベルです。 業務では0からソースを書いたことがなく、人の書いたソースのデバックなどで、まだ真にソースコードを書く力、読む力がついていません。 何かそこそこの大きさの規模のプログラムを自分で作成したり、人のソースコードを解析したりして力をつけたいと思っています。 しかし、ネット上で検索してみても、C言語入門のようなサイトなどしか見当たらなく、数十ステップ程の課題などしか発見できません。 何か程よく参考になりそうなソースコードなどを紹介しているサイトや、こんなものを作ってみればなどの情報などがございましたら ご教授頂きたいと思います。 抽象的で申し訳ありませんがよろしくお願いします。

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

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

ここのサイトなどどうでしょう?使えそうなプログラムもありそうですし、ソースサイズも大きいとおもいます。(じつは私も先日知ったばかりで、詳しくはない) http://sourceforge.jp/ 上記に登録されている、興味あるプログラムのソースが解読できるまでに、様々な知識が必要になると思います。UnixやCの書籍を何冊か購入しないとダメかもしれませんね。日本語処理だけでも一冊の本になるくらいですし。 私の場合、一般人がインターネット使えないころ、有名なストールマンのGnuライブラリが収録されたテープカートリッジを宅配で送ってもらい、テープからSunのワークステーションにソースを落として、なんとかコンパイルが通るようにソースやMakefileを修正したりする作業とかで覚えました。(膨大なSunのマニュアルには圧倒されました。) なんにしても、書籍を読むだけじゃあダメで、大きめのソース読んで、機能拡張などの修正作業やって、そこで「あれ?コンパイルエラーになるなあ?」とか「ちゃんと動作してくれない」って、実際に手を動かさないとダメみたいですね。 なお、LinuxをPCに開発環境とソースとともにインストールすると、膨大なC言語やC++のソースがインストールされるので、それを読んでみるのもいいと思いますよ。 お勧めの1冊は、アスキー出版の「エキスパートCプログラミング --知られざるCの深層」です。目からウロコの内容です。

yuiko_1456
質問者

お礼

回答ありがとうございます。 Linuxのソースコードですか。一度読んでみようと思ったのですが、 私にはまだ大きすぎでどこから読んでよいものかと困ってしまいました。 ですがやはり手を動かさなきゃ駄目なんですね!

その他の回答 (2)

  • entree
  • ベストアンサー率55% (405/735)
回答No.3

> 何か程よく参考になりそうなソースコードなどを紹介しているサイトや、 読む力を付けたいのであれば、GNU のサイトを参照しただけでも読み切れ ない位のオープンソースが転がっています。 http://ftp.gnu.org/gnu/ 中でも coreutils、findutils、grep、libiconv、gettext、glibc あたり のソースを、あらかじめ機能を確認した上で読んでみると結構いいかもし れません。(main から読む必要はないです) > こんなものを作ってみればなど オセロプログラム (AI機能までは実装しない) を作る課題が大学の授業 などで出題されているのを何度か目にしたことがあります。 ・板の状態を表示する ・人間が場所を指定したところに打って石を返す。 ・双方が打てなくなったら試合を終了して結果を表示する。 ライブラリをほとんど使わないので知識はあまり身に付きませんが、「制 御構造」、「ポインタ」、「構造体」の理解度を確かめることくらいはで きると思います。

yuiko_1456
質問者

お礼

ありがとうございます。 http://ftp.gnu.org/gnu/ 見てみます。 オセロプログラムですか、おもしろそうです。 さっそく作ってみます!

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

「学問に王道無し」 一気に上級者になれる方法はありません。 素人→初心者→初級者→中級者→上級者 と順に経験を 積み重ねて実力を上げていく必要があります。 現在している事すら十分に理解できていない状態で あれこれと手を伸ばすのは、かえって混乱を招く結果に しかなりません。 まずは、目の前にある物を確実にこなしていく事が大事 です。 >今人の書いたソースのデバックなどで、まだ真に >ソースコードを書く力、読む力がついていません。 デバッグをしているのであれば、ソースコードを読む 機会があると思いますが、まずはそのソースコードを 読む練習から始めてはどうでしょうか? もちろん最初の内から全てを読めるとは限りませんので 短い関数の解析から順にできる範囲で... それを続けていけば、やがては長いプログラムでも容易 に読めるようになり、自分でも書ける様になります。 学ぶ事は手近な見本を真似る事から始めましょう。

yuiko_1456
質問者

お礼

回答ありがとうございます。 積極的に吸収して行こうと思います。

関連するQ&A

  • C言語の上級者を目指したい。

     就職活動でソフト会社へ面接に行きました。 金融関係のプログラムをつくっている会社です。 そのとき社長さんから聞いた話です。 「学校を出たばかりの人にプログラムを書かせると100万口座の処理に3日もかかってしまうが、プロが書いたものは10分で処理できる。」 ポインタをしっかり勉強しておいて欲しいとの話でした。  結局、その会社は断りましたが自信をなくしてしまいました。 残りの1年はCをどのように勉強していけば良いでしょうか。 アドバイスをお願いします。  いまの私のレベルは基本情報処理技術者試験をC言語で合格しています。 勉強した本は下記の通りです。 (1) やさしいC ソフトバンク (2) 明解C言語入門 ソフトバンク (3) らくらく突破C言語 技術評論社 (4) 合格サポートC言語 一橋出版 (5) ポインタの極意 ソフトバンク (6) C言語によるアルゴリズムとデータ構造 ソフトバンク   ただし、(1)~(4)はサンプルコードを入力し演習問題も自力で解いてますが  (5)、(6)は一通り読んだだけです。

  • C言語 参考書

    こんばんは。いつもお世話になっております。 先日、明解C言語入門と猫でも分かるC言語入門を購入しました。 内容の方を見ていったのですが既に殆どを理解した内容でした。 この発展というか、もう少しステップアップした内容を勉強したいのですが、分かりやすいものなどありますでしょうか? 方向性としては、ウィンドウズプログラミングというか コンソールからステップアップしたようなものを希望しています。 実際にウィンドウを作成し、凄い簡単なメモ帳の作成を目指したりなど。 中級編の入門というか、そのようなものを探しています。 分かりやすい参考書などあればお教え願えますでしょうか。 じっくりと読みながら学びたいので、書籍を希望しています。

  • C言語の処理速度について

    こんにちは C言語を使い始めました。 あるコードで ソース(1):デバッグ用にログを多めに吐き出すようにしているソース。 ソース(2):ソース(1)からログ排出だけコメントアウトしたソース。 を作ってみました。 ですが、 ソース(1)で機能確認後、ソース(2)にすると途端に処理速度が遅くなります。 (1)(2)で実質的な違いはログ排出のみなのですが、理由が分からず困っています。 【質問】 C言語でログ排出だけカットしたソースの方が処理速度が異様に遅い。 この対処策を質問させて下さい。 もし同じ経験された方がおられましたら是非アドバイスを頂ければ幸いです。 よろしくお願いします。

  • C言語で入門の本を読んだあとはどうすればいでしょうか

    C言語で入門の本を読んだあとはどうすればいでしょうか ポインタ、構造体までできたのですが、次はどのステップに進めばよいでしょうか

  • C言語の学習環境について。

    C言語の学習環境について。 学校でC言語を習っているのですが、学校ではソースコードを秀丸エディタを使って編集しています。学校で使っているコンパイルソフトはvisual stdio2010です。 vscmd.bat というファイルからコマンドプロンプトを起動し、秀丸エディタでソースコードを編集し、コマンドプロンプト上で、clのコマンドでコンパイルして実行すると言うことをしています。 自宅でも同じことをしたいと思っておりまして、検索して調べてみたりしたのですがいまいちわかりません。 私は自宅のPCでは、テキストエディタはTeraPadを使いたいと思っており、コンパイルソフトはvisua stdio2008、OSはwindows7です どうすればいいのでしょうか?どなたかご教授お願いします。

  • PICマイコンでC言語のデバッグ方法

    PIC 16Fでアセンブラでソフトを作っていたのですが、C言語でソフトを作りたいと思っています。開発用ソフトはMAPLABーXーIDEとCコンパイラはXC8を使います。 アセンブラでは、シミュレータモードでステップ動作ができたのでわかりやすくデバッグできたのですが、cではステップ動作の様なことができるのか、できない場合はどうしたらよいか教えてください。

  • c言語の質問方法について

    c言語の質問はどのように質問すれば一番わかりやすいですか? またソースコードはすべて表示したほうがいいですか?

  • Visual C++ 2008 Express Editionの使用方法について

    プログラミング超初心者です. Visual C++ 2008 Express Editionの使用方法についての質問です. 入門書やネット情報を元に新しいプロジェクトを作成しました.その中に新しい項目(C++ファイル)を追加し,ソースコードを書き,デバックから「デバックなしで開始」をすればプログラムを実行できることはわかりました. 問題はここからなのです.初めに作ったファイルと別のソースファイルを作成したいときはどのようにすればよいのかがわかりません. 新しい項目の追加でC++ファイルを追加してみました.でもそれを「デバックなしで開始」しても,初めに作ったC++が実行されるされるだけで,新しく作ったファイルを実行できません. なにか間違いをしているようなのですがどのような間違いをしているのかがわかりません. 入門書等を見ても,2つ目以降のファイル作成方法が書いてありませんので,こちらで質問させていただきました. どうかよろしくお願いいたします.

  • C言語の入門書について

    やさしいCという本を中古(1800円)で購入したんですが、C言語の学習を始めるにはこれだけで十分でしょうか? 今もう一冊よさげな本を中古本屋で見つけてどうしようか考え中です その本は10日でおぼえるC言語入門教室という本で、 http://www.seshop.com/detail.asp?pid=4912 サンプルのソースコードがたくさんあって、詳しい説明というより作りながら雰囲気を覚えて行くという感じのようです やさしいCが詳しい説明という感じなのであわせて読むといいのかなーと思うんですがどうでしょうか? ちなみに10日で覚える気はなくじっくり覚えていこうと思っています 付属のCDに魅力は感じないので中古でも問題ありません 1500円で売ってるんですが買ったほうがいいでしょうか?

  • C言語のソース

    他人が書いたC言語のソースを見てC言語の勉強をしようと思っていますが、インターネットで探しても、なかなか見つかりません。どなたか、Cのソースを公開しているサイトを教えていただけないでしょうか。お願いします。

専門家に質問してみよう