回答編集履歴
6
test
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
(注:以降はあくまで私の経験に基づく主観をベースにした参考意見であり、これを押し付けるつもりは全くありませんし、人それぞれの向き不向き、やり方、色々な考え方があってしかるべきものと思います。
|
2
2
|
質問者さんも、この回答を100%真に受けるのではなく、参考にしていただいたうえで、melianさんがコメントに提示している検索結果等を見ながら、自分に合った学習スタイルを模索していただければと思います。)
|
3
|
+
|
3
4
|
|
4
5
|
> プログラミングをする際、必要になってくるスキルの中で、コードを暗記する力はあまり優先順位が高くないのでしょうか?
|
5
6
|
→一般的に、競技プログラミングで上位に入りたい等の特殊な状況を除けば、プログラミングは暗記力よりも、調べる力や考える力の方が圧倒的に重要であると私は考えます。
|
5
test
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
(以降はあくまで私の経験に基づく主観をベースにした意見であり、これを押し付けるつもりはありませんし、色々な考え方があってしかるべきものと思います
|
1
|
+
(注:以降はあくまで私の経験に基づく主観をベースにした参考意見であり、これを押し付けるつもりは全くありませんし、人それぞれの向き不向き、やり方、色々な考え方があってしかるべきものと思います。
|
2
|
+
質問者さんも、この回答を100%真に受けるのではなく、参考にしていただいたうえで、melianさんがコメントに提示している検索結果等を見ながら、自分に合った学習スタイルを模索していただければと思います。)
|
2
3
|
|
3
4
|
> プログラミングをする際、必要になってくるスキルの中で、コードを暗記する力はあまり優先順位が高くないのでしょうか?
|
4
5
|
→一般的に、競技プログラミングで上位に入りたい等の特殊な状況を除けば、プログラミングは暗記力よりも、調べる力や考える力の方が圧倒的に重要であると私は考えます。
|
4
test
CHANGED
@@ -15,9 +15,10 @@
|
|
15
15
|
> 流石に四則演算や条件分岐、関数の使い方などはみなさん覚えていると思いますが、暗記の優先度が低い場合、どこからが覚えなくていいラインなのか基準も曖昧で、例えば、フレームワークやライブラリのコードは暗記する必要があるのかないのかわかりません。
|
16
16
|
→フレームワークやライブラリのコードも、もちろん暗記できるに越したことはありません
|
17
17
|
しかし、暗記に時間をかけるよりも、実際にドキュメントのサンプルをコピペして実行したり、自分が取り組んでいるコードに取り入れて試してみた方が時間的パフォーマンスは優れていると思います。
|
18
|
+
|
18
19
|
仮に時間をかけて丸暗記できたとしても、それをすぐに自分の意のままに操るコードとして落とし込めるわけではないです。
|
19
|
-
いろいろなパターンに適用するコードを書いているうちに、本質的な部分は覚えられます。むしろ、どこが
|
20
|
+
いろいろなパターンに適用するコードを書いているうちに、本質的な部分は覚えられます。むしろ、どこが本質的な部分かわからない状態で時間をかけてまで丸暗記するのは時間の無駄だと思います。
|
20
|
-
(もちろん、
|
21
|
+
(もちろん、記憶の片隅に置いておくことで、あとから重要な部分が繰り返し上書きされて本質的な部分が身につくので、最初にドキュメントを1~2周勉強するのは決して無駄ではありません)
|
21
22
|
|
22
23
|
|
23
24
|
> ドキュメント通りに1周だけ勉強したあとは、何周もその資料を繰り返し読んで、エディタに書き写すのではなく、わからないことを調べながら、自分の手で何か作ってみるほうが良いのでしょうか?
|
@@ -37,7 +38,7 @@
|
|
37
38
|
### 「暗記」の定義
|
38
39
|
以降では「暗記」(暗記力)を「集中的に反復学習する等し、内容を一字一句間違えず再現できるようになること」と定義します。
|
39
40
|
|
40
|
-
プログラミングで、この定義に沿った「暗記」を行おうすること(何周もその資料を繰り返し読んで、エディタに書き写すような行為)は、たいていの場合、コストパフォーマンスが悪くなる傾向にあるため、避けるべきです。
|
41
|
+
プログラミングで、この定義に沿った「暗記」を行おうとすること(何周もその資料を繰り返し読んで、エディタに書き写すような行為)は、たいていの場合、コストパフォーマンスが悪くなる傾向にあるため、避けるべきです。
|
41
42
|
それよりも、実際に手を動かして、調べる力や考える力を鍛えるべきです。
|
42
43
|
|
43
44
|
|
@@ -65,15 +66,15 @@
|
|
65
66
|
|
66
67
|
|
67
68
|
### プログラミングによる解決方法
|
68
|
-
|
69
|
+
多くの場合において、プログラミングによる解決方法は、ただ一通りだけしかないとは限りません。
|
69
70
|
ある要件をプログラミングで実現しようとする場合、いくつもの実装方法を考えることができます。
|
70
71
|
同じプログラミング言語でも、
|
71
|
-
・どのようなアルゴリズムを
|
72
|
+
・どのようなアルゴリズムを適用するか
|
72
73
|
・どのようなフレームワークやライブラリを使用するか
|
73
74
|
等で実装は千差万別になりえます。
|
75
|
+
|
76
|
+
|
74
|
-
|
77
|
+
以上を前提とすると、
|
75
|
-
|
76
|
-
|
77
78
|
・ソースコードを覚えるまでの暗記は不要
|
78
79
|
→もちろん覚えられればすごいが、ドキュメントのスニペットコードを時間をかけて「暗記」しても応用が利く場面が少ない(課題の複雑性)
|
79
80
|
→検索したり、使えそうな関数を自分でメモしておいてそれを利用する等で足りる。
|
@@ -81,8 +82,9 @@
|
|
81
82
|
→実際にコードを書いているうちに、短いイディオムは自然に覚える。
|
82
83
|
⇔アルゴリズム等「応用が広い汎用的なコード」は暗記する意味はあると思う。
|
83
84
|
|
84
|
-
・複数のフレームワークやライブラリ、イディオム
|
85
|
+
・複数のフレームワークやライブラリのコード、イディオムを丸暗記する必要はない
|
86
|
+
→自分で手を動かしてコードを書いて実行することで自然に身に付く。
|
85
|
-
|
87
|
+
(自分の作りたいものに、フレームワークやライブラリのサンプルコードを適用する等。サンプルコードの丸暗記ではなく、動作を考えて実装することで身につく)
|
86
88
|
|
87
89
|
|
88
90
|
## 例外
|
3
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
以降では「暗記」(暗記力)を「集中的に反復学習する等し、内容を一字一句間違えず再現できるようになること」と定義します。
|
39
39
|
|
40
40
|
プログラミングで、この定義に沿った「暗記」を行おうすること(何周もその資料を繰り返し読んで、エディタに書き写すような行為)は、たいていの場合、コストパフォーマンスが悪くなる傾向にあるため、避けるべきです。
|
41
|
-
それよりも、調
|
41
|
+
それよりも、実際に手を動かして、調べる力や考える力を鍛えるべきです。
|
42
42
|
|
43
43
|
|
44
44
|
## 調べる力や考える力の方が圧倒的に重要であると考える理由
|
2
test
CHANGED
@@ -45,7 +45,7 @@
|
|
45
45
|
### プログラミングが解決すべき課題の性質
|
46
46
|
プログラミングが解決すべき課題は、単純明快な正解があるものではありません。
|
47
47
|
|
48
|
-
たとえば高校生物で「植物は光合成によって何を生成するか?」という問題に対しては「グルコース」という単純な答えが用意されています。
|
48
|
+
たとえば高校生物で「植物は光合成によって何を生成するか?」という問題に対しては「グルコースと酸素」という単純な答えが用意されています。
|
49
49
|
|
50
50
|
しかし、プログラミングによって解決すべき課題は、定式的な問題ではなく、いくつかの問題の複合体となっています。これらは単純な暗記で対応できるものではありません。
|
51
51
|
|
1
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
> 現場でプログラミングをしている人はあまり暗記をせずに、分からない事はその都度調べているのですか?
|
8
8
|
→細かいAPIやコードなんかは都度調べています。コードレベルは息巻いて暗記する必要はなく、書いているうちに自然に覚えます。
|
9
|
-
(一方、プログラミングをちょっと離れて、基本的なアルゴリズムやコンピュータリテラシー、業界のしくみや業務要件に関わる基本知識は、IPAが行っている試験に合格するための試験勉強として暗記作業を行いました。これは単純な試験対策なので暗記が活きますし、これらを知っていれば、お客様や他
|
9
|
+
(一方、プログラミングをちょっと離れて、基本的なアルゴリズムやコンピュータリテラシー、業界のしくみや業務要件に関わる基本知識は、IPAが行っている試験に合格するための試験勉強として暗記作業を行いました。これは単純な試験対策なので暗記が活きますし、これらを知っていれば、お客様や他職種メンバーとのコミュニケーションが円滑になるからです)
|
10
10
|
|
11
11
|
> また、暗記力と思考力では後者のほうが重要な気がするのですが、実際はどちらが重要なのでしょうか?
|
12
12
|
→前述の通り思考力だと思います。
|