Web系のプログラマっていうと、よく2ちゃんねるなどのサイトで小馬鹿にされている感触がある。特にWebの中でも「PHPプログラマはレベルが低い」などの話題でよくネットが炎上しているのを見る。
それはなぜか
Web系のサービスは乱立していて、怪しげなものが多いから、という業界自体のイメージもあるかと思うけど、ここでは技術的な部分に絞って考えた。
自分ももともとはWebしか触れなかったため、過去の自分を思い出しながら理由を考えた。
HTTP がステートレスだから
HTTPという仕組みは、リクエストに対してレスポンスを返す、という単純な仕組みになっている。これはとても良い仕組みだと思うし、開発者としても考えることが少なくてすむ。
しかし、最初からその世界で生きていると、ステートフルな仕組みにおける「リソース管理」まわりの知識がつかない。
レスポンスを返したら一旦終わりだから、といって適当に作ってしまいリソースの後始末ができていない、といった感じだろうか。
フレームワークに乗っていれば、プロセス、スレッド、といった単位は基本的に気にしなくても作れるので、そういった比較的低レイヤーの知識がつかない。
並列処理に慣れていない
よくあるWebアプリ的な実装では並列処理を実装するという機会が少ない。
レスポンスを待って、終わったらコールバックを呼ぶというものはフロントエンドのJavascriptでよくあるが、共有資源を複数の並列処理からアクセスするということはまずない。
したがって、排他ロック などの知識がつかない。
以上、OSまわりと並列処理の競合回避の勉強に苦しんでいる自分の所感。