Программирование и жизнь в галактическом масштабе: вся соль на трех страницах
Я наткнулся на этот прекрасный текст (под катом) в книге Вернора Винджа "Глубина в небе". Фрагмент меня впечатлил на столько, что я решил поделиться своими мыслями с общественностью. Не часто встретишь подобную проработку вопроса в художественной литературе. Местами, текст кажется слегка… простетским, но возможно это результат не самого хорошего перевода. На самом деле, текст достаточно глубокомысленный.
Еще по ходу чтения мне вспомнился Эдсгер Дейкстра с его знаменитой фразой: «Я денно и нощно молю, чтобы как можно больше моих собратьев-программистов нашли способ освободиться от проклятья совместимости» («I pray daily that more of my fellow-programmers may find the means of freeing themselves from the curse of compatibility») из книги Смиренный программист (1972 sic!!!). А позже и Эрик Реймонд с своим Собором и Базаром (1997 год). Но текст Винджа не только о проклятье совместимости, на трех страничках поднят (и в общем то оставлен без ответов) целый пласт вопросов:
- Проблема совместимости в широком смысле;
- Проблема поддержки старого кода;
- Проблема зависимости человеческой жизни «от бесчувственных роботов» (с), к чему мы стремительно приближаемся;
- Проблема data mining`а вообще и поиска готового решения в бездонной бочке рецептов в частности (github, stack overflow?);
- Проблема «переписывания» старого кода (и плохого, и хорошего) — этот момент так и хочется перечитывать :);
- Проблема необъятности ИТ-технологий. Иногда говорят, что последний универсальный физик жил в середине пошлого века, имея ввиду Льва Ландау. Похоже сейчас наступает (или уже наступило) время, когда найти универсального программиста таки уже невозможно;
- В тексте нет слова хакер, ни в позитивной, ни в негативной коннотации. Но написано и об исследователях, и о тех преимуществах, которые можно получить зная те или иные backdoor`ы и о том, какую власть это может дать.
- и наверное это не все… :)
Складывается впечатление, что писал это человек, на своей шкуре прочувствовавший эти самые проблемы.
Хочу отметить, что «Глубина в небе» была написана в 1999 году, когда многое из того, о чем пишет Виндж еще не было проблемой, или вообще только показалось на горизонте.
В качестве критики хочется отметить, что Виндж прошел мимо ИИ (и сильного и слабого, вообще мимо пробежал, даже нейронные сети не затронул) и свел преимущества ИТ к производительности. Так же в тексте не ощущается присутствие мегакорпораций (хотя конечно «Глубина в небе» не относится к киберпанку), если не считать Кенг-Хо таковой. Нет патентных войн, не затронуты вопрос копирайта и проблема закрытых проприетарных разработок, исходные коды к которым так и не были опубликованы.
Сейчас обучение английскому поставлено на поток по всему миру. Использование стандартизированных методик и учебников, стандартизированных экзаменов и шкал оценок. Только ли частный бизнес?
Ниже привожу наиболее интересный отрывок из текста. В романе еще много всего интересного, не относящегося к программированию, не даром он собрал несколько премий. Так что рекомендую к прочению, причем в оригинале, попавшийся мне перевод не очень хороший.
Приятного прочтения :)
– Брет, какие специальности нам нужны больше всего?
Тринли пожал плечами.
– Ты имеешь в виду, какие нам дадут самый большой доход? Очевидно. Программист-археолог.
Вопрос был в том, может ли дикое дитя вроде Фама Нювена стать таковым? Сейчас мальчик умел использовать почти любые стандартные интерфейсы. Он уже представлял себе, как будет программистом, может быть, даже капитаном корабля. С помощью стандартных интерфейсов он может управлять полетом «Репризы», выходить на планетарные орбиты, поддерживать гробы анабиоза…
– А что чуть не так, и ты покойник, покойник, покойник! – Так закончила Сура перечень доблестей Фама. – Мальчик, тебе придется понять одну вещь. Здесь цивилизованные дети тоже часто ошибаются. Компьютеры и программы существуют с самого начала цивилизации, еще раньше космических полетов. Но они умеют лишь то, что умеют. Они не смогут придумать выход из непредвиденных затруднений или вообще сделать что-нибудь по-настоящему творческое.
– Ну, я знаю, что это неправда. Я же играл в игры с машинами. Если я ставлю высокий уровень, то никогда не выигрываю.
– Потому что компьютеры просто делают простые вещи очень быстро. Потому-то они играют такую важную роль. Они содержат программы многих тысяч лет и почти все их могут выполнять. В каком-то смысле они помнят каждый прием, который когда-либо придумало человечество.
– И всю чушь, – фыркнул Брет Тринли.
Сура пожала плечами:
– Конечно, и ее. Подумай вот о чем: сколько у нас экипажа – когда мы в системе и все на ногах?
– Тысяча двадцать три, – ответил Фам. Он давно уже знал все параметры «Репризы» и этого рейса.
– Хорошо. Теперь представь себе, что ты за много световых лет от всех цивилизаций…
– Чего там представлять, это чистая правда, – перебил Тринли.
– …и что-то портится. Чтобы построить звездолет, нужно тысяч этак десять людских специальностей, и это на капитальной промышленной базе. Экипажу корабля никак невозможно знать все, что нужно для анализа звездных спектров, создания вакцины против одичавших штаммов в бактериальной, понимания любой болезни дефицита обмена, с которой мы можем встретиться.
– Именно! – воскликнул Фам. – Вот для чего у нас есть программы и компьютеры.
– Вот почему нам без них не выжить. За тысячи лет память машин заполнилась программами, которые могут пригодиться. Но, как только что сказал Брет, многие из этих программ – вранье, многие содержат ошибки, и только программы верхнего уровня точно подходят под наши потребности. – Она остановилась и посмотрела на Фама многозначительно. – И нужен умный и очень образованный человек, чтобы смотреть, что из них доступно, чтобы выбирать и модифицировать нужные программы и правильно интерпретировать результаты.
Фам минуту помолчал, вспоминая времена, когда машины делали не то, что он на самом деле от них хотел. И не всегда это была вина Фама. Программы, которые пытались переводить с канберского на низский, оказались мусором.
– Значит… вы хотите, чтобы я научился программировать несколько лучше.
Сура улыбнулась, а Брет еле подавил хихиканье.
– Мы будем довольны, если ты станешь хорошим программистом, а потом научишься использовать то, что уже есть.
Фам Нювен несколько лет провел, обучаясь программировать и исследовать. Программирование восходило к началу времен. Как та навозная куча за замком отца. Когда ее промыло ручьем на десять метров в глубь, обнаружились искореженные корпуса машин – летающих машин, как говорили крестьяне, еще от тех великих дней колонизации Канберры. Но та навозная куча была чистой и свежей по сравнению с тем, что лежало в локальной сети «Репризы». Были программы, написанные пять тысяч лет назад, когда человечество еще не покинуло Землю. И самое чудесное (самое ужасное, как говорила Сура) было то, что, в отличие от бесполезных обломков прошлого Канберры, эти программы все еще работали! И через миллион миллионов запутанных нитей наследования многие из старейших программ все еще выполнялись во внутренностях системы Кенг Хо. Например, методы слежения за временем у торговцев. Поправки вносились неимоверно сложно – но на самом дне лежала крошечная программа, которая гоняла счетчик. Секунду за секундой отсчитывала система Кенг Хо с того момента, как нога человек ступила на Луну Старой Земли. Но если приглядеться еще пристальнее… начальный момент был миллионов на сотню секунд позже; момент «ноль» одной из первых компьютерных операционных систем Человечества.
Значит, под всеми интерфейсами верхнего уровня лежат уровни поддержки, слой на слое. Какая-то часть этих программ была создана для совершенно иных ситуаций. То и дело несоответствие рождало фатальные инциденты. Вопреки всей романтике космических полетов, чаще всего катастрофы вызывались древними забытыми программами, которым удавалось взять реванш.
– Надо все это переписать, – сказал Фам.
– Это уже сделали, – ответила Сура, не поднимая глаз. Она готовилась уйти с Вахты и последние четыре дня пыталась выловить проблему, обнаруженную в автоматике анабиоза.
– Это пытались сделать, – поправил ее Брет, стоя у морозильников. – Но объем кода только во флотских системах верхнего уровня неимоверен. Посади тебя и еще тысячу человек его воспроизвести, и вы проработаете целое столетие. – Тринли зловеще улыбнулся. – И знаешь что? Даже если вы это сделаете, к концу у вас будут свои несовпадения. И все равно не будет совместимости со всеми приложениями, которые нам то и дело бывают нужны.
Сура на минуту оставила отладку программ.
– Знаешь, как все это называется? «Зрелая среда программирования». Когда аппаратура работает уже на своем конечном пределе, а программисты пишут код уже много столетий, доходишь до точки, когда осмысленного кода становится больше, чем кто-нибудь может прочесть. Тогда лучшее, что ты можешь сделать – разобраться в общей структуре уровней и понять, как искать экзотические средства, которые могут оказаться удобны – как в ситуации, которая у меня здесь сложилась. – Она ткнула рукой в диаграмму зависимости, над которой работала. – У нас нехватка охлаждающей жидкости для гробов. Как и миллион других вещей, на доброй старой Канберре ее было не купить. Ну, очевидное решение – передвинуть гробы к кормовой обшивке, и пусть охлаждаются прямым излучением. Для поддержки такого решения у нас нужного оборудования нет – и потому я последнее время и занимаюсь археологией. Похоже, что пятьсот лет назад такое случилось после войны в системе Тормы. Они тогда слепили точно такой пакет управления температурой, который нам нужен.
– Почти такой же, – снова ухмыльнулся Брет. – С минимальными изменениями.
– Да, которые я почти уже внесла. – Она глянула на Фама, увидела выражение его лица. – Ага. Я думала, что ты предпочитаешь лучше умереть, чем лечь в гроб.
Фам застенчиво улыбнулся, вспомнив того мальчишку шесть лет назад.
– Нет, я лягу в гроб. Когда-нибудь.
Этот день наступил еще после пяти лет жизни Фама. Это были напряженные годы. И Брет, и Сура были вне Вахты, и с заменившими их Фам не сблизился. Эти четверо играли на музыкальных инструментах – вручную, как менестрели при дворе! К концу они играли целые килосекунды подряд; казалось, они, играя вместе, достигали какого-то ментально-социального объединения. На Фама их музыка как-то непонятно действовала, но эти люди очень тяжело трудились для достижения весьма ординарных результатов. У Фама не хватило бы терпения даже для первых шагов по этому пути, и он уходил. Быть один – это он умел очень хорошо. Ему столько еще надо было узнать.
Чем больше он учился, тем больше понимал, что имела в виду Сура Винж под «зрелой средой программирования». По сравнению с известными ему членами экипажа Фам стал выдающимся программистом. «Пламенный гений» – так его однажды охарактеризовала Сура Винж, думая, что он не слышит. Он мог кодировать все, но жизнь коротка, а почти все существенные системы – огромны. И потому Фам научился находить пути в обход этих левиафанов прошлого. Он умел обращаться к кодам оружия от Элдритча Фери с помощью исправленных конических планировщиков времен до завоевания космоса. Не менее важно: он знал, как искать потенциально подходящие приложения, скрытые в сети корабля.
…И еще он узнал о зрелых средах программирования то, чего Сура, в общем, не сказала. Когда системы зависят от лежащих ниже систем, а те зависят от еще более старых… становится невозможно знать все, на что способны эти системы. Где-то в глубине автоматики флота может быть – должен быть – лабиринт ходов и ловушек. Почти все авторы мертвы уже тысячи лет, спрятанные ими подходы утеряны навсегда. Иные ловушки были поставлены компаниями или правительствами, которые надеялись пережить ход времени. Сура, Брет и, быть может, еще несколько человек, знали о системах «Репризы» такое, что давало им особую власть.
Средневековый принц в душе Фама Нювена был поражен этим открытием. Если одна такая ловушка лежит на дне какой-нибудь универсальной популярной системы… Если такой новый слой используется повсюду, владелец ходов и ловушек будет подобен королю.
Вернор Виндж, отрывок из романа «Глубина в небе», 1999 г.