こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

基本的なことを勉強したあとはどうすればよいのでしょうか。

基本的なことを勉強したあとはどうすればよいのでしょうか。

入門書などで、ポインタや構造体など一通りのことを勉強しましたが、使っている関数が
<stdio.h>の標準関数だけでした。

この標準関数というものを調べてみましたが、どうやらあまり高機能でないというか
Windowsで使えるようなアプリケーション開発を行うのは無理があるようです

といっても、すぐにアプリケーションが作れるとは思っていないのですが
このあとどういう勉強をしたらよいでしょうか。

最終的な目標としては、C言語を通してOSの仕組みやPCの基本的な構造を理解できればと思っています。

投稿日時 - 2010-07-06 19:41:49

QNo.6020010

暇なときに回答ください

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

基本的なことを理解したと思うなら、応用に進めばいいんじゃないでしょうかね。
実際、言語仕様を理解したつもりでも、処理系によっては挙動が変わってしまうことが少なくないのがC言語ですし。
そういえば、どの処理系で学習されたのでしょうか?
(WindowsならVisual Studioシリーズは便利なのですが、癖が強いので学習に向くかといえば疑問があります。)

本当にC言語だけでWindowsアプリケーション開発をしてみたいと思うなら、以下のページの第2章程度までは理解しておいたほうが良いでしょう。
http://www.geocities.jp/ky_webid/win32c/index.html

ただ、C言語だけでWindowsアプリケーションを作成しようとするのは、愚かな行為であると感じるんじゃないかなと思いますよ。主に生産性の点で。

投稿日時 - 2010-07-06 22:01:29

お礼

応用の方向性がよくわからなかったので質問しました。
やはりライブラリと言われるものを少しづつ勉強していくのがベストなんでしょうか。

サイト紹介ありがとうございます。

投稿日時 - 2010-07-07 08:46:18

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

#1 ですの

 標準関数を全部覚える必要はありませんが、基本的に身に付けておかなければ困るものもあります。
 stdio.hの関数だけじゃ、標準入出力の関数とかファイルアクセスの関数とかぐらいしか知らないってことです。むしろGUIプログラミングなんかじゃ使わない標準入出力を覚えるぐらいなら、むしろメモリ関係とか文字列操作とかの知識が無いと、他の勉強をするにしても困りますよ……ということです。

 例えば標準関数ではmallocという関数でメモリを獲得しますが、これそのものはWindowsのプログラミングでは使えませんが、Win32APIにあるGlobalAllocという関数の動作はmallocを知っていれば理解できます。ここからさらに他のOS環境のプログラミングに移った場合、GlobalAllocに直接相当する関数とかはないかもしれませんが、mallocの動作を模したような関数の存在する可能性は大きいでしょう。
 これは何故かといえば、OSの開発環境の設計者もその使用者も標準関数mallocの知識が前提としてあれば機能が分かりやすくて良いという点があるからです。

 また、標準入出力とかファイルアクセスの機能を使うぐらいならC言語のメモリアクセスの仕方が分からなくても大丈夫ですが、メモリ関係とか文字列操作の関数を使おうとすれば必然的にメモリアクセスに関する知識が必要になります。そうやって、PCとかOSの仕組みを身に付けていくのが近道です。

 どういう入門書で学ばれたのかは知りませんが、たとえポインタとか構造体とかは個別にやったといっても、標準関数がstdio.hの範囲内だけでは基本の基本ぐらいにしかすぎません。
 学び方はいろいろですから、もう少し高度な入門書を読むとか、いきなり応用編を始めるとか、自分でソフトを作りながら学んでいくとか、それはどんなやり方でも構いませんが、重点目標としては他の標準関数を視野に入れて必要に応じて使えるようになるというところが適当ではないでしょうか。

投稿日時 - 2010-07-07 13:02:33

お礼

基本の基本ですか(´;ω;`)
先は長そうですね


もうランク上の参考書も買ってみたいと思います
ありがとうございました

投稿日時 - 2010-07-08 02:42:26

ANo.5

#2です。

正直、OSの仕組みやPCの構造を理解するっていうのは最終的な目標としては変なんじゃないかと思いますよ。アプリケーションソフトをつくっていく流れの中で「ついで」程度に理解できるようになるものだと思います。(OSの仕組みを理解していなくてもアプリケーションソフト開発ができている同僚を見ると、必ずしもそうとは限らないのでしょうが。)

私がお知らせしたサイトはWindowsアプリケーションがWindowsからイベント通知を受けながら処理を行う様子を理解するのに良いかと思ったためです。これもまた、OSの仕組みの一部ですし。

C言語もOSも、PC自体も、「やりたいこと」を実現するための道具に過ぎません。
ライブラリの勉強そのものに入れ込まないで、アプリケーションをつくりはじめてはいかがですか?

他の方から提示いただいたような、OSをつくるというものでもいいでしょうし。
自分がつくっていて楽しいと思うものを見つけてください。
知識や道具は持っているだけでは、意味ないですよ。使ってこそ価値があるんです。

投稿日時 - 2010-07-07 11:04:06

お礼

そうですね。
OSかアプリか決めていませんが、何かつくってみます。
ありがとうございました。

投稿日時 - 2010-07-08 02:32:53

ANo.4

>このあとどういう勉強をしたらよいでしょうか。
勉強ではなくて実践ですね。
とにかく、なにかプログラムを作ってみましょう。
つくってみることによって、「OSの仕組みやPCの基本的な構造」も見えてきます。

お題はなんでも構いません。どんなプログラムでも、OSの上で動くPCのプログラムですから。

投稿日時 - 2010-07-07 10:20:52

お礼

ありがとうございました。

投稿日時 - 2010-07-08 02:28:33

ANo.3

zwi

>最終的な目標としては、C言語を通してOSの仕組みやPCの基本的な構造を理解できればと思っています。

じゃあ、OSを作りましょう!
「30日でできる! OS自作入門」と言う本があります。
http://book.mycom.co.jp/book/4-8399-1984-4/4-8399-1984-4.shtml
基本的なOSの作り方を学べる本ですよ。
実用レベルで使うには問題があるOSですが、OSの何たるかが学べると思います。

C言語が分かれば大丈夫です。
標準関数を全て理解されていなくても問題ありません。
と言うより標準関数全部覚えるのは意味がありません。

こんな本もあります。
「作りながら学ぶOSカーネル―保護モードプログラミングの基本と実践」
http://www.shuwasystem.co.jp/products/7980html/2254.html

投稿日時 - 2010-07-07 10:11:38

お礼

本の紹介ありがとうございます。
確かに自分でOSが作れれば一番理解が深まりそうですね。

投稿日時 - 2010-07-08 02:27:31

ANo.1

標準関数は stdio.h にあるものだけではないので、その他の標準関数も勉強してください。
あとのことは、それからです。

投稿日時 - 2010-07-06 21:56:07

お礼

ありがとうございました。
標準関数はすべてマスターしたほうがいいですかね。

投稿日時 - 2010-07-07 08:43:27

あなたにオススメの質問