回答編集履歴
6
「理解した」と「覚えた」を明確に分けた
test
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
「`A`を
|
5
|
+
「`A`を理解するには`B`という前提知識が必要だ。ならば、`B`を理解できない限り`A`を理解することはできないはずだ」
|
6
6
|
|
7
7
|
という前提で学習してください。
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
実際にはフィーリングで覚えてしまうこともあるかもしれませんが、その
|
11
|
+
実際にはフィーリングで覚えてしまうこともあるかもしれませんが、その学習方法に頼ると後で痛い目に合います。
|
12
12
|
|
13
13
|
|
14
14
|
|
@@ -22,11 +22,11 @@
|
|
22
22
|
|
23
23
|
書籍の例題(`A`)を見ながら**フィーリングで**覚えてはいけません。
|
24
24
|
|
25
|
-
用語(`B`)を
|
25
|
+
用語(`B`)を理解してから次のステップに進んでください。
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
下記を人に解説できれば、解説できた分は
|
29
|
+
下記を人に解説できれば、解説できた分は理解したと言えます。
|
30
30
|
|
31
31
|
- 用語の意味
|
32
32
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
**何度も言います。**
|
88
88
|
|
89
|
-
「`A`を
|
89
|
+
「`A`を理解するには`B`という前提知識が必要だ。ならば、`B`を理解できない限り`A`を理解することはできないはずだ」
|
90
90
|
|
91
91
|
という前提で学習してください。
|
92
92
|
|
@@ -108,7 +108,7 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
-
## 例題を見て覚えた人が誤った学習をするケース
|
111
|
+
## 例題を見て「覚えた」人が誤った学習をするケース
|
112
112
|
|
113
113
|
|
114
114
|
|
@@ -178,13 +178,13 @@
|
|
178
178
|
|
179
179
|
|
180
180
|
|
181
|
-
「`A`を
|
181
|
+
「`A`を理解するには`B`という前提知識が必要だ。ならば、`B`を理解できない限り`A`を理解することはできないはずだ」
|
182
182
|
|
183
183
|
という前提で学習してください。
|
184
184
|
|
185
185
|
|
186
186
|
|
187
|
-
つまり、前のページ辺りに載っている機能の説明(`B`)を
|
187
|
+
つまり、前のページ辺りに載っている機能の説明(`B`)を理解してから例題(`A`)を見てください。
|
188
188
|
|
189
189
|
|
190
190
|
|
5
文章の修正
test
CHANGED
@@ -188,7 +188,7 @@
|
|
188
188
|
|
189
189
|
|
190
190
|
|
191
|
-
そしたら、仮に私のような人物から突っ込まれたときに、
|
191
|
+
そしたら、仮に私のような人物から突っ込まれたときに、「○○ページの△行目にこの機能はこういう書き方ができるって書いてありますよ。**知らないんですか?**」とあなたは正しい根拠を持って言い返すことができるようになります。
|
192
192
|
|
193
193
|
|
194
194
|
|
4
強調
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
「`A`を覚えるには`B`という前提知識が必要だ。ならば、`B`を覚えない限り`A`を覚えることはできないはずだ」
|
6
6
|
|
7
|
-
と
|
7
|
+
という前提で学習してください。
|
8
8
|
|
9
9
|
|
10
10
|
|
@@ -76,7 +76,7 @@
|
|
76
76
|
|
77
77
|
|
78
78
|
|
79
|
-
|
79
|
+
「概念レベルの知識」をある程度理解しておかないと、「とりあえず書いてみること」はできません。
|
80
80
|
|
81
81
|
|
82
82
|
|
@@ -84,11 +84,11 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
何度も言います。
|
87
|
+
**何度も言います。**
|
88
88
|
|
89
89
|
「`A`を覚えるには`B`という前提知識が必要だ。ならば、`B`を覚えない限り`A`を覚えることはできないはずだ」
|
90
90
|
|
91
|
-
と
|
91
|
+
という前提で学習してください。
|
92
92
|
|
93
93
|
|
94
94
|
|
@@ -180,7 +180,7 @@
|
|
180
180
|
|
181
181
|
「`A`を覚えるには`B`という前提知識が必要だ。ならば、`B`を覚えない限り`A`を覚えることはできないはずだ」
|
182
182
|
|
183
|
-
と
|
183
|
+
という前提で学習してください。
|
184
184
|
|
185
185
|
|
186
186
|
|
3
追記に対する回答を追加
test
CHANGED
@@ -59,3 +59,137 @@
|
|
59
59
|
|
60
60
|
|
61
61
|
もしフィーリングで**全てを**理解できるなら勉強になるかもしれませんが、初学者がそれを前提で学習を進めると、痛い目に合います。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
# 追記に対する回答
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
> プログラムをとりあえず書いてみることが大切
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
それは構文を頭である程度おさえたときの話です。
|
74
|
+
|
75
|
+
例えば、繰り返し処理を書きたい場合には`for`を使い、カウンタ変数の初期化、継続条件、ループ中の処理、ループ後の処理などを記述します。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
こういった概念のレベルで知識をある程度おさえておかないと、「とりあえず書いてみること」はできません。
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
なので、概念(`B`)を9割理解して、答え合わせとしてコーディング(`A`)をするという順序を踏む必要があります。
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
何度も言います。
|
88
|
+
|
89
|
+
「`A`を覚えるには`B`という前提知識が必要だ。ならば、`B`を覚えない限り`A`を覚えることはできないはずだ」
|
90
|
+
|
91
|
+
と考えてください。
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
> 例題を写しながら一文ずつ理解するという方法でも問題ありませんでしょうか。問題を何も見ずにとけることがほとんどありません。
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
それは各行で使われている機能(`B`)を理解しないまま、例題(`A`)を読んでいるからではないでしょうか。
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
書籍やサイトなどで記載されているコードはほ前のページ辺りに技術的な機能の説明が載っているはずです。
|
104
|
+
|
105
|
+
むしろ、載っていなかったらそれは書籍やサイトとして良い評価はできません。
|
106
|
+
|
107
|
+
(高いレベルを持つ技術者をターゲットにした書籍やサイトならその限りではありませんが)
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
## 例題を見て覚えた人が誤った学習をするケース
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
Javaを勉強中の人が`for`を学ぶとき、機能を確認せずにいきなりコードを見たら、フィーリングで理解するしかなくなります。
|
116
|
+
|
117
|
+
```java
|
118
|
+
|
119
|
+
for(int i = 0; i < 10; i++){
|
120
|
+
|
121
|
+
System.out.println(i);
|
122
|
+
|
123
|
+
}
|
124
|
+
|
125
|
+
```
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
フィーリングで覚えたJavaの初心者はこういう事を想像してしまうでしょう。
|
130
|
+
|
131
|
+
「`for`は`for(変数の初期化;何かの条件;変数をインクリメントする){ 処理 }`と書けば良いんだ。コードにそう書いてあるから、私の理解は間違ってないはず」
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
そんな架空の初心者に、私は突っ込みます。
|
136
|
+
|
137
|
+
- 「何かの条件」って何でしょう。この`for`文のループ回数は想像できていますか?
|
138
|
+
|
139
|
+
- `for`はその形式で書かなきゃいけない決まりはありません。
|
140
|
+
|
141
|
+
- 例えば、forの一番右の部分は、必ずしもインクリメントである必要はありません。そもそも省略も可能ですよ。って前のページに書いてありませんか?
|
142
|
+
|
143
|
+
- **前のページの説明をきちんと理解してからコードは読みましたよね。**
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
そろそろやめます。ただ、このようにフィーリングで覚えた人の知識に対して突っ込こもうと思えばいくらでも出来てしまいます。
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
とりあえず、サンプルコードを一文ずつ見ながら覚えてはいけない理由が何となく分かったと思います。
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
「コード上の書き方しか覚えていないため、**その機能を理解した気分になってしまう**」
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
すなわち、
|
160
|
+
|
161
|
+
「機能の1部分(の書き方)しか覚えていないため、**その機能の本質を正しく理解できない**」
|
162
|
+
|
163
|
+
ことが理由です。
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
コードを見て学ぶことは**「理解した」**ではなく**「理解したつもり」**にしかなりません。
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
## 上記ケースの解決法
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
さて、上記ケースではどう行動をしていくのが良かったのでしょうか。
|
176
|
+
|
177
|
+
くどいようですが、お分かりですね。
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
「`A`を覚えるには`B`という前提知識が必要だ。ならば、`B`を覚えない限り`A`を覚えることはできないはずだ」
|
182
|
+
|
183
|
+
と考えてください。
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
つまり、前のページ辺りに載っている機能の説明(`B`)を覚えてから例題(`A`)を見てください。
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
そしたら、仮に私のような人物から突っ込まれたときに、あなたは「○○ページの△行目にこの機能はこういう書き方ができるって書いてありますよ。**知らないんですか?**」と正しい根拠を持って言い返すことができるようになります。
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
言い返せられれば、大体の場合、正しい理解をできていると思います。
|
2
文章の修正
test
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
「`A`を覚えるには`B`という前提知識が必要だ。ならば、`B`を覚えない限り`A`を覚えることはできないはずだ」
|
6
|
+
|
7
|
+
と考えてください。
|
6
8
|
|
7
9
|
|
8
10
|
|
1
文章の修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
`A`を覚えるには`B`という前提知識が必要
|
5
|
+
もし`A`を覚えるには`B`という前提知識が必要ならば、当然`B`を覚えない限り`A`を覚えることはできません。
|
6
6
|
|
7
7
|
|
8
8
|
|