プログラミング
自分プログラミングのセンスはあまりないんですけどこういうときはこうするみたいにパターンを覚えることで乗り切ることはできるんでしょうか?
実際数学はこうやって乗り切ってきたのですが、、、
自分プログラミングのセンスはあまりないんですけどこういうときはこうするみたいにパターンを覚えることで乗り切ることはできるんでしょうか?
実際数学はこうやって乗り切ってきたのですが、、、
順次、分岐、反復の3つの制御構造(control structures)によって処理の流れを記述することを構造化プログラミングといいます。大規模なソフトウェアアプリケーション、システムも細かく分解していくとこの構造で構成されます。
1.順次(sequence) 部分プログラムを順々に実行する。
2.分岐(bifurcation) 条件式が導出した状態に従い、次に実行する部分プログラムを選択して分岐する。
3.反復(repetition) 条件式が導出した特定の状態の間、部分プログラムを繰り返し実行する。ループ処理。
これは問題解決能力の重要な構成要素でもあります。
プログラミング的思考力の構成要素(1)
分解・整理する 複雑な問題を小さな問題に分けて認識する
コンピュテーショナルシンキング(CT) 計算論的思考の構成要素(1)
問題を分解する 複雑な問題を解決可能なレベルまで分解する
結論から言うと、パターンを覚えることで完全に乗り切れます。 むしろ、それこそが上達の王道です。
質問者さんは数学をパターンで攻略されたとのことですが、プログラミングも非常によく似ています。プログラミングにおける「センス」の正体は、ゼロから何かを生み出すような力ではなく、「この課題にはあのパターンが使える」という引き出しの多さと、それを組み合わせる経験値に過ぎません。
数学でも公式を使って問題を解いたかと思いますが、数学の場合、この文脈だとこの公式が使えるからこれを使おう!のような思考で解いたと思います。プログラミングでも同じことが言えます。この処理を書く時はこのパターンを使おう!という定型を使うんです。数学でも同じですが、同じ問題でも複数解き方があります。最短で解くのが大事か、見やすくて後からわかるのが大事か、その時重視してるもので切り替えていきます。
プログラミングのベストプラクティスは先人の知恵であり、アンチパターンは先人たちの失敗です。また、アルゴリズムは先人が考えた偉大な解法です。デザインパターンやアーキテクチャもこれと同じことが言えます。
パターンは偉大です。積極的に活用しましょう!
すみません、パターンとはどういう意味のパターンでしょうか?(なんか解釈ミスしている気がして…)
もし、「こういう問題はこう解く」といった意味であればちょっと違うと思います。
プログラミングはセンスというよりも文章力と抽象化が必要ですね。
This answer has been deleted for violation of our Terms of Service.
数学をパターン学習で乗り切れたのなら、プログラミングもパターンを蓄積する方法で乗り切ることができるでしょう。
現実のエンジニアもゼロからロジックをひらめくよりも、過去の経験やデザインパターンの知識を組み合わせてコードを書いている人がほとんどです。
「データの入力を受け取るパターン」+「計算するパターン」+「結果を表示するパターン」というように、処理を細かく分解して、それぞれに自分の持っているパターンを当てはめていけば、センスに頼らずとも形になります。
経験を重ねることで「あ、これ前やったやつと同じ構造だ」と気づく瞬間が来ます。それがプログラミングにおける「慣れ」であり、センスの代わりになるものです。