開発
コンピュータ基礎技術の楽しさ
ishikuro
好きなこと
みなさんが情熱的に打ち込める勉強や仕事はなんですか?例え無給でも、寝食を忘れて打ち込める物が一つくらいはあると思います。中でもITエンジニアは端からみて何が楽しいのか理解に苦しむような趣味が目立つような気がします。そんな場面で私はよく、それのなにが楽しいのか(もちろん嫌みではなく)説明を求めます。もしかしたら自分も好きになれるかもしれませんしもっと身近に思えるはずです。今回は反対に私が何が好きなのか述べようと思います。
私について
私はコンピュータの基礎技術を学んでいるときが一番楽しく感じます。
元々、計算とかものづくりは苦手なほうで調べ物が好きだった性格もあり、世の中の成り立ちを理解したいという欲求がありました。なので、生命の定義であったり量子力学や宇宙論についてのストーリーを読むのが好きでした。もし、もっと計算力があって賢ければ物理学部に行きたかったくらいです。残念ながら学力の問題からそれは早々に諦めましたが、コンピュータの分野に行き着いてからは”なぜコンピュータが動くのか”に思いを馳せるようになりました。
コンピュータの学習
コンピュータの学習というのは、数学や物理の計算とはまた違った勘が求められます。60%の人間はプログラミングの素質が無い という記事を最近知りました。
プログラミング言語とは、それ自体は無意味なものである。ある一定の一貫した規則に従って解釈した結果、これまたそれ自体では無意味な結果を出す。つまり、プログラミングの素質は、構築したメンタルモデルを、ブレずに一貫して適用できるかどうかにかかっているようだ。
これにより会津大でも、高校の成績は良かったのにプログラミングで悩む学生は多いです。この特別な頭の使い方から、美しいアルゴリズムやよく考えてるなぁというようなプログラムが幾通りも生まれました。
基礎の楽しさ
どんな大きなシステムも、先ほど言及があったような小さな規則の集合なのです。情報の最小単位である[有または無]を[通電または遮電]で表すところから始まり、ペンで名刺に書けるほど簡単な足し算回路を、何億、何兆と繋げてこんにちのコンピュータが成り立っています。これを反対から見てみましょう。Webも表計算ソフトも仕組みを分解しつづければ、例えば[通電または遮電]というような小さな規則の上に成り立っているのです。この話だけでも私は楽しく感じるのですから、両者の仲立ちをしているものについて疑問に思わないはずがありません。
物理学の世界[電子, 光, 磁気など] <===ハードウェア===> <===OS===> <===一般的なアプリケーション===> ユーザー
ここでは、単純な足し算回路からプログラム実行に渡る直前までの仕組みをハードウェアと呼ぶことにします。ハードウェアから一般的なアプリケーションが動く直前までがOSです。
老舗OSであるUNIXの代表的な実装例をコンパクトにまとめた、tunixという小型の教育用OSがありました。それを教材にソースの断片を精読したことがあるのですが、感心してしまうようなアイディアの宝庫です。ハードウェアの電気的動作から、どのようにソフトウェアを実現するのか。そのために、定番のアルゴリズムは惜しみなく投入され、たった一つの機能を取ってもあらゆるプログラミングの素質が総動員されます。ハードウェアも同様で、私はそこに最も知的好奇心を刺激されるのです。
今回の記事であまりコンピュータに詳しくない方や、いままで基礎に感心が無かった方へ少しでも考えが伝われば幸いです。ITエンジニアたちの趣味はこれ以外にも沢山あるでしょうからぜひ周りの人にも聞いてみてください。