気まぐれにアルゴリズムとデータ構造の学習
はじめに
本日は仕事終わりにて、気まぐれにアルゴリズムとデータ構造(以下、アルゴリズム)を学習していました。流れに身を任せた結果、2024年3月26日現在の私はソフトウェアエンジニアとして働いていますが、大学院では情報系でなく工学系を専門にしていました。そのためか、プログラムは書けるものの、必ずしも高速にプログラムを書けていない印象を受けていました。
アルゴリズムの学習
このような経緯で特に昨年の後半からは、気まぐれにアルゴリズムを学習するようになりました。動くプログラムを書くだけで十分ならばアルゴリズムの学習は最低限で構わないのかもしれませんし、私の周りにいる中堅のソフトウェアエンジニアたちも、そこまで深くアルゴリズムの学習をしてこなかった印象を受けます。
しかし最近は、アルゴリズムの学習は囲碁の定石を覚えることに類似しており、アルゴリズムの定石を習得した方が高速にプログラムを書けるのではないかと思うに至りました。私は過去のプログラムを流用することで新しいプログラムを書いてきたのですが、過去のプログラムを流用できない場合には、自分の頭で一からプログラムを書かなければなりません。このような時にアルゴリズムの定石を覚えておけば、思考することなく反射的にプログラムを書けるので、従来よりも高速にプログラムを書けるという算段です。
学習の方針
情報系の専攻では教科書でアルゴリズムを学ぶとのことで、私自身も独学で教科書を流し読みしたことはありました。しかし言うまでもなく、教科書を流し読むだけでは、アルゴリズムを習得できませんでした。したがって、本年からは実際に問題を解くことで、気まぐれにアルゴリズムを学習するに至りました。
ひとまず本日は、問題を解く際には関連の知識を理解した上で、まずは解答を見ずに自力で解くようにしました。そして、その後に解答のプログラムと自分の拙いプログラムを比較して、紙に書きながら解答を理解するようにしました……この方法がよいのかはまだ定かでありませんが、少なくとも実際に問題を解くことは、アルゴリズムの定石を習得する上では必須な印象を受けています。
おわりに
三日坊主で飽き性な私が、どこまでアルゴリズムの学習を続けられるのかは定かでありませんが、アルゴリズムの習得はダイエットと同様に乗り越えたい壁です。別の機会でもアルゴリズムに関する記事を書く予定なので、今後ともお付き合いいただけますと幸いです。
今以上のやる気につながります!