
独習Cを挫折
Windowsは一通り読了しました.
— ハシビロコウ (@MASAbirokou) May 13, 2022
残りの期間で習得する言語としてCを勉強し直します.
2周以上する予定なので長い戦いになりそうですが頑張ります. pic.twitter.com/I7TePD6UZE
そろそろ独習Cが苦痛になってきた。
もうやりたくない気持ちが強い。やりたくないしもちろん楽しくもないから、集中できない。
すぐにTwitter開いたり、ちょびちょび休憩とったりソワソワしてる。
一旦ここで状況整理して、挫折に際し「何が嫌なのか?」そして「どう改善すればよいのか?」について書こうと思う。
なぜ挫折するのか?何が嫌なのか?
やはりCは難しい。
独習Cの冒頭:
Cは、元々がベル研究所のコンピュータの達人たちが好き勝手にUnixを作り上げるために、プログラミングの達人である自分たちのためだけに作ったプログラミング言語です。… 少しも初心者にフレンドリーなプログラミング言語ではありません。
にある通り、そもそもC言語は難しい。
ゆえに理解が追いつかない(Pythonの学習ではこんなことなかった)。
この理解不足が溜まっていく一方、(独習シリーズに特徴的な)たくさんの演習問題が降りかかってくる。
わかっている。演習が大切だということはよくわかっている。
しかし、理解できてない状態で問題の山を見るとどうしてもやる気がなくなる。
後はもう負のループだ。
理解不能 → 問題解けない → やる気出ない → 理解不能 → 問題解けない → やる気出ない → …
なんだけど、俺は理解できないと気持ち悪くてイライラする。
それゆえ、もう一周して勉強し直したいという気持ちもある。実にアンビバレンスな状態。
実際、今14章あるうち、11章の構造体が終わったところまできた。残りの章は量も少ないから、せっかくここまできたんだからとりまやりきりたいと思ってる。
そこで、もう一周やることを見越して、現状をどう改善するか?今の理解不足な状態で、残りのページをどのように進めて行けばいいのか?を次に話す。
開き直る - 挫折を改善して二周目につなげる
一周目だから、そこまで理解できなくてもいい
そもそも、独習Cは二周以上するものだ。一周で理解しようという考えが間違いだった。
とりあえず一周目でできる限り理解しようと頑張る。
だんだん難しくなってきて、また続けるうちにやる気がなくなってきたら
理解できない点があっても「一周目だから」と開き直る
どうしても難しい問題、特にこの章の理解度チェックとかは一周目は飛ばしてしまう。もしくは、ただの写経をする程度
このように「もう一周するから別にいいや」と開き直ることで、今理解できないことによる挫折はなくなるし、加えて、二周目することにやる気が出る。
さらに、二周目をやる際は、一周目でふつうに理解できた章は飛ばす。
そうすれば、二周目はやる部分が少なくなるし、自分の理解不足を集中的に克服できる。
一度目を通してるし、一周目の時に理解しようと頑張ったから、二周目は一周目に比べてよりスムーズに学習できる。
後は最高なループだ:
比較的カンタンに理解できる → やる気出る → 問題解きたい・解ける → スキルが身に付く → 理解できる → やる気出る → …
学ぶことに貪欲になる。
今後の予定
とりあえず、残りの12・13・14章を終わらせてしまう。
で、二周目は3・5・7~14章を再度やり直す予定。
最初は、一日一章のペースで2週間くらいで一周終わると思ってたけど、初学者は一章理解するのでも結構大変だとわかった。
本当は、さっさと独習Cを終わらせてC++の勉強に入るつもりだった。
でも、Cが理解不足のままC++勉強したところでまた挫折するだけだし、理解できないまま放置するのはイライラするし、べつに時間制限があるわけでもないんだからゆっくりやっていこう。
(追記)二週目は楽しい
やはり二周目は一周目に比べだいぶ理解できる。
わかると楽しい。
それで演習問題も解く気が湧く。
二周目は順調。