
未経験無職がプログラミングの勉強を始めた話:2日目
こんばんは。さいとうです。
今日はいろいろあって、日を跨いでの時間にアップしています。
なるべく夜は早めに寝たい派なので眠たい目をこすりながら気力で書いてます。
さて、昨日は勉強方法やこれまで学んできた感想を話したので、具体的にプログラミングで躓いたところを書いていきます。
大体の方には共感してもらえるかと思ってますが、レベルが低すぎたらごめんなさい。
1.躓いた箇所の説明
とにかく理解が追い付かなかった箇所が、「多重ループ」です。
ループについて簡単に説明すると、PCに同じ処理や、特定の条件の処理を何度も行わせたいときに使用する処理です。
「for分」や「while文」を使います。
「多重ループを用いて以下を表示させよ。」
****
****
****
****
という課題が出ました。
これはまだ理解ができ、すんなりと表示させることができました。
17、18行目でfor~文を使用することで多重ループを構築し、縦4文字・横4文字で表示させることができました。
(jのループで「*」を表示、iのループで改行を行っています。)
問題はこの次の課題です。
多重ループに条件を加えて、行ごとに表示させる「*」の数を変えるというものでした。
具体的に表示すると以下です。
****
***
**
*
これが全く理解できず、頭を悩ませました。
結果として、表示方法をWebで調べて解決させましたが、その場ではスッキリしない結果となりました。
調べた結果、私が書いたコードはこうです。
20行目のif文の条件式が全く出てこず、何とも悔しい思いをしました。
とても仕様もないことのように思えますが、このとき私は一度プログラミングに挫折しました。
2.学習中に躓いてよかったこと
正直に申しますと、多重ループに至るまで、テキストに書いてあることで理解できないことはなかったですし、プログラミングって簡単だと思い込んでました。
深く考えずとも学んだことを直感的にアウトプットすれば上手くいくと、そのときの私は本気で思っていました。
もちろんですが、直感的に物事を進めて上手くいくのは経験を積んだ人間の特権です。
その経験が明らかに足りない私が、そのような態度でうまくいくはずがないことを体感しました。
そこからは課題についてひとつひとつ真剣に向き合い、どうすればより良いコードになるか考え、分からないことは質問し、調べ、コードを発展させる方法を探るようになりました。
人間とは不思議なもので、楽して手に入る楽しさというものは長続きしません。
頭を使い、体を使い、体得したもので何かを生み出した瞬間に最上の楽しさを覚えるものです。
この瞬間の私がそうでした。
3.コードを書く楽しさを覚える
躓いた箇所の課題をより発展させた、次の課題で「最上の楽しさ」と出会いました。
そのときの課題は以下を表示させよ、というものでした。
*
***
*****
*******
私が書いたコードはこうです。
ピラミッド型の図形を、下のように二つの三角形に分けることにしました。
*
** *
*** **
**** ***
あとは左側の三角形を表示させる命令と、右側の三角形を表示させる命令を入れてあげるだけです。
(左側の三角形は15~22行、右側の三角形は15行と23~26行です。)
とにかく頭を絞って出した答えだったので、このコードを打ち込んで、正しい結果が表示されたとき、アドレナリンがドバドバ出るような快感を覚えました。
ただ、話はここで終わらないんです。
他に何かいい方法がないか、と模索していると次のような方法が見つかりました。
集合積(高校の数学Ⅰで習う”AND”のこと)を用い、たったの10行に収めているコードがあったのです。
この瞬間に私は、「プログラミングってなんて面白くて奥が深いんだ!」と感動しました。
正しい結果が出たからといって、そのコードが最適解というわけではなく、他にも多くの可能性があることを知りました。
もちろん「短いコードがいいコードだ!」と言い張るつもりはないですが、その可能性に魅せられました。
自分のアイデアを理論的に具体化し、考えられる可能性からより美しいものを選ぶという作業が、私にとってはとても楽しいことなのだと気づきました。
4.終わりに
今回は課題に躓き、克服し、よりプログラミングの楽しさにハマった経験をお話ししました。
まだ学習中の身なので、これからもたくさん躓いたり挫折することもあると思います。
仕事にするなら尚更ですね。
でも、乗り越えたときの”楽しい”という感覚を大切にしてこれからも頑張って学んでいこうと思います。
他の人からすると、とてもくだらないことで一喜一憂しているように見えるかもしれませんが、一人でも多くの人とこの感覚を共有したいです。
また明日も何か書くと思いますので、ぜひぜひお目通しいただければ幸いです。