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

解決済みの質問

入門書レベルのことが、どう実践の役に立つのか?

 私は興味と暇つぶしでC言語の入門本を読んでいる者です。
 プログラマーになるつもりは全くないです。 純粋に興味で質問させていただきます。

入門書レベルのことと実際の仕事ではだいぶ差異があると聞きましたが、では入門書レベルのこと(※)が実践やその勉強で具体的にどう必要で、どう役に立っていくのでしょうか?

ある程度技術的な説明を、ド素人にもわかりやすくお願いしたいです。
「基礎だから」というお答えでしょうが、そこのツッ込んだ解説を知りたいわけです。
(困難な要求ですいません!)

※----------------------------
if,switch,for,while
2次元配列、自作関数、ポインタ、
関数への・コマンドプロンプトでの引数の渡し方
ファイルへの読み込み・書き出し
バイナリファイルの入出力
構造体、共用体と列挙体、マクロ、
複数ファイルのプログラム
malloc関数
----------------------------

投稿日時 - 2009-02-09 21:49:30

QNo.4703703

暇なときに回答ください

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

そもそも「技術的な説明が難しい」のではなく、
質問そのものが「技術的に説明できない」たぐいものです。

実務面から見ても、※で挙げられた要素は全て、仕事でも使います。
では、入門書と実務とでどう違うかというと、
入門書では、それぞれの要素を個別に説明していますが、
実務では「それらの要素をいかに組み合わせる」かが重要になってきます。
入門書が「ポインタは○○するものである」といった感じで、各要素について、その意味を理解するものになっているのに対し、
実際にプログラムを組む場合は、「○○するためにポインタを使えばよい」といった感じになります。
「プログラムを組む」とは、プログラムで実現すべき処理内容を把握した上で、それを実現できる要素を当てはめていく作業なのです。
それが出来るようになるためには、前提知識として、個々の要素を知っていないといけません。知らなければ「当てはめる」こともできませんから。だからこその入門書ですね。

例えば、JPEG圧縮された画像を読み込んで展開するプログラムを考えます。
JPEG画像を読み込むためにはバイナリファイルの入力が必要です。
読み込んだデータを保持するメモリ領域の確保にはmalloc関数が必要です。
JPEG画像のヘッダ情報を取り扱うには構造体を使い、そのヘッダの記録内容を表現するのには列挙体を使うのが普通です。
よく使う数値はマクロを使わないと保守が難しくなります。
1ファイルが大きくなると管理が難しくなりますから、処理内容ごとに複数ファイルに分けるのが基本です。
読み込んだ圧縮画像を展開する処理は複雑ですので、個々の処理に分割して自作関数を作るのが必要です。
関数を使うからには、関数への引数の渡し方はわかってないとダメです。
バイナリデータの取り扱い時にはポインタを使った方がデータの取り扱いが楽になります。
読み込んだデータを処理するには、forもしくはwhileでループを回す必要があります。データの内容によって処理が変わりますから、その判定にはifかswitchが必要です。
展開して出来た画像は2次元配列で表現するのが普通です。

といった感じで、※で挙げられた要素は全部出てきますね。

投稿日時 - 2009-02-10 00:21:47

お礼

「作品(プログラミング)は個別の要素をいかに効率よく組み合わせれるかであり、入門書はその個別要素の基礎を解説しているものである」

非常に明確でわかりやすい説明をありがとうございました。

投稿日時 - 2009-02-10 06:08:38

ANo.8

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

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

回答(25)

ANo.25

申し訳ありません。
誤記がありました。
ADOXはADO.NETと読み替えてください
以上です。

投稿日時 - 2009-02-13 00:08:52

お礼

かくご回答いただいて失礼ですが、私の質問内容とはだいぶ関係ないことを記述されているようです。

投稿日時 - 2009-02-17 11:45:55

ANo.24

まず、全くの個人的見解であることをお断りしておきます。
私が思うに"プロ"であるならば、”プログラムの分かりやすさ"が重要です。
共同作業になることもありますし、"未来の自分は赤の他人"ととらえないと
人間の記憶なんてそんなにあてになるものではありません。

モジュール分割、関数分割、適度なコメントなどです。

私の先輩に"プログラム作成が凄く速い"と評判の人がいました。
彼は"プログラム作成の達人"ではなく、
エディタ操作の達人です。
そう、コピぺしまくりです。
"どう分割するか?ネーミングはどうするか?"
考えている暇があったら手を動かせ!!
というわけです。

私は、これは"プロ"の仕事ではないと考えます。
1回きりの使い捨てなら良いかもしれません。
仕様変更などでメンテナンスする羽目になったら大変です。
しかも、他人が引き継ぐとしたら....
理解するだけでもう大変です。

きちんとレイヤーに分けて、さらに関数化する
私は、”小さな関数をたくさん作る"ことを
別の先輩から叩き込まれました。

理由は、関数が小さければ、
その関数が正しく動作しているか
検証するのも楽だからです。

検証済みの関数をまた小さなサイズで組み合わせれば
そのモジュールが正しく動作しているか検証するのも簡単です。

これらは最近流行りの"テスト・ファースト"にもピッタリマッチします。
簡単な関数なので境界条件とうも分かりやすく、
危ない所を確実に拾い出すことができます。
そのテストを通ったプログラムであれば、安心して使えます。

最新技術の勉強も大事ですが
流行り・廃りもあるので
それ程、神経質にならなくても良いと思います
(ex DAO ==> RDO ==> ADO ==> ADOX
と学んできましたが
これからDBを始めるなら
いきなりADOXで構わないのでは?
DAOなんてわからなくてもよいのでは?)

以上です。

投稿日時 - 2009-02-12 22:35:19

お礼

せっかくご回答いただいて失礼ですが、私の質問内容とはだいぶ関係ないことを記述されているようです。

投稿日時 - 2009-02-17 11:45:09

ANo.23

> 「入門書程度では何一つもできない」というネット上の
> プロの方の発言を読んで、その差異を埋めたくて、
> それが何なのかが気になったので質問をしました。
入門書によって良し悪しもあります。
その「プロの方」の発言にとらわれる事が、
そもそもの如何なものかと思います。
# プログラマってプロの境界がすごくあいまいな職業だと思うので

それこそ、1つのことを行うのにプログラミングでは
人の数だけ考え方があるわけですから、
(もちろん考え方はある程度統一されるでしょうが。)
「プロが言っていた」というだけで、それを鵜呑みにするのは
良くない事だと思います。

「入門書レベルじゃ何もできない」って言っていても、
それは入門書を読んでいたから分かるわけで、
読むことが無駄とも思いませんし、「何もできない」=
「不要・役に立たない」と言うことも無いでしょう。

>1.異常事態の考慮
>2.性能要件の意識
>3.メンテナンス性の考慮
職場との環境の違いとすれば、

4.グループでの開発・コミュニケーション
入門書レベルであれば、自分で書いて動かせばそれで完結ですね。
しかし、実際の現場では既にあるプログラムを誰かから引き継いだり
逆に自分が持っていたプログラムを誰かに引き継いだり、
新しい機能をつけるときに、他の分担されている機能を持っている
人と話し合ったりという、コミュニケーションも発生します。

5.開発環境や動作環境の進歩や最新技術への対応
入門書では、主に成り立ちや過去の確立された技術を紹介しますが、
職場では例えば、WindowsやLinuxなどのOSも常に同じものが
使われるわけでは無く、新しい技術は常に発表され続け、
それへの対応も行う場合もあります。
もちろん、新しい技術なのでこれという教科書など無く、
技術文書などを読むことになります。

こういうことは、やはり経験していかないと
分からないこともあるのでは無いかと思います。

投稿日時 - 2009-02-12 16:51:43

お礼

4.グループでの開発・コミュニケーション
5.開発環境や動作環境の進歩や最新技術への対応

ご回答ありがとうございます!

投稿日時 - 2009-02-12 19:25:41

ANo.22

zwi

>ありがとうございます。
>(1)~(5)までのことならば、具体的には無理でも、私でもなんとなくのプログラムの骨子はイメージできそうです。
>そんなに入門書の内容とかけ離れたものではなさそうですね?
これだけだと、そうですね。
でも、C言語の入門書を読んでいるだけでは実際にプログラムを書けなかったりします。いざ書こうとすると出来ないんですよね。知識はあるけど使い方が判らないって感じですかね。

今回の自販機のプログラムも擬似的には、コマンドプロンプトで実行できるプログラムが作れますので作ってみてはどうでしょうか?キーボードから金額を入力して、買う商品の番号を選んで、お釣りが表示されるって感じですかね。C言語のコンパイラも無料で入試可能ですし。
実際の自販機のプログラムだとハード制御のタイミングやら割り込み処理やら異常時の処理やらノウハウが必要な面が沢山ありますが、プログラムってどんなものだと言うこと理解するにはよろしいかと。

投稿日時 - 2009-02-11 11:14:28

お礼

ありがとうございます。
せっかくのご提案ですが、私は「何となくC言語がどんなもんか雰囲気を知ってみたいなぁ」程度の純粋な興味のみの人間なので、プログラムを書くつもりは全くありません。

-------------
余談ですが23年ほど前、小学生の時にBASICというプログラマー教育用プログラム言語をやっていました。ポケコンですね。
なので、zwiサンがおっしゃる「いざ書こうとすると出来ない」というのや、プログラミングというものは完成したつもりでもエラーエラーで修正修正の連続の作業だという雰囲気も少しだけ知っています。

投稿日時 - 2009-02-11 23:10:12

ANo.21

例えば1つの課題として、
ファイルを読み込み、その内容をそのまま別のファイルに書き出す。
という課題があるとします。
そうすると、基本的には、入門レベルのやり方と同じ方法で、やればその課題はクリアできます。
では、実践(本番業務)では、なにが違い、何が求められるのかということですが、それは概ね以下のようなことになります。
1.異常事態をどこまで考慮しているか。
ファイルの読み込み中にエラーが発生したらどうなるか、またどうすべきか。書き込み中にエラーが発生したらどうするか。またどのような種類のエラーが発生することが予想されるか。
これらのエラーの原因が適切に特定できる仕組みをプログラムに埋め込む必要があります。又、エラーの内容によっては、そこでギブアップではなく、ある一定期間、リトライするような場合もあり、エラー毎にプログラムは、適切な対応が必要とされます。
入門レベルは、基本的にこのことを一切考慮していません。
2.性能要件をどれだけ意識しているか。
その処理が完了するまでに、どれだけの時間がかかるかを意識する必要があります。いくら処理の内容が正しくても、非常に時間のかかるプログラムは基本的には使えません。データが小量な場合は、それほど気になりませんが、非常に大きなデータを処理させても耐えるかどうかの試験も行う必要があります。それで、だめな場合は、もう一度処理のやり方を見直す必要があります。
性能としては、そのほかに、CPU時間の消費率、メモリの消費率などがあり、これらを異様に消費すると、他のプログラムの実行に影響をあたえるので、それらがないかをチェックする必要があります。
入門レベルでは、上記のことは一切意識していません。
3.メンテナンス性の考慮
上記のプログラムは、しばらく使用していると、他にも機能を付け加えたい(例えば、もう1つのファイルを指定してそちらにも書き込みたい等の要求)ことや、プログラムの不具合が原因で、そのプログラムを修正・改造する必要が発生します。そのプログラムを作成した本人が、永久にそのプログラムを保守してくれるなら、それでよいのですが、現実的にはそれはありえないので、ほかの人がその改造を行うことになります。そうすると、そのプログラムは第三者からみて、非常にわかりやすいものでなければ、いけません。変数名にa,b,cなどをつけるのは、作成者本人は簡潔でわかりやすいでしょうが、他の人には全くわかりませんので、そのような変数名を使用することは、プロジェクトの規約(コーディング規約)で禁止されることが多いです。入門レベルでは、上記のことは一切意識していません。
ほかにもありますが、概ね、以上が、実際に業務で使用されるプログラムに求められるものです。
もちろん、上記の要件が厳しく求められない場合は、入門レベルのプログラムでも十分実用に耐えます。

投稿日時 - 2009-02-11 10:04:28

お礼

入門レベルと実務の差異
1.異常事態の考慮
2.性能要件の意識
3.メンテナンス性の考慮
上記の要件が厳しく求められない場合は、入門レベルのプログラムでも十分実用に耐える

私のような入門レベル以下の人間にも非常によくわかりました。
そして最後の一行はある程度勇気のいる発言かと想像します。
(私が)真意はなんとなく捉えられていると思います。
ご回答ありがとうございます。

投稿日時 - 2009-02-11 23:02:29

ANo.20

「日本の歴史をアメリカ人に分かるように英語の文章で作ってください」
と言われた時に

まず英語の文法とか単語知らないと
英語の文章が書けないでしょ

英語の文法とか単語を完璧に覚えたとしてもさ

今度は
「日本の歴史」を知らない人だったら、これまた書けないよねぇ

それと同じじゃん

投稿日時 - 2009-02-11 03:42:04

お礼

せっかく回答してもらって失礼ですが、この文章では何がどう何と同じなのかさっぱりわかりません。
gachincoにはわかってても私にはC言語の具体的なことが何一つ伝わりません。

冷やかしなら回答してもらわなくて結構。

投稿日時 - 2009-02-11 22:53:52

ANo.19

zwi

「百聞は一見にしかず」と言うし簡単なプログラムを作ってみてはどうでしょう。プロになる気は無いとおっしゃられてますが、本を読んでいる以上はプログラムなさる気も御有りかと。
世の中には職業も別にあるアマのプログラマの方も沢山いらっしゃいますし。

そうそう。
>入門書の最初の方で出てくるif~elseだけで全部作れてしまいそうな気がしてしまいます
>「もしも△△のボタンが押されたら、○○しろ」
>「もしも△△のボタンが押されたら、○○に収まってるジュースを出せ」(ジュース自販機)
>「もしもMUTEボタンが押されたら、スピーカーの音を消音しろ」(オーディオ機器)
これだけだと確かに作れそうですね。でも自販機だと本当に必要なことはこれだけじゃないですよ。
(1)投入されたコインの金額管理
(2)おつりの金額をコインに分けて取り出す処理。
(3)押されたボタンに応じた商品の取り出し処理。
(4)取り出された商品の金額に合わせて金銭の減額。
(5)在庫を判定して商品ランプを点灯・消灯。
と大雑把に考えてもこのぐらいあります(実際にはもっと処理がありますが)。例に挙げられたのは(3)の部分だけです。

投稿日時 - 2009-02-10 19:47:31

お礼

ありがとうございます。
(1)~(5)までのことならば、具体的には無理でも、私でもなんとなくのプログラムの骨子はイメージできそうです。
そんなに入門書の内容とかけ離れたものではなさそうですね?

投稿日時 - 2009-02-10 22:43:39

ANo.18

スポーツの場合は、基本ができていなければその結果は
はっきりと出てきます。
プログラムの場合には、サンプル通りにすれば、それなりに
動いてくれるので、基本はもう十分に理解できたと
勘違いしてしまう部分があります。
後は、実際に試合に出て(プログラムを書いて)みて
自分の力量がどの程度なのか、どれ程力不足なのか
を体感してみなければ判断はできないでしょう。

投稿日時 - 2009-02-10 16:03:59

お礼

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

投稿日時 - 2009-02-10 22:41:05

ANo.17

> 入門書の最初の方で出てくるif~elseだけで全部作れてしまいそうな気がしてしまいます
>「もしも△△のボタンが押されたら、○○しろ」

たしかに、その論法なら、どんなプログラムもif文だけでかくことができます。

でも、if文では ”もしも” と ”しろ”しかかけないので
”△△のボタンが押され”ていることをどうやって調べて、
”○○する”命令を、どうやって書くのかが
論点から抜け落ちていますよ。

投稿日時 - 2009-02-10 15:46:17

お礼

ありがとうございます。

プログラムは”もしも” と ”しろ”だけで、あとはハード機器が電流を流していくもんだと思ってました。

投稿日時 - 2009-02-10 22:40:26

ANo.16

技術的な内容をですか・・・

どんな専門分野についてかを聴きたいかがわからなければ
答えようがないと思いますよ。

たとえば、
UNIX系であれば、システムコールや通信制御やプロセス制御のやりかたが必要なるし
会計系ならDBエンジンやトランザクションあたりだろうし
ゲームやってればグラフィックやサウンド関係や割り込み制御になるだろうし
Windows系ならAPIとか、.NETフレームワークとかだろうし、
デバドラやってる人なら、もっとハードよりの制御しらないといけないし。
(私はこれらは専門外なので想像ですが)

今の時点では、これらをあげられたような、if文~malloc()だけで書くのは無理
ということだけ、理解されていればよいとは思います。

投稿日時 - 2009-02-10 14:29:46

お礼

ありがとうございます。
例えばジュースの自動販売機や電化製品の制御(組み込み系っていうのですか?)なんかどうでしょう?

入門書の最初の方で出てくるif~elseだけで全部作れてしまいそうな気がしてしまいます
「もしも△△のボタンが押されたら、○○しろ」
「もしも△△のボタンが押されたら、○○に収まってるジュースを出せ」(ジュース自販機)
「もしもMUTEボタンが押されたら、スピーカーの音を消音しろ」(オーディオ機器)

投稿日時 - 2009-02-10 15:16:01

ANo.15

> その差異を埋めたくて

差を埋めるものは基本的には実践です。
実践によって知識を身につけることにより、より実践的なプログラムを書けるようになる訳です。

てな事は既に書かれているのですが、それとは別に「Cの入門書」では一般的なPC用OSで書けば同じように動作する、規格化されている部分が紹介されているのが普通です。
この言い方を変えると「PC向けでないプログラムや、特定OS向けのプログラム」については「入門書」では書いていない、という事でもあります。
ただこれは「実践」というよりは「実用」の方に近いような気はしますが。
他の方からもくどいほど言われてはいますが、何をやるにも基礎あってのことです。
「入門書程度では何一つできない」というのはおそらく「入門書で得られる知識の範囲で出来ることは限られる」ということで、入門書で学ぶ基礎が役に立たない、という意味ではないだろうと思いますよ。
というか「入門書は役立たず」なんていう人間がプロを名乗ってても私は信用しません。
まぁ入門書一冊クリア程度では実務に使えないってのは事実なんですが、そこは冒頭の通り経験積んで補うとこです。

投稿日時 - 2009-02-10 12:52:27

お礼

わかりました。
丁寧にご回答ありがとうございます。

投稿日時 - 2009-02-10 13:01:57

ANo.14

> 実践やその勉強で具体的にどう必要で、
> どう役に立っていくのでしょうか?
知識と知っていて、どう役に立ちますか?といわれても、
役に立つ場面もありますし、役に立たない場面もあります。
その人にとってどう必要で、どのような場面でどう使うかは、
人の勝手なので、一概にこういう事ですと説明は
できないと思います。

>ある程度技術的な説明を、例えを使わずド素人にもわかりやすく
> 「基礎だから」というお答えでしょうが、
> そこのツッ込んだ解説を知りたいわけです。
「質問?内容」がプログラミングに限ったことではなく、
どんなものの入門書でも言える事なのに、
それを技術的に説明とは理解できないのですが、
入門書が存在するのはプログラミングだけではないと思います。
ご自分で実践のでき、ある程度習熟したものがあるならば、
それに関する入門書を手にとって、「どう必要で」、
「どう役に立つか」考えてみたらいかがでしょうか?
# 説明より直感で理解みたいな感じですが。。

ではなくて、「プログラミングの入門書が必要か」議論が
したいなら他所でやるべきでしょう。

投稿日時 - 2009-02-10 11:40:12

お礼

ありがとうございます。
「入門書程度では何一つもできない」というネット上のプロの方の発言を読んで、その差異を埋めたくて、それが何なのかが気になったので質問をしました。

>「プログラミングの入門書が必要か」議論がしたいなら
そういう質問の誘導のしかたもありましたね!
その質問のしかたなら、私が聞きたい発言がボロボロと出てきそうです。
目から鱗です。

投稿日時 - 2009-02-10 12:11:42

ANo.13

面白い話題ですね。

入門書の理解が現場で役にたつのかっていうことであれば、
そもそも入門書程度のことが理解できてない人が、現場のプロとして採用されませんから、論外だと思いますが・・・
入門書あたりでうろちょろしているような素人を採用して、
根気よく育ててくれるような余裕のある会社がいまどきあるのであれば、別ですが。

その基礎があったうえでも、まだ1年目なんて、
人の手伝いや、仕様書通りに動くかの検証や、ドキュメントの清書程度で
先輩のやってることを見ながら、その隙間でこつこつ勉強した人が、やっと2年目3年目でプログラマとして使えるようになって、全体の一部を任せられるようになり・・って感じが普通です。

つまり、入門書を読んて理解できたら即プロとして仕事ができるようになれるのではないのです。
if文とか、ファイルの読み書きとか、そういう基礎中の基礎は知ってて当たり前で
知っていたところで、それだけじゃ現場ではどうにもなりません。

ただ、その上に必要になる技術は、その現場によって違います。
たとえば、会計やるのか、ゲームやるのか、Webなのか、汎用機なのか、パソコンなのか、
一口にプログラマといってもそれぞれの専門分野で最低限必要な技術は違いますから。

質問をみていると、手段と目的が逆転している気がします。
手段を先に手に入れて、さてそれが何に使えるのかなと、探している
とでもいいますか。

入門書を読んだだけでは、ただの机上の知識に過ぎないので、
入門書が終わったら、今度は興味のある専門分野での
コンピュータ技術の基礎知識から勉強されてはどうでしょう。
そうすると、入門書の意味も、おのずとわかってくると思いますよ。

投稿日時 - 2009-02-10 11:19:38

お礼

ありがとうございます。
できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。
無理難題を言ってすいません。でも楽しく読ませてもらいました。


書いたように私はプログラマーになるつもりは全くありません。30歳中盤ですし。
たんに興味として入門書をパラパラ読んでいて、「入門書程度では何一つもできない」というネット上のプロの方の発言を読んで、その差異を埋めたくて、それが何なのかが気になったので質問をしました。

投稿日時 - 2009-02-10 12:06:35

ANo.12

http://okwave.jp/qa4700785.html
といっしよ。

>できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、
基礎を理解しない相手に、どう具体例を示せと?
四則演算でなきないのに高等数学解答しろというのと一緒っていう例えでいいの?
少なくとも、「基礎」(四則演算)ができるから、その先の高等数学が解答できるんでしょ。

投稿日時 - 2009-02-10 09:41:31

補足

リンク先の、私の質問ですね。
この質問をするきっかけのものです。
ありがとうございます。

投稿日時 - 2009-02-10 12:14:05

お礼

ありがとうございます。
リンク先、後ほど読ませていただきます。

できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。
無理難題を言ってすいません。

投稿日時 - 2009-02-10 11:59:48

ANo.11

たとえ話ではなくとの事ですが....
野球の入門書やルールブックを読んで理解したとしても
実際にグラウンドに立ってキャッチボールや打球に対して
ちゃんと反応できなければ、試合で活躍する事はでき
ません。
入門書は読破したけれども、プログラムが書けませんと
いうのがこの状態です。
この状態で、より難しい解説書を読んでもあまり効果は期待できません。
自分が頭の中で単なる知識として理解していると思って
いることを実際にできるようになるまで繰り返し練習する
必要があります。
そうする事で初めて、試合で活躍することができる様に
なります。
ただし、野球ができる様になるといっても楽しむだけの
草野球レベルから大リーグレベルまで幅広いので、より
上をめざすのであれば、相応の努力と期間が必要に
なります。
草野球レベルで十分というのであればそれなりに自分
が楽しめれば良いのです。
プログラムでも同様です。

投稿日時 - 2009-02-10 08:30:42

お礼

ありがとうございます。
できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。
無理難題を言ってすいません。でも楽しく読ませてもらいました。

投稿日時 - 2009-02-10 11:58:48

ANo.10

>入門書レベルのこと(※)が実践やその勉強で具体的に
>どう必要で、どう役に立っていくのでしょうか?
入門書レベルのことだけでは、直接実践には役に立ちません。
入門書レベルの次の段階、応用レベル、実用レベル等への
前段階にすぎません。
実用レベルをマスターして初めて、仕事に役立つレベルと
してのスタートラインにつく事ができます。

投稿日時 - 2009-02-10 06:32:16

お礼

ありがとうございます。
できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。
無理難題を言ってすいません。

投稿日時 - 2009-02-10 11:56:57

ANo.9

> 入門書レベルのことと実際の仕事ではだいぶ差異があると聞きましたが、では入門書レベルのこと(※)が実践やその勉強で具体的にどう必要で、どう役に立っていくのでしょうか?

※----------------------------
>if,switch,for,while(条件分岐) これがないと上から下まで一直線。

>ファイルへの読み込み・書き出し、これ以外に読み出しどうする???

>バイナリファイルの入出力、   これ以外って何入出力???

そのたもろもろ・・ あの・・ これら全部べつに入門レベルでもないですよ、実践でもバリバリ使ってますよ、入門書っていうものは易しく判りやすく解説や説明してるだけであって、実践でもしっかり入門書読んでる人もいますよ・・解約の問題でしょうね。
実際やる気しだいで入門書レベルの本だけで実践で働いている人もいますよ。 暇で読んでいたとしても、どう役に立つぐらいのことがわからないのですか???  そんなツッ込んだ解説されなきゃわからないのですか???
> 私は興味と暇つぶしでC言語の入門本を読んでいる者です。
逆に質問です、あなたのその暇つぶしで読んでる「入門本」と位置づけてる本、なぜ読まれているのですか? 
「暇だから」というお答えでしょうが、そこのツッ込んだ解説を知りたいわけです。

投稿日時 - 2009-02-10 03:48:22

お礼

「入門書レベルのことは実践でもバリバリ使ってますよ」
よくわかりました。ありがとうございます。

>どう役に立つぐらいのことがわからないのですか???  そんなツッ込んだ解説されなきゃわからないのですか???
わからないから質問しました。

>なぜ読まれているのですか? 
それはこの本題とまったく関係のない話題なので、本当に知りたかったら電話をください
本日火曜日の夜10:30~11:30の間待ちます SKYPE ID:umikuta(神奈川、横浜、男性)

投稿日時 - 2009-02-10 06:25:21

ANo.7

>例え話ではなく、具体的な技術的説明を期待したかった

仮に、どなたかから具体的な技術的説明があったとして、
ご自身にはそれを理解できるだけのお力がおありなのでしょうか?

そこらあたりが不明なので、例え話による回答が多く寄せられているのだと思います。

投稿日時 - 2009-02-09 23:27:55

お礼

ある程度技術的な説明を、ド素人にもわかりやすくお願いしてみました。
それが可能かどうかは私には判断がつかないので、識者のみなさんに委ねるべく質問を投げてみました。
困難な要求ですいません。

投稿日時 - 2009-02-09 23:33:47

ANo.6

> できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、

難しいですね。
先ほどの例でいえば、赤ちゃんにマラソンの具体的な指導をするようなものです。

投稿日時 - 2009-02-09 23:21:35

お礼

ありがとうございます。
無理難題をいって申し訳ありません。

投稿日時 - 2009-02-09 23:32:03

ANo.5

 役立ちとは、その入門書レベルの事の応用・組み合わせの結果では?
 要はアルゴリズムを組むための(パズルを解いていったりジグソーを組んでいったりするような)技量が有るか無いかという事で、使用しているファンクションやコマンドその他は突き詰めれば入門書レベルの物がほとんど。
 それらが有って、それらをどのように組み合わせていくかが”実際の仕事”で必要になっていく部分、つまりどれだけ効率的なルーチンやアルゴリズムを作れるかという事で、結局技術的には基本的なものしか使用していないことの方が多いと思いますよ。
 そういう意味でも敢えて「基礎だから」と答えさせていただきます。
※小学校の算数から始まって中学高校その先と進み数学に繋がって行き、社会に出て多様な計算をするように(して行かざるように)なるのと感覚的に同じと思います。
 ですので、ご自分で実際に必要に駆られてプログラムを組まなければならない状況にでもならなければ、ご質問の意図する所は理解できないのではないかと感じます。
 期待に添えなかった事と思いますが、過去独学で拙い素人フリーウェアを組んだり仕事上のプログラムを組んでいた頃を思い出し、机上論的なこのような質問に対し些か厭きれてしまいこのような回答となってしまいました事を陳謝いたします。申し訳ありません。

投稿日時 - 2009-02-09 23:17:21

お礼

よくわかりました。
ありがとうございます。
無理難題をいって申し訳ありませんでした。

投稿日時 - 2009-02-09 23:31:07

ANo.4

 こんにちは。

 ド素人さんに解りやすくということなので、ちょっと技術的
ではありませんが参考にしていただければ幸いです。

 C言語(プログラミング)を料理に例えると解りやすいと思います。

 C言語の入門書の内容は料理でいう材料の切り方や、塩の振り方
などの調理方法に該当します。
 そして実践とは指定された料理を作ることに該当します。なので
材料の調理方法は必須になります。
 C言語も指定されたプログラムを作成するために必須になります。

 よく初心者の方で入門書の技術を追求される方がいらっしゃいます
が、重要なのはやりたい事を明確にしてそれを実現する手順、及び
その各手順に必要な処理(if, for)を選択することです。
 料理でいうなら、材料の切り方を極めただけでは料理はできません。
 作りたい料理が何で、どの材料を選び、どういうレシピを組み、
どの調理順序で料理していくかを考えることです。

 C言語で言えば、材料がデータ、レシピが設計書、各調理方法が
アルゴリズムと考えられます。

 料理人は指定された料理を聞いたら直ぐに材料、レシピ、調理手順
が解り、料理に取り掛かれます。そして自分なりのアレンジも加えます。
調理方法を応用して洋風にも和風にもできます。
 同じ様に、C言語の熟練者は指定されたプログラムを聞いたら直ぐに
必要なデータ、処理手順、実際の処理が頭に浮かびます。

 それらを実現する為には、必ず処理方法が必要になります。

 長文失礼しました。ご参考までに。

投稿日時 - 2009-02-09 23:10:54

お礼

できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、

投稿日時 - 2009-02-09 23:12:16

ANo.3

入門書レベルのことは、何をやるにも必ず必要になってきます。入門書レベルのことが理解できており、実際に活用できる状態になっていて、はじめて実践的なことができるようになります。

例えていえば、人間が生まれてから最初の約1年間で、目が見えるようになり、首がすわり、寝返りができるようになり、座れるようになり、這えるようになり、つかまり立ちができるようになり、伝い歩きができるようになり、独り立ちができ、やっと普通に歩けるようになります。
これらの過程をすっとばして、いきなりアスリートを目指そうとしても話になりません。
それと同じことです。

投稿日時 - 2009-02-09 23:07:11

お礼

できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、

投稿日時 - 2009-02-09 23:11:39

ANo.2

四則演算がまともにできない人が方程式を解けますか?
それと同じ事です。

投稿日時 - 2009-02-09 23:04:29

お礼

できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、

投稿日時 - 2009-02-09 23:11:03

ANo.1

>※----------------------------
>if,switch,for,while
中略
>malloc関数
>----------------------------
これらは、全て基礎です。これを自由自在にあやつれて、初めて実践(実戦)が可能になります。車の運転にたとえれば、右折、左折、車庫入れ、坂道発進等のようなものです。たとえ、それらの基礎ができても目的地に間違いなくスムーズに到着するためには、その基礎ができただけでは不十分です。しかしながら、その基礎も満足にできなければ、目的地に安全に到着することはできません。
これでは、説明になっていませんか?

投稿日時 - 2009-02-09 23:03:42

お礼

できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、

投稿日時 - 2009-02-09 23:11:01

あなたにオススメの質問