コンピュータサイエンスの学位を取ったといっても,博士は自分の専門分野にしか取り組んでいないし,修士も講義はほどほどに受講していたので,CSの多岐にわたる基礎知識は学部の講義によって得たものが多いことになる。元々身につけきれなかったものも多いが,それでも幾分か自分の役に立っているもの,そうでないものが明らかになってきたように思う。
コンピュータアーキテクチャとオペレーティングシステム
量子コンピュータってよく分からんけど,全然アーキテクチャ違うよね?だからプログラムも全部書き直しだよね?そうだよね??やっぱりそうか,といった確認をすることがある。
バイナリを閲覧していて,リトルエンディアンかな?と気に掛けることがある。
これ配列に要素足す度にn+1サイズのメモリ確保してる?してるのか!と気づくことがある。
データ構造とアルゴリズム
Pythonを書いていて,リストに対するinってもしかして全部探してる?探してるのか・・・ハッシュにしよ(長年perlユーザだったので辞書のことをハッシュと言ってしまう)となったことがある。
画像処理・コンピュータグラフィックス
画像とは縁がないので役に立っていないように思われるが,実は講義で使ったJavaの記憶がうっすらあるおかげでJavaベースのなんやかんやを読むときに役立っている。
コンピュータネットワーク
これが一番役に立っている。ネットワークは何かと調子が悪くなるが,その時にこれはDNSだなとかこれはプロキシだなとか問題の切り分けができる。
プログラミング言語
これ正規表現で書けるかな?・・・書けないな?でもこの言語の正規表現は正規表現を超えているから書けるらしいぞ???といったことがあった。
チョムスキー階層くらいは心から理解しておきたいなと思うことはある。
データマイニング・機械学習
これはもう全然役に立っていない。授業が重すぎるんだよ。
セキュリティ
言い訳をするときに,「今回は可用性はどうでも良いので」みたいな日本語が書けるのはかなり良い。
数値計算
もうだいぶブラックボックスが重なっており,どこかで桁落ちしていても気づけない。
情報と社会みたいなやつ
講義でビットコインの紹介があったのだが,あのときに買っていれば今ごろ億万長者だった。