プログラミングを学ぶ過程において、抽象度の低い、コンピュータの現実の実装に沿った言語で学ぶべきか、それとも数学的概念からプログラムを理解できる、抽象度の高い言語を使うべきか。大学でプログラミングを教える立場からの考察だが、結論はない。ただただ、コンピュータという妖しい存在の、奇妙な面白さが好きだ、というしかない。 ふとしたきっかけから「圏論の歩き方」という本を読んでいる。圏論そのものはとても高度で強力な数学的概念なんだけど、その強力さゆえに応用範囲がとても広い。この本はそれらをほとんど目にもとまらぬ速さで駆け足に紹介しており、それゆえ、これ一冊で圏論を理解できるようなものでは到底なく、その名が示す通りに圏論のいわば「ガイドブック」になっている。なもんだから、読む側のこっちとしても、次の旅先をどこにしようかなとガイドブックを流し読みするくらいの気楽さでパラパラと読んでいる。 さて、その中の「
![プログラムを数学の言葉で理解すること](https://cdn-ak-scissors.b.st-hatena.com/image/square/c842dbdc4a726cfe1f140d24123c6b1d59efe02b/height=288;version=1;width=512/https%3A%2F%2Ffukuchi.org%2Fimg%2Fsite-thumbnail.jpg)