素晴らしいツイートなのでいつでも見られるように埋め込みリンクで掲載させていただきます。
一応、自分もこの歳になって、それなりに成功した部類に入ると思うから書いとくと、プログラミングやるなら情報系の(もちろん、まともなカリキュラムがあるとこ)学部/学科入っとくのは良いと思う。
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
ただ、一体何が基礎だろうかとか言わないと、なんかマウンティングぽくなるので、書き出してみる。
1. データ構造とアルゴリズム(計算量込み)
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
これはまだ独学しやすい方だと思うけど、やっちゃまずいデータ構造の選択して性能悪化させるとかある程度わかる力付けることにつながる。特に木構造は重要。あと、O(n)、O(n log n)とかのいわゆるO記法も。
2. グラフ理論
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
いや、これが基礎か怪しいし、自分もこの辺の履修度びみょーなんだけど、現実の問題はグラフ上の問題として定式化可能な事はわりかし多いので(たとえば、フォロワー関係とか)、それをRDBMSにエンコードするにせよ、基礎の基礎くらいは知っといた方が楽だと思う。
3. オートマトンと言語理論
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
これはどちらかというと思考の道具としてかなと思う。正規表現 <-> NFA <-> DFA みたいな、対応関係とかは、インプットしておくと、入力に対してO(n ^ 2)とかの効率悪い正規表現書かずに済むとかにつながったり。
4. オペレーティングシステムの基礎
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
いや、これも私は色々怪しい理解な気がするんだけど、ユーザーモードLinuxにシステムコール追加したりした実験は、カーネル理解するのに多少なりとも役立った気がする。
5. プログラミング言語論的なもの
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
言語オタクにならなくていいんだけど、多くのものは木(抽象構文木)で表せるって理解しとくと、必要に応じてテキトーにプログラム変換かますいい加減プログラムとかサクっと書ける。
6. 分散コンピューティングとか
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
この辺は、講義で履修するシステムで、直接、今に使われてるのは案外少ないんでは思うけど、よーするに新しいぽい何かはRPCの変種なのね、とか、雑にとらえるのには楽だと思う。
7. コンパイラ系授業
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
簡単なマイ言語くらいは自作出来るようになっとくと、新しい言語出てきても、まあ適応するのにあんまり苦労しない傾向があると思う(これは私の特質であって、バイアスかかってるかも)
人によって、「他のも要るやろ」とか「これは使ってへんのやけど」とかあると思うけど、CS系科目一通りやっとくと「一見の新しさに振り回されない」態度は身に付きやすい気がする。本当に新しいものは意外と少ないのだという話。
— Kota Mizushima (on a diet) (@kmizu) 2021年2月5日
コンピュータサイエンスの基礎、ぼくは雑に「応用情報技術者試験の範囲を人に説明できる程度」って言ってる https://t.co/haJ0QfIaOS
— きしだൠ(K8S(Kishidades)) (@kis) 2021年2月5日
これ便利なのは、時代にあわせて応用情報のほうがかわってくれるので、ぼくの言葉を変える必要がないところ
— きしだൠ(K8S(Kishidades)) (@kis) 2021年2月5日
まとめ(ツイートが消えてしまった場合用)
Kota Mizushima さん:
- データ構造とアルゴリズム
- O(n)、O(n log n)などのO記法も
- グラフ理論
- 現実の問題はグラフ上の問題として定式化可能なことが多い
- オートマトンと言語理論
- オペレーティングシステムの基礎
- プログラミング言語論的なもの
- 多くのものは抽象構文木で表せることを理解しておく
- 分散コンピューティング
- コンパイラ
- 簡単なマイ言語を自作できるようになっておく
きしださん:
- コンピュータサイエンスの基礎とは「応用情報技術者試験の範囲を人に説明できる程度」
- 時代にあわせて応用情報の方が変わるため上記の言葉を変える必要がない