- ベストアンサー
入門書レベルのことが、どう実践の役に立つのか?
私は興味と暇つぶしでC言語の入門本を読んでいる者です。 プログラマーになるつもりは全くないです。 純粋に興味で質問させていただきます。 入門書レベルのことと実際の仕事ではだいぶ差異があると聞きましたが、では入門書レベルのこと(※)が実践やその勉強で具体的にどう必要で、どう役に立っていくのでしょうか? ある程度技術的な説明を、ド素人にもわかりやすくお願いしたいです。 「基礎だから」というお答えでしょうが、そこのツッ込んだ解説を知りたいわけです。 (困難な要求ですいません!) ※---------------------------- if,switch,for,while 2次元配列、自作関数、ポインタ、 関数への・コマンドプロンプトでの引数の渡し方 ファイルへの読み込み・書き出し バイナリファイルの入出力 構造体、共用体と列挙体、マクロ、 複数ファイルのプログラム malloc関数 ----------------------------
- みんなの回答 (25)
- 専門家の回答
質問者が選んだベストアンサー
そもそも「技術的な説明が難しい」のではなく、 質問そのものが「技術的に説明できない」たぐいものです。 実務面から見ても、※で挙げられた要素は全て、仕事でも使います。 では、入門書と実務とでどう違うかというと、 入門書では、それぞれの要素を個別に説明していますが、 実務では「それらの要素をいかに組み合わせる」かが重要になってきます。 入門書が「ポインタは○○するものである」といった感じで、各要素について、その意味を理解するものになっているのに対し、 実際にプログラムを組む場合は、「○○するためにポインタを使えばよい」といった感じになります。 「プログラムを組む」とは、プログラムで実現すべき処理内容を把握した上で、それを実現できる要素を当てはめていく作業なのです。 それが出来るようになるためには、前提知識として、個々の要素を知っていないといけません。知らなければ「当てはめる」こともできませんから。だからこその入門書ですね。 例えば、JPEG圧縮された画像を読み込んで展開するプログラムを考えます。 JPEG画像を読み込むためにはバイナリファイルの入力が必要です。 読み込んだデータを保持するメモリ領域の確保にはmalloc関数が必要です。 JPEG画像のヘッダ情報を取り扱うには構造体を使い、そのヘッダの記録内容を表現するのには列挙体を使うのが普通です。 よく使う数値はマクロを使わないと保守が難しくなります。 1ファイルが大きくなると管理が難しくなりますから、処理内容ごとに複数ファイルに分けるのが基本です。 読み込んだ圧縮画像を展開する処理は複雑ですので、個々の処理に分割して自作関数を作るのが必要です。 関数を使うからには、関数への引数の渡し方はわかってないとダメです。 バイナリデータの取り扱い時にはポインタを使った方がデータの取り扱いが楽になります。 読み込んだデータを処理するには、forもしくはwhileでループを回す必要があります。データの内容によって処理が変わりますから、その判定にはifかswitchが必要です。 展開して出来た画像は2次元配列で表現するのが普通です。 といった感じで、※で挙げられた要素は全部出てきますね。
その他の回答 (24)
- D-Matsu
- ベストアンサー率45% (1080/2394)
> その差異を埋めたくて 差を埋めるものは基本的には実践です。 実践によって知識を身につけることにより、より実践的なプログラムを書けるようになる訳です。 てな事は既に書かれているのですが、それとは別に「Cの入門書」では一般的なPC用OSで書けば同じように動作する、規格化されている部分が紹介されているのが普通です。 この言い方を変えると「PC向けでないプログラムや、特定OS向けのプログラム」については「入門書」では書いていない、という事でもあります。 ただこれは「実践」というよりは「実用」の方に近いような気はしますが。 他の方からもくどいほど言われてはいますが、何をやるにも基礎あってのことです。 「入門書程度では何一つできない」というのはおそらく「入門書で得られる知識の範囲で出来ることは限られる」ということで、入門書で学ぶ基礎が役に立たない、という意味ではないだろうと思いますよ。 というか「入門書は役立たず」なんていう人間がプロを名乗ってても私は信用しません。 まぁ入門書一冊クリア程度では実務に使えないってのは事実なんですが、そこは冒頭の通り経験積んで補うとこです。
お礼
わかりました。 丁寧にご回答ありがとうございます。
- aris-wiz
- ベストアンサー率38% (96/252)
> 実践やその勉強で具体的にどう必要で、 > どう役に立っていくのでしょうか? 知識と知っていて、どう役に立ちますか?といわれても、 役に立つ場面もありますし、役に立たない場面もあります。 その人にとってどう必要で、どのような場面でどう使うかは、 人の勝手なので、一概にこういう事ですと説明は できないと思います。 >ある程度技術的な説明を、例えを使わずド素人にもわかりやすく > 「基礎だから」というお答えでしょうが、 > そこのツッ込んだ解説を知りたいわけです。 「質問?内容」がプログラミングに限ったことではなく、 どんなものの入門書でも言える事なのに、 それを技術的に説明とは理解できないのですが、 入門書が存在するのはプログラミングだけではないと思います。 ご自分で実践のでき、ある程度習熟したものがあるならば、 それに関する入門書を手にとって、「どう必要で」、 「どう役に立つか」考えてみたらいかがでしょうか? # 説明より直感で理解みたいな感じですが。。 ではなくて、「プログラミングの入門書が必要か」議論が したいなら他所でやるべきでしょう。
お礼
ありがとうございます。 「入門書程度では何一つもできない」というネット上のプロの方の発言を読んで、その差異を埋めたくて、それが何なのかが気になったので質問をしました。 >「プログラミングの入門書が必要か」議論がしたいなら そういう質問の誘導のしかたもありましたね! その質問のしかたなら、私が聞きたい発言がボロボロと出てきそうです。 目から鱗です。
- superside0
- ベストアンサー率64% (461/711)
面白い話題ですね。 入門書の理解が現場で役にたつのかっていうことであれば、 そもそも入門書程度のことが理解できてない人が、現場のプロとして採用されませんから、論外だと思いますが・・・ 入門書あたりでうろちょろしているような素人を採用して、 根気よく育ててくれるような余裕のある会社がいまどきあるのであれば、別ですが。 その基礎があったうえでも、まだ1年目なんて、 人の手伝いや、仕様書通りに動くかの検証や、ドキュメントの清書程度で 先輩のやってることを見ながら、その隙間でこつこつ勉強した人が、やっと2年目3年目でプログラマとして使えるようになって、全体の一部を任せられるようになり・・って感じが普通です。 つまり、入門書を読んて理解できたら即プロとして仕事ができるようになれるのではないのです。 if文とか、ファイルの読み書きとか、そういう基礎中の基礎は知ってて当たり前で 知っていたところで、それだけじゃ現場ではどうにもなりません。 ただ、その上に必要になる技術は、その現場によって違います。 たとえば、会計やるのか、ゲームやるのか、Webなのか、汎用機なのか、パソコンなのか、 一口にプログラマといってもそれぞれの専門分野で最低限必要な技術は違いますから。 質問をみていると、手段と目的が逆転している気がします。 手段を先に手に入れて、さてそれが何に使えるのかなと、探している とでもいいますか。 入門書を読んだだけでは、ただの机上の知識に過ぎないので、 入門書が終わったら、今度は興味のある専門分野での コンピュータ技術の基礎知識から勉強されてはどうでしょう。 そうすると、入門書の意味も、おのずとわかってくると思いますよ。
お礼
ありがとうございます。 できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。 無理難題を言ってすいません。でも楽しく読ませてもらいました。 書いたように私はプログラマーになるつもりは全くありません。30歳中盤ですし。 たんに興味として入門書をパラパラ読んでいて、「入門書程度では何一つもできない」というネット上のプロの方の発言を読んで、その差異を埋めたくて、それが何なのかが気になったので質問をしました。
- arain
- ベストアンサー率27% (292/1049)
http://okwave.jp/qa4700785.html といっしよ。 >できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、 基礎を理解しない相手に、どう具体例を示せと? 四則演算でなきないのに高等数学解答しろというのと一緒っていう例えでいいの? 少なくとも、「基礎」(四則演算)ができるから、その先の高等数学が解答できるんでしょ。
お礼
ありがとうございます。 リンク先、後ほど読ませていただきます。 できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。 無理難題を言ってすいません。
補足
リンク先の、私の質問ですね。 この質問をするきっかけのものです。 ありがとうございます。
- don_go
- ベストアンサー率31% (336/1059)
たとえ話ではなくとの事ですが.... 野球の入門書やルールブックを読んで理解したとしても 実際にグラウンドに立ってキャッチボールや打球に対して ちゃんと反応できなければ、試合で活躍する事はでき ません。 入門書は読破したけれども、プログラムが書けませんと いうのがこの状態です。 この状態で、より難しい解説書を読んでもあまり効果は期待できません。 自分が頭の中で単なる知識として理解していると思って いることを実際にできるようになるまで繰り返し練習する 必要があります。 そうする事で初めて、試合で活躍することができる様に なります。 ただし、野球ができる様になるといっても楽しむだけの 草野球レベルから大リーグレベルまで幅広いので、より 上をめざすのであれば、相応の努力と期間が必要に なります。 草野球レベルで十分というのであればそれなりに自分 が楽しめれば良いのです。 プログラムでも同様です。
お礼
ありがとうございます。 できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。 無理難題を言ってすいません。でも楽しく読ませてもらいました。
- don_go
- ベストアンサー率31% (336/1059)
>入門書レベルのこと(※)が実践やその勉強で具体的に >どう必要で、どう役に立っていくのでしょうか? 入門書レベルのことだけでは、直接実践には役に立ちません。 入門書レベルの次の段階、応用レベル、実用レベル等への 前段階にすぎません。 実用レベルをマスターして初めて、仕事に役立つレベルと してのスタートラインにつく事ができます。
お礼
ありがとうございます。 できれば具体的な説明を期待したかったのですが、やはり知らない人間を相手に「先の段階の話」を「前の段階の話」を元に説明するのは困難だと想像します。 無理難題を言ってすいません。
- xceu
- ベストアンサー率25% (2/8)
> 入門書レベルのことと実際の仕事ではだいぶ差異があると聞きましたが、では入門書レベルのこと(※)が実践やその勉強で具体的にどう必要で、どう役に立っていくのでしょうか? ※---------------------------- >if,switch,for,while(条件分岐) これがないと上から下まで一直線。 >ファイルへの読み込み・書き出し、これ以外に読み出しどうする??? >バイナリファイルの入出力、 これ以外って何入出力??? そのたもろもろ・・ あの・・ これら全部べつに入門レベルでもないですよ、実践でもバリバリ使ってますよ、入門書っていうものは易しく判りやすく解説や説明してるだけであって、実践でもしっかり入門書読んでる人もいますよ・・解約の問題でしょうね。 実際やる気しだいで入門書レベルの本だけで実践で働いている人もいますよ。 暇で読んでいたとしても、どう役に立つぐらいのことがわからないのですか??? そんなツッ込んだ解説されなきゃわからないのですか??? > 私は興味と暇つぶしでC言語の入門本を読んでいる者です。 逆に質問です、あなたのその暇つぶしで読んでる「入門本」と位置づけてる本、なぜ読まれているのですか? 「暇だから」というお答えでしょうが、そこのツッ込んだ解説を知りたいわけです。
お礼
「入門書レベルのことは実践でもバリバリ使ってますよ」 よくわかりました。ありがとうございます。 >どう役に立つぐらいのことがわからないのですか??? そんなツッ込んだ解説されなきゃわからないのですか??? わからないから質問しました。 >なぜ読まれているのですか? それはこの本題とまったく関係のない話題なので、本当に知りたかったら電話をください 本日火曜日の夜10:30~11:30の間待ちます SKYPE ID:umikuta(神奈川、横浜、男性)
- asuncion
- ベストアンサー率33% (2127/6289)
>例え話ではなく、具体的な技術的説明を期待したかった 仮に、どなたかから具体的な技術的説明があったとして、 ご自身にはそれを理解できるだけのお力がおありなのでしょうか? そこらあたりが不明なので、例え話による回答が多く寄せられているのだと思います。
お礼
ある程度技術的な説明を、ド素人にもわかりやすくお願いしてみました。 それが可能かどうかは私には判断がつかないので、識者のみなさんに委ねるべく質問を投げてみました。 困難な要求ですいません。
- jacta
- ベストアンサー率26% (845/3158)
> できれば例え話ではなく、具体的な技術的説明を期待したかったのですが、やはりド素人相手にそれは難しいでしょうか、、、 難しいですね。 先ほどの例でいえば、赤ちゃんにマラソンの具体的な指導をするようなものです。
お礼
ありがとうございます。 無理難題をいって申し訳ありません。
- Griffs
- ベストアンサー率55% (10/18)
役立ちとは、その入門書レベルの事の応用・組み合わせの結果では? 要はアルゴリズムを組むための(パズルを解いていったりジグソーを組んでいったりするような)技量が有るか無いかという事で、使用しているファンクションやコマンドその他は突き詰めれば入門書レベルの物がほとんど。 それらが有って、それらをどのように組み合わせていくかが”実際の仕事”で必要になっていく部分、つまりどれだけ効率的なルーチンやアルゴリズムを作れるかという事で、結局技術的には基本的なものしか使用していないことの方が多いと思いますよ。 そういう意味でも敢えて「基礎だから」と答えさせていただきます。 ※小学校の算数から始まって中学高校その先と進み数学に繋がって行き、社会に出て多様な計算をするように(して行かざるように)なるのと感覚的に同じと思います。 ですので、ご自分で実際に必要に駆られてプログラムを組まなければならない状況にでもならなければ、ご質問の意図する所は理解できないのではないかと感じます。 期待に添えなかった事と思いますが、過去独学で拙い素人フリーウェアを組んだり仕事上のプログラムを組んでいた頃を思い出し、机上論的なこのような質問に対し些か厭きれてしまいこのような回答となってしまいました事を陳謝いたします。申し訳ありません。
お礼
よくわかりました。 ありがとうございます。 無理難題をいって申し訳ありませんでした。
お礼
「作品(プログラミング)は個別の要素をいかに効率よく組み合わせれるかであり、入門書はその個別要素の基礎を解説しているものである」 非常に明確でわかりやすい説明をありがとうございました。