ソフトウェアの劣化

「電磁時代:仕事、愛、そして人生、ロボットが世界を支配するとき」という本で、ロビン・ハンソンはプログラムの劣化について簡単に説明しています。



このソフトウェアはもともと、タスク、ツール、および状況の1つのセット用に開発されました。 しかし、新しいタスク、ツール、状況の絶え間ない流れに対処するために、徐々に変化しています。 そのようなソフトウェアはより複雑で脆弱になり、有用な変更を加えることがより困難になります(Lehman and Biledy、1985) 1 。 最終的には、最初からやり直して、新しいサブシステム、場合によっては完全に新しいシステムを最初から作成する方が適切です。


私はそれが本当だと確信しています。 原則として、新しい条件にソフトウェアを適切に適合させるには、新しいソフトウェアをゼロから作成するよりも多くの時間と労力が必要です。 プログラマーはこれを認めたくありませんが、証拠は明らかです。 オープンソースプロジェクトにはいくつかの有名な例があります。



マルチプロセスFirefox



Mozilla Firefoxはもともとすべてのタスクを1つのプロセスで実行していました。 Google Chromeのリリースにより、マルチプロセスモデルによりセキュリティとパフォーマンスが向上することが明らかになりました。 Mozilla開発者は間もなくFirefoxでマルチプロセッシングを実装する方法の計画を開始しました。 それは2007年でした。



ほぼ10年後、MozillaはついにマルチプロセスFirefoxを大勢の聴衆リリースしました 。 この遅延は、欲求の欠如からまったく生じませんでした。 Mozillaには才能と意欲のある開発者がいます。 ただし、ChromeはFirefoxを変更するよりもはるかに短い時間でゼロから作成されました。 これには主に2つの理由があります。





しかし、状況はさらに悪化しています。 制限は相反します。内部アーキテクチャを再構築する必要がありますが、パブリックAPIはほとんど変更しません。 Mozillaがこれを行うのに10年かかったのも不思議ではありません。



イベント指向のApache



Apache httpd « ». 80, accept()



fork()



. read()



write()



. , close()



exit()



.



, … . , . : 1995 . Apache , . , 10 000 . « » 1000 1000 . , . .



, Nginx . Slowloris.



Nginx 2007 , . Nginx Apache httpd . event Apache 2.2 2005 . . , , mod_php. 2012 , Apache 2.4 (MPM) . , prefork MPM-, Nginx. Apache / . MPM httpd2.



CPython GIL



Python — . , ( , ) . Python : .



GIL. :



CPython  — , . , CPython . ( GIL , ).


GIL . Python . GIL , . . GIL — . CPython, , , Google, Microsoft Intel, GIL .





, . , , , , . , . , . , .













1. « : ». , -. . , .



2. , httpd, , . .



All Articles