• ベストアンサー

プログラム脳の作り方

プログラマーの皆様はどうやってプログラム脳を作られましたか。 今JavaとPHPの勉強をしていますが、プログラムを作るための考え方がなかなか身に付きません。 習うより慣れろという事は分かっていますが、ちょっと悩んでいます。 プロのプログラマを目指しているのではありませんが、会社のWebの管理をする上で必要なので勉強中です。 どんな勉強やトレーニングをされたのか、何がきっかけでプログラム脳の思考を理解できたか教えて頂けたら幸いです。 アドヴァイス宜しくお願いいたします。

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.7

数学的センスが必要です。  物事を抽象化して考える能力です。例えば、「洗濯物を取り込む」という動作を考えて、整理できますか? ・洗濯物が干してあるか ・乾いているか? ・雨が降りそうか? ・雨が降っているか? ・どくらいの時間ごとに判断するか?  最低限、これだけの判断は必要ですね。             雨が降っているか?              /  \           いいえ    はい ⇒ 取り込む            |        時間をチェック          ↓      時間は前回判断より       /    \     30分後    30分未満 ⇒ 終了       |    干してあるか     / \   はい   いいえ ⇒ 終了    |  乾いているか   / \  いいえ はい ⇒ 取り込む   |  雨が降りそうか   / \  いいえ はい ⇒ 取り込む   ↓  時間を記録して終了 と言う風にね。  実際には、これに取り込む準備とか、干してあるものの判断とか、ほかに優先しなければならないことがないかなど様々な状況判断が加わるでしょう。 ★必要は発明の母と言いますが、プログラムをするかしないかは、その必要性があるときにはじめても構わないでしょう。プログラム自体を目的にしたって身につくものではありません。プログラムもあくまで手段ですから、それ自体が目標ではないのです。 ★絶対に必要な能力 1) 客観的にあらゆる状況を含めてしたいことを整理できること   フローチャートを書いてみる。基本的にフローチャートからはじめます。出来れば複数のスタッフの助けも借りて、徹底的にフローチャートを煮詰めます。 2) 可能な最適な言語を選択する。        

oyajin082
質問者

お礼

アドヴァイスありがとうございます。 フローチャート作りが大切なんですね。 それに必要なソースを書いて正しければ動くということですかね。

その他の回答 (6)

noname#208507
noname#208507
回答No.8

> プログラマーの皆様はどうやってプログラム脳を作られましたか。 ○ 最初の2,3年くらい 最初は「習うより慣れろ」でひたすらコーディングしてました。この頃はプログラミング言語やオブジェクト指向の本ばかり読んでました。 ○ 3年目あたりから アルゴリズムやデータ構造を勉強し直しました。処理速度や結果の精度の重要さを実感したのがこの頃。必要なら、問題に合わせてアルゴリズムに色々な工夫を凝らすようになりました。 ○ 8年目あたりから 設計やアルゴリズムやプログラミング技術ばかりでなく、問題そのものにも注意を向けるようになり、形式手法のような数学や論理で整理する方法も勉強し始めました。 一方で、#5さんと同様、分割統治(divide and conquer)や段階的詳細化(stepwise refinement)でのプログラミングを意識するようになったのもこの頃からです。 私の場合はかくの如し。

oyajin082
質問者

お礼

アドヴァイスありがとうございます。 まだ慣れる時期なので、とにかくコーディングをして引き出しを多くするようにしてみます。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.5

プログラミング言語の文法的な事は別として、プログラミングは問題(目的とする処理内容)を段階的に簡単な問題に分解し、そしてその解を組み上げていき最終的な問題の解を求める事だと私は思ってますから、そういう勉強の仕方をされてきた人であればわりとすんなりできるようになるんではないかと思います。

oyajin082
質問者

お礼

アドヴァイスありがとうございます。 確かにスモールステップの原則が応用できそうですね。 そのような思考をしてみたいと思います。

回答No.4

私は「ある程度までは」慣れだと思います。 一部は「慣れ」で解決してはいけない問題ですし、その「ある程度」を超えたら「慣れ」というよりは「自主学習」ですね。 私の場合は 「どうしてこう書くとこんなふうに動くんだろう」とか 「こんな感じに動かしたいんだけど、どう直せばいいんだろう」とか そういうことばかり考えてたら、いつの間にか、思い描いたものをすぐにコードに起こせるようになっていました。 そうなるまでにかなりの時間がかかったのは確かです。 そこから先は、使える言語を増やして、知ってる概念を増やして、勉強、勉強です。 一方、「慣れ」の問題ではないと私が捉える部分もあります。 まず、「経験則」や「原則」などと呼ばれるものは、「慣れ」で解決すべきではないでしょう。 DRYの原則(同じ事を何度もやるな)やYAGNI則(使わないなら作るな)、KISSの法則(単純にしとけ)等が有名です。 あとはそうですね。 この世に多くの物の考え方があるように、この世には沢山のプログラミング言語があって、それぞれ理念や信念が微妙に異なってたりするものです。 「プログラマがやろうとすることを極力邪魔しない」という理念の言語(Cとか)で窮屈なスタイルを貫き通すのはある意味ではナンセンスですし、 逆に「プログラマが間違いを犯さないように極力見張る」という理念の言語(Javaとか)で型破りなコードを書くのは至難の業となります。 あるいは、「なるべく読みやすいコードが書けるように」という理念の言語(Rubyとか)で読みにくいコードをわざわざ書くのは恥ですし、 逆に「読みにくくてもいいからなるべく短く書けるように」という理念の言語(Perlとか)で読みやすい代わりに長ったらしいコードを書くのもまた、場合によっては恥となるかもしれません。 プログラミング言語に馴染めないのは、もしかすると言語との相性に問題があるのかもしれません。 どちらにしても趣の違った言語で遊んでみるのもいい経験になりますし、ためしてみると良いかもしれませんね。 尚、プログラミングに向いていない(他のことに向いている)頭脳の持ち主がたくさん居ることも事実です。 私の元同級生でfor文がどうも理解できていない人がいましたが、緻密なドット絵が上手かったものです。

oyajin082
質問者

お礼

アドヴァイスありがとうございます。 私はまだ知識も少なく慣れなければならない段階で、プログラムをどう動くようにすればどんな結果になるかがはっきりと理解できていない位の超初心者なので、先ずは公開されているサンプルソースを打ち込んで動かして、セオリーを覚える事をしなければならないようですね。

  • nak777r
  • ベストアンサー率36% (49/136)
回答No.3

No2 とは逆ですが >習うより慣れろ だと思います。 ただ闇雲に自己満足に浸る作り方をしろという話ではないです。 見直す習慣をつけなさい という事です 国語の時間に書いた作文を見直してみると、 なんか下手糞だと感じる事ありませんか 小説家ならうまく書けるであろう言い回しや表現、 それらは、書く事に慣れなければ出来ません まずは見直す習慣をつける事 自分の持っている知識で、お題に沿って動作するプログラムを作成した 完成したなら見直す。 下手糞だなと感じる じゃあどこが下手糞なのかを考える どうすればシンプルになるのか、 綺麗にブロック毎に処理が分けられた 自分なりの理想な作りになるか 誰だって作り直しはしたくないので そういう見直しを繰り返して、知恵をつけていくと 自然とプログラム脳になっていきます

oyajin082
質問者

お礼

アドヴァイスありがとうございます。 確かにプログラムはいろいろな書き方で同じ結果が出ますから、よりシンプルでスマートなコーディングになるように見直して考えるようにしてみます。

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.2

私がプログラミングを始めたのは40年も昔のことで、今とは状況が違いますが。。。 >習うより慣れろという事は分かっていますが これは、やめたほうがよいです。いわゆる「悪い癖」を付けるだけです。 プログラム上達のためには、コンピュータを使わないことをお勧めします。 ん('_'ゞ??? と思うでしょうが、簡単な問題をコンピュータなしで考えて、それをコンピュータに打ち込んだら1発で動くようにプログラムを書く。という練習が効果的です。 練習は、純粋に数学的な問題がよいです。 たとえば ・3の倍数に切り上げる(ある数を与えると、それに等しいか大きい、最小の3の倍数を表示する) ・金額をあたえると、その額になる紙幣とコインの数を表示する。(最も数が少なくなるように) などです。

oyajin082
質問者

お礼

アドヴァイスありがとうございます。 この方法ですとPCが使えない場所でもトレーニングができますね。 さっそく試してみます。

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

とにかくプログラムを作成しました。 自分で考えることもありましたし、他人がネットで公開しているようなものも動かし、自分で改造したりしました。 「考え方が身につかない」なんて逃げ道を自分で考えることはしませんでしたね。とにかく動かしました。 「プログラム脳」なんて高尚なものでもないですよ。誰でもできるようなことです。

oyajin082
質問者

お礼

アドヴァイスありがとうございます。 やはり打ち込んで動かしたり、アレンジしてどうなるかを考えるのが良いのですね。