もしかしたら、コンピュータやネットワークの基本を学びたければ、僕たちはLinuxのカーネルを読んで理解するべきなのかもしれない。
僕たちは、プログラミングの勉強といったら、とりあえずやりがちなのが、Swiftを学んでiOSアプリを作る、PHPを学んで、Webアプリを作る。ネットワークの本を読む。などである。
でも、それでいいんだろうか。それをやることは否定しないけど、SwiftやPHPはゴロゴロ変わっていって、ちゃんとした技能が残らない感じするのである。ネットワークの本は本で、一次情報じゃない。
もちろん、アプリを構築するときのノウハウは手に入る。
でも、もしかしたら、僕たちは賽の河原の石積みをやっているのかもしれない。もしかしたら、コンピュータの表層的なことを理解するのではなく、もっと根本から理解するべきなのかもしれない。
コンピュータの根本とは何か、それは、ハードウェアだったり、OSだったり、ネットワークだったり、コンパイラだったりする。
で、現時点で中身を覗くことができるネットワークOSはLinuxとFreeBSDだ。
Linuxのカーネルを理解して、仕事があるかはそういう方面のことには疎いので、知らない。儲かるという話はある。
でも、もしかしたら、SwiftやPython、PHPのような、ハードウェアから遠い高級言語は、間にヌルッとしたものが挟まっているので、コンピュータを理解することとは遠いのかもしれない。
仕事でそういう言語が必要なのはわかる。でも、もしかしたら、(特に若い人は)学ぶべきは、iOSアプリの作り方ではなく、Linuxカーネルの読み方なのかもしれない。iOSアプリから始めるのではなく、Linuxカーネルと、C言語とアセンブラから始めるべきなのかもしれない。
僕は、iOSアプリから始めたが、それは間違っていたのかもしれない。
では、それぞれの長所と短所を比べてみよう。
- Linuxカーネルを読む
- 長所
- コンピュータの基本がわかる
- ネットワークやコンピュータの構造が、第一次情報としてわかる
- 時代によってそんなに変わらない(これは正しいかどうかわからない)
- カーネルについての解説書がいっぱいでてる
- ソースコード読みの訓練になる
- 特定のベンダに縛られない
- 儲かる(本当かな?)
- 短所
- 難しい
- 時間かかる
- 長所
- iOSアプリを作る
- 長所
- 形のあるものを作れる
- 短所
- ゴロゴロ変わっていく
- コンピューティングの基本はわからない
- 人のソースコードを読むスキルは身につかない
- 長所
ということで、わけわからないかもしれないけど、Linuxカーネル読んで、色々記事書きたいと思う。
実際読んでてよくわからないが、よくわからんけど面白いのがLinuxカーネルだ。