AmazonのECとクラウドに共通する世界観、そしてガベージコレクションに頼り切りの現実
6 months ago(引用をかなり削っています)
ああ、これはもうちょっと話を広げてプログラミング言語のところまで行っていいと思います。つまり、C言語ってメモリ管理してたけど、だんだん高級言語になってしなくなって(ざっくり、Java的なVM世界と言えばいいのかしらん?)、リソースを綺麗に使うのって意識されなくなってますよね。でもって、意外とメモリリークで駄々漏れになってたりとか。
その意識する単位が一個抽象化されて上がったってことだよな~、と1年半くらいまえに「要するに仮想化って何?」というのを考えてる際に思ってました。そして最近もこの辺の議論をします。組み込みCみたいな役割ってどういう位置づけになるんだろうねぇ、みたいな。
推定ですが、高効率長文バッチ処理重重トランザクションをばしっと書ける人って減ってんじゃないかな、と。エンタープライズ系のSEでもJAVA以降しか知らないって人増えてるみたいですし。ウェブ系になるとPHPとPerl以降という人も増えてますし(これは業界が違うのでまぁ別にいいのですが)
その証左として、スケーラブルウェブシステムを作れる人/会社ってすっげー少ないそうです。大規模になると対応できなくて破綻する会社多しという話を聞いてました。
動的なメモリ管理を意識的にやっていたアセンブリ言語やCの世界から,LISP由来のgarbage collectionベース,つまりメモリは一見無限に見える(実際は一杯になると一生懸命かき集めてるんだけど)世界を作っても問題のない程度にメモリの量が増えた,というのが大きな変化になっていると思います.ただ,完璧なGCはないし,回収し切れないメモリ領域もあったりするから,決してGCにすべておまかせすればいいというわけではありません.
組み込みのアセンブリ言語やCの世界は,要するにメモリ領域が極めて限定されているのと,メモリ管理にCPUを使うほどの処理能力の余裕もないのですよね.応答速度が要求されるから.この抽象化 .vs. 高速化の相反する要請のトレードオフを考えるのがシステム設計者とプログラマの仕事です.
データベースも抽象化されているので,難しいトランザクション処理はほとんど自前ではやっていないでしょう.DBMSにおまかせしちゃってるような気がします.ただ,その部分の知識がないままだと,swmemo大人の書いている通り,一定規模以上の仕事はできなくなりますね.