自分は大学でコンピューターサイエンスを学んでいて、10月からは次の3つの授業を取っている。
離散数学
データ構造・アルゴリズム Ⅰ
プログラミング入門 Ⅱ
内容としては基礎的なものが多く、なるほどね〜というテンションで淡々と進めていた。ところが、データ構造とアルゴリズムの授業で Stack と Queue を実装してみようという課題が出てきて、それがまぁ面白い。
手を動かすまでは "やるだけ" だと思っていたのだが、実装に着手した途端、考え事があれやこれやと出てくる。コードを書く、エッジケースに気づく、コードを直す、型や変数名による表現が適切なものか考え直す...。気づくと時間が経っている。
単純にプログラミングが好きなのか?しかし、数学でも問題を解いているときは似たような感覚に陥ることがある。もう少し抽象化できそうだ。
自分は勉強が好きだと思っていた。学問に限らず、新しい物事や手法を知ることはすごく楽しい。美味しいコーヒーの淹れ方、心地の良いインテリアの作り方、そしてゲームの勝ち方。
しかし、単純にインプットしていくことはそんなにテンションが上がることではない。昔から暗記系科目はすごく苦手で、今でも日本史・世界史とかはボロボロだ。
プログラミングと幕府の成り立ちが、自分にとってどのように違うのか。前者はより実利的かつ理由付けがはっきりしているように感じる。さらにはインタラクティブだ。
文章を書きながら、"思索" という単語が浮かび上がってきた。
し‐さく【思索】[名](スル)論理的に筋道を立てて考えること。思惟。
思索って正確にはこういう意味だったんだ。"思惟" は知らない単語だったけど「(物事の根本を)心で深く考えること」 という意味らしい。なるほど、これは思い描いていた単語のイメージにすごくフィットしている。
プログラミングも数学も、基礎をただインプットしている段階では思索する余地がない。ほとんどは定義付けがしっかりと行われており、揺れが生じない。しかし、問題を解く時に初めて、頭の中にあるものが有機的に繋がり、頭の中を駆け巡っていく。これこそが思索だ。
知識を得れば得るほど、問題を多面的に考えることができ、解の質が上がったり難しい問題を解けるようになる。だから結局、インプットも思索には欠かせない。
つまり、自分は "勉強" ではなく "思索" が好きなのかもしれない。大発見だ。
自分が昔から対人ゲームが大好きな理由がはっきりして気持ちが良い。
すっきりしたので、勉強の続きに取り掛かろう。