G+ варіантНе так давно до мене прийшла дещо несподівана метафора: програмісти - це садівники в саду синтаксичних дерев, вони стежать за порядком, підправляють неправильні гілки, стежать за загальною правильністю дерев, ґрунтом, захистом від шкідників, селекціонують і прищеплюють нові гілки тощо.
Трохи пізніше я зрозумів, що велика кількість коду часто не стільки синтаксичний сад, скільки синтаксичний ліс, в якому не так вже й складно загубитись і де закони природи і семантичної екології значать більше, ніж рука лісівника. Молодняк бореться за виживання і тягнеться до сонця, на середніх ярусах лісу часто лише залишаються одні стовбури, дерева-велетні на своїх кронах дають прихисток цілим іншим екосистемам, старішають/набирають сил із віком...
На прикладі операційних систем для платформи x86 я б розкрив цю метафору так: спочатку був майже голий острів платформи x86, на якому росли кущі виду DOS із незначними видовими відмінностями, як-то DR-DOS, MS-DOS та інші, успішно витіснивши більш вибагливий і складніший реліктовий CP/M, що намагався існувати в тій же ніші. Чому кущі? Тому, що DOS грав роль допоміжної бібліотеки для інших програм, він не ізолював користувацькі програм від ґрунту-заліза. З часом, коли ґрунт, здобрений існуючою екосистемою, породючішав, кущі почали витягатись у висоту і змагатись за місце над сонцем, на них почали оселятись в’юнкі рослини, розширення DOS, які вились по кущу вище до сонця (розширювачі пам’яті, псевдо- і графічні оболонки - Windows 1−3, DESQView, NC/VC, Dos Navigator та інші, несть їм числа).
Приблизно у той же час вітер заніс у екосистему острова x86 перших представників справжніх деревовидних - Linux та перші порти 4.3BSD, а також таку дивину, як єдиний майкрософтівський юнікс XENIX, які також почали експансію у екосистему острова, щоправда, спочатку ареали DOS-систем і Unix-подібних лісів майже не перекривались. Трохи пізніше там почав рости дивні гібриди місцевих кущів і новоприбулих дерев - OS/2 та Windows NT. Останній вже можна було з чистою совістю назвати повноцінним деревом, у нього був міцний і надійний стовбур-ядро, яке підносило крону високо над землею. OS/2 та віндоус-кущі поступово витягнулись у Windows 95 - з однієї сторони дерево, з другої кущ. Тоді ж на цьому березі почали рости вибагливі породи типу BeOS - дуже стрункі і плодовиті, але їхня тендітність заважала їх виживанню в природному відборі.
Тепер відволічемось від переліку порід і зробимо деякі морфологічні зауваження. Будь-яке дерево має стовбур-ядро, яке взаємодіє із ґрунтом-залізом, підносить крону користувацьких програм на висоту абстрагування від заліза, потрібну для того, щоб крона ловила якомога більше сонячної енергії користувацької уваги; корені-драйвери, які висотують із ґрунту життєво важливу для операційної системи інформацію; стовбур-ядро, міцність якого визначає здатність витримувати крону. Листя з крони може облітати із сезонними примхами моди, гілки бібліотек і фреймворків ламаються рідше, але досить часто. Найдовговічнішим залишається стовбур, на якому постійно виростають кільця нових версій. Іноді крона стає заважкою для стовбура і тоді дерева ламаються і мусять породжувати нові, життєздатніші, міцніші, абстрактніші види.
Крім того, як у будь-якій молодій екосистемі, спостерігається загальне підвищення (абстрагування) рівня крони, програми незалежно від породи дерева ускладнюються і ростуть, примушуючи через природний відбір ставати вищими дерева. Дійшло навіть до того, що крони дерев утворили верхній ярус екосистеми, на якому почали рости власні рослини-паразити, тобто віртуальні машини (JVM, .NET, середовища скриптових мов, ліспівська омела, ліани скриптування тощо). Також верхні яруси почали помітно затіняти рівень ґрунту, поступово залишаючи середні яруси абстракцій у тіні і цим виганяючи із них життя, хоч на рівні ґрунту тепер буяють нові хащі, немислимі у часи голих досівських кущів. Крони поступово сплітаються у єдину гетерогенну мережу, в якій уже важко розрізнити, де чиї гілки. Час від часу чергове дерево падає від власної ваги та природних катаклізмів, поступаючись новим конкурентам.
Приблизно так голе каміння x86 перетворилось у сучасні тропічні хащі програмних екосистем.