«Задолго до того как Машина Времени вошла в повседневный быт, она уже устарела в научно-фантастической литературе. Поэтому, когда она была в самом деле изобретена, к ней отнеслись без всякого уважения». [Феликс Кривин, «Я угнал машину времени»] Такая судьба время от времени постигает не только фантастические выдумки, но и самые что ни на есть прагматические ожидания и прогнозы. Если одно и то же предсказывают раз за разом, а оно все не сбывается, – вспышки энтузиазма с каждым новым прогнозом становятся все бледнее, и в конце концов общественность, неравнодушная к техническому прогрессу, смиряется с мыслью, что несбыточность конкретного прогноза – что-то вроде закона природы.
«Чтоб я так смог, как ты мне помог, честное слово…»
Хасан Одноглазый [Мюзикл «Али Баба и сорок разбойников»]
Наверное, мало в какой области несбывшиеся прогнозы так хорошо заметны на фоне естественного прогресса, как в софтостроении. Начиная с уже далеких 50–60-х все время что-то «ожидается на днях» – то пресловутая «серебряная пуля», то автоматические программосоставители, то гениальный ИИ, то Лучший-В-Мире-Язык-Программирования, то безупречное средство верификации программ… Сильно обобщая, все эти ожидания можно свести к двум (диаметрально противоположным) идеализмам: либо «программирование не нужно вообще» (у компьютера внутри «думалка», работающая на языке пользователя), либо «программировать должны все пользователи» (теперь у пользователя внутри «думалка», работающая на языке компьютера). И если насчет первого, по состоянию на сегодня, вроде бы все согласны, что это нечто вроде философского камня алхимиков (то есть скорее идеалистическая категория, нежели возможная реальность), то вот со вторым далеко не так однозначно…
Как бы то ни было, современные пользовательские окружения – графический интерфейс, большинство задач выполняется мышью, средства разработки и соответствующая документация с операционкой не поставляются [Последнее, конечно, относится только к ОС семейства Windows. Тем не менее общая культура «среднего пользователя» похоже устроена и на Маках, а до некоторой степени– и на современных Linux’ах с их мимикрией под «мэйнстрим»] – «программирование любой домохозяйкой» по меньшей мере не поощряют. Домохозяйки, однако, как-то выкручиваются.
Нет, конечно, все подряд домохозяйки – тьфу-тьфу! – пока не программируют. Но граница между «профессиональным программистом» и «пользователем, который слегка программирует», с каждым днем становится все менее четкой. Первые, разумеется, смотрят на последних свысока; но и друг с другом договориться о том, кто «более настоящий», часто не в силах.
Взять, к примеру, веб-программирование. Еще лет пять назад все было, в общем-то, понятно: веб-дизайнер – не программист. Веб был набором (почти) статических текстовых страниц и (как бы) динамических форумов-гестбуков; других «веб-приложений» мы не знали. Не то теперь. Создатели GMail’а (даже если брать только его клиентскую часть, пользовательский интерфейс) и десятков последовавших за ним сервисов определенно требуют с собой считаться. Оставляя за бортом полезность и сиюсекундную применимость онлайновых текстовых процессоров и электронных таблиц, признаем, что разработку их пользовательского интерфейса и логики ни в коем случае не назовешь «только дизайном» [Еще раз подчеркну– я говорю о том, насколько современные веб-приложения отличаются от простейшего изначального поведения в вебе: «можно прочитать; можно написать; всё»].
А вот разработчиков Гугла и так все согласны считать «настоящими программистами». Но как называть и куда относить авторов тысяч суперсовременных Web2-сервисов, которые сделаны буквально за-недельку-на-коленке, работают на хостинге ценой в пиво, используют данные из десятка других открытых сервисов – и при всем при том такое «приложение» вполне полезно и более того, десктопного аналога вообще не имеет? Что здесь важнее – «сколько труда и денег затратил автор?» или «насколько полезно получилось?». А если «автор» вообще не программировал, а лишь построил web mashup (помесь сервисов) при помощи Yahoo! Pipes, – он кто?