Webアプリの基本を整理してる

Webアプリの基本の勉強をしている。 前に20歳くらい上のエンジニアの人に基本が大事だって言われたのだけど、だんだん分かりつつあるような...

そもそもプログラムというのが何なのかしっくり来てない。 OSと自分が書いたJavaとかPythonのプログラムが物理的にどう違うのかいまいちわからん。

プロセスが何かしっくりこない。 僕の書いたPythonのプログラムはプロセス上で動いていると思うんだけど、それってOSの動作とどうやってCPUを分けあって使ってるの?とか。

一方で、Webサーバーが何なのかは地道に調べてわかって来た気がする。 まずはOSに頼んで、ソケットっていうファイル記述子の一種を払い出してもらうらしい。 この辺はAPIを叩くようなイメージだと思う!

そのあとでポートをバインドする。ポートの指定が先かと思ったけどそうではないっぽい。 で、リッスンする。これが具体的に何なのかよく分からない。そもそもプログラムが「待つ」という状態が分からない。 プログラムってズバズバ実行されるものだと思うんだけど...待つって何なんだ... どこかにファイルが書き込まれていないかを0.X秒間隔でチェックする、とかならまだ分かるんだけど。

で、このあとそれをHTTPリクエストとして読み取り、うまいこと文字列を区切ってパラメータを読み取って、処理に繋げるんだと思う。 (この辺は『Webを支える技術』が参考になった。)

www.amazon.co.jp

このあとまた分からないのがサーバーが僕の書いたコードを呼び出す仕組みなんだけど...どうやって繋ぎ込むんだろう? Tornadoとかはサーバーに直接プログラムを書き込んでる気がするんだけど、Tomcatみたいなサーバーはどうするのだろうか。

その辺は今この本で学習中。 www.amazon.co.jp

この本に限らず、基礎の勉強会とかしたいな。