大学生になって学んだこと
大学生として学んだこと
前書き
- 情報系の学生です。数学とweb開発とプログラミングが好きです
理解することを理解した
- 大学一年生の時は線形代数で躓いていた
- 単位が取れないという躓きではなかった、授業にはきちんと出席している、黒板に数式を殴り書く教授の授業を受けていた。
- 演習問題の解き方を覚えればテストの回答を書くことができた何も問題なかった。
- しかし授業をちゃんと受けていたにもかかわらず問題を解く方法はわかるが、どうしてそうなるのかの部分がまるっきりわからなかった。
- 研究室に配属されて輪読という形式で本を読むことを学んだ
- 本屋に並ぶ専門書を見て自分はもう読むことはできないんだと思った
- 授業で使われている教科書が難しいのでは無いかと考えて本屋や図書館で線形代数の本を何冊かめくったがどれもこれも1ページすら理解できなかった。
- このときの自分の状態をを正確に表現するのであれば、文字は終えるのだが何一つとして頭に入っていない状態だった。ただ文字を追うことを読むと勘違いしていたことがのちにわかった。
- 本屋さんにはとても興味のそそる本がたくさんありました、相対性理論、トポロジー、力学、整数論、etc... のに自分は頭が悪いのでもうこの本たちを読むことはできないのだと半ば諦めていた。
- 学術書の理解ができないことと対照的にプログラミングにのめり込みました。手を動かしてコードを書いて何かを作ることがとても楽しいことに気がついた。
- 大学一年生から時が過ぎて研究室配属の時期になった。この頃にはインターンや業務委託などの経験で開発のスキルは身に付いてきて就職にもまあ困らないのではないかという楽観的な自信ができてきたので、自分の興味を追及できそうな研究室を探して無事に配属されました。
- そこで大学生活で二度目の数学との出会いがありました。
- 情報系の研究室ですがゼミでは主に数学書の輪読でした。私はまたあの1ページも理解することのできなかった線形代数の教科書に向き合うことになりました。
- 輪読は本当にごく普通の形式で章ごとに担当者を決めて本文を追い、出てきた問題も解いてゼミ生の前で解説をするような形でした。
- 自分で解説をするとなるとかなり読み込んでこなければならないので否が応でも本文を読んで学習しました。
- 先生からは少しでも詰まっている箇所や論理が抜けている箇所に対してどんどん質問が飛んできました。~って言ってるけど~の定義はなんなの?その一式目から二式目の式変形はどうなっているの?この証明は全体として結局何が言いたいの?その質問に対して答えられない時に自分は理解できていなのだとメタ認知することができました。
- 輪読から理解しているとはどういった状態なのかを理解できた
- 飛んでくる質問の粒度から数学の教科書の読み方がわかりました。
- 専門書を読むとは目で文字を追うことではなく、一行一行、誰かに説明できるようにすることだということがわかりました。数学書であれば定義や定理まで遡って行間を埋められるか?自分の中で曖昧で意味が言えない単語がないか?一行一行丁寧に確かめていく作業こそが”読む”というものだったと気が付きました。
- 大学生になって初めて理解するを理解できた
- 数学書の読み方を通して「理解することを理解できた」これが自分が大学生活で学んだことです。
- 私は大学三年生になってようやく理解することを理解できたのです。小学校、中学校、高校とやってきましたが高校までは問題が解けることが理解したことだと、文字を黙読して追うことが読むことだと勘違いしていました。理解とは概念を自分が腑に落ちる形で説明できることだったのです。少し抽象的なので数学書であれば、証明の一行一行を定義まで遡って自分の言葉で説明できるかどうかが理解しているかしていないかだとわかりました。(抽象度の違いはあります、全体としてどう言ったことをしているのかに対する理解も大切です、上にあげたのはあくまで細部の理解の確認です)
構造を見出す
実際に学んだ数学で自分が一番好きなものについて言及したいと思います。
- 線形代数を学んだKerとかImとか
- 授業を受けているときは何が何だかほとんど分かりませんでしたがKerやImをどのような計算で出すことができるのかだけはわかっていました。試験はおおよそ計算問題だったので解けてしまっていたのですが、KerやImとはなんなのか?といった質問に答えることができませんでした。
- 線形性の定義は大事なものだと黒板に書かれていたことを覚えています。行列ならばこの性質を満たすのは自明じゃないのか?なぜこんなことを書くのだろうと不思議に思っていました。
- 研究室の輪読で線形代数のKerとImや次元定理を学習しました。線型写像で写した先をIm、写し先が0に潰れるものがKerであることを理解しました。
- 群・環・体を学んだ、準同型を学んだ
- 次にImとKerに出会ったのは代数学でした
- ある群から別の群へ計算を保ったまま移すことができる準同型写像にも線形写像と同じくImやKerがあることを知りました。
- 線形代数の線形性が準同型であることを知った、代数学と線形代数学が結びついた
- 例えば線形代数では、線型写像のKerは写像元の部分空間になる。
- そこから群の準同型写像のKerも部分群になるのではないかという予想がたてられた。そしてこの予想は実際に当たっている。
- 詳細に入り過ぎてしまうが代数学の環上の加群が正しく線形性を持ったものだった。
- 圏論を学んだ、それぞれの圏を構成できることを知った
- この抽象化により離れていた分野を一つのものとして抽象化できていることを知りました
- アーベル圏を学んだ、自分が線形代数と代数学で見出していた構造はこの圏だったのかと驚いた。
- プログラミングと似たようなものを数学に見出せた。物事の構造を捉えて抽象化する。interfaceを作る。
- 圏論は数学から構造を抜き出している。ソフトウェアエンジニアリングも現実世界から構造を抜き出している。圏はインターフェースである。上の例で言えば準同型写というインターフェースを持っていて群、環、体、環上の加群はその実装である。
- いわゆる点と点が繋がったというか大学時代にやってきた学問が混ざりあった。
- 圏論にはモナドの概念とクライスリ圏。(プログラムは集合写像ではないクライスリ圏の射であるという表語には震えた)型付きラムダ計算とカルテジアン閉圏など非常に親和性の高い分野がいくつかある。
以上が大学時代に自分が学んだことです。
大学を卒業する頃になってようやく、理解することを理解できた気がしています。
すべての物事が定義や公理に遡ることができるように、数学は形式が整っていて理解する訓練にとても良かったです。プログラムも数学とかなり近い位置に属していると思うので、次はソースコードを理解すること、いわゆるコンピューターサイエンスの基礎的な力に力を注げばエンジニアとして成長できるのではないかと密かに楽しみにしています。
追記雑文
- 残念ながら理解しようと試みることは非常に時間がかかる
- 理解できたと実際に運用できるかはまだ別の技能が必要だなと感じている。本文を理解できたからといって章末問題が解けるわけではない。ソースコードを理解できたからと言って自分でフルスクラッチで書くにはまた別の訓練が必要そう。
- いわゆる専門書の読み方がわかってきて学びたい学問の数が増えました
- 小説は文字を流し読みして情景を想像するので理解に重心を置くかどうかは読むものによります(それはそう)
- 理解している状態がわかってしまったので、あ、自分今、理解していないのに返事をしているなということに気がつくことが少々ある...
- 論文はまだ理解して読めない修行が必要