Если спросить ИТ-специалистов, каким они представляли себе будущее 10 или 20 лет назад, они бы признались в своей близорукости. Писатели, работающие в жанре научной фантастики, намного лучше предсказывали путь. В этом нет ничего необычного. Мы всегда пессимистично оцениваем свои возможные достижения, мы привязаны к концепциям, которые воспринимаются как своего рода табу. Мы можем попытаться воспользоваться возможностями будущего только в том случае, если нам удастся освободиться от прошлого. Наше представление об аппаратном и программном обеспечении, вычислениях, программировании и разработке систем нуждаются в пересмотре.
Аппаратное обеспечение. Как следует из названия («железо»), оно должно быть стабильным, иметь вес и быть твердым. Сейчас мы подошли к тому, когда появляется иное представление. Биологические процессы не стабильны, но они могут стать основой аппаратной среды. Фотонные, или волновые, процессы могут не иметь массы, но могут служить базой для обработки. Наконец, жидкие или желеобразные субстанции твердыми не назовешь, но могут прекрасно использоваться для определенной обработки информации. Я не предлагаю отказаться от кремния или внушить мысль о том, что изменится основа наших вычислительных систем или устройств хранения. Естественно, однако, привести множество примеров обработки и хранения, базирующихся на других видах вещества. Мы не должны исключать того, что в один прекрасный день появятся другие типы аппаратного обеспечения. Нам следует быть гибкими.
Программное обеспечение. Начнем с того, что существует ясное понимание — где заканчивается аппаратное и начинается программное обеспечение. Биологические вычислительные системы работают по-другому. Аппаратное обеспечение, интегрированное в программное, и программное, внедренное в аппаратное — очень частые явления в биологических процессах. Здесь разделение не настолько явное. Кроме того, ПО в этой области не имеет четких функциональных аспектов, к которым мы привыкли. Обратите внимание на Internet. Что представляет собой сетевое ПО, системное программное обеспечение, прикладное ПО — их не так-то просто отделить друг от друга. Наконец, агенты могут перемещаться, изменяться или отключаться в зависимости от среды. Наше функциональное представление о программном обеспечении становится весьма ограниченным.
Вычисления. В начале прошлого столетия проводилась масса философских дискуссий о том, что представляют собой вычисления. Черч прекратил все эти дискуссии, выдвинув свой тезис в 1936 году. С этого момента вычислениями называли то, что могли выполнять машины Тьюринга или другие аналогичные модели. Мы постепенно забываем обо всех этих дискуссиях и целые поколения специалистов были приучены даже не задаваться вопросом о том, что же это такое. Однако такой тип вычислений всегда был ограниченным. Большинство интересных проблем относятся к задачам, которые в общем случае не имеют решения. Тем не менее, они практически были решены с помощью различных эвристик. Мы снова оказались на распутье. Следует ли настаивать на математическом контексте, где точность и строгость считаются главными? Должны ли мы ослабить наши определения и допустить неполноту, неопределенность и гибкость в расширении понятия вычислений? Я считаю, следует не только на концептуальном уровне исследовать другие трактовки понятия вычислений, но и попытаться реализовывать их на практике.
Программирование. Программирование выполняется одним человеком или, по крайней мере, тесно координированной группой экспертов. Таково ли понятие программирования в Internet? Большинство программистов не являются экспертами. Большинство программ не имеют четко определенной среды, в которой они должны работать, или четко определенных спецификаций, определяющих, что же они должны делать. Мы уже перешли к другому виду программирования, нежели «дейкстровский». Следует признать этот факт и изменить свои понятия и парадигмы.
Разработка систем. Как правило, спецификации на систему известны, хотя и неточны. Разработка системы — это превращение спецификаций в хорошо документированный высококачественный код. В него можно вносить изменения, но контролируемым образом, за счет выпуска новых версий. Подобная жестко управляемая среда для разработки систем имеет мало шансов сохраниться в современных условиях. Для некоторых систем не существует спецификаций, а есть только внешние ограничения в виде стандартов или пользовательских интерфейсов. Команда разработки априори неизвестна или не определена. Процесс организован, но не управляем. Среда, на которую рассчитана программа, заранее не известна. И, тем не менее, даже в таких хаотических условиях создаются системы вполне приличного качества и функциональности. Более того, они разрабатываются все быстрее и дешевле. Пришло время признать, что ситуация изменилась и взяться за разработку соответствующих инструментов и концепций.
Если базовые понятия, такие как аппаратное и программное обеспечение, вычисления, программирование и системная разработка меняются, то что же тогда остается? Мы должны быть прагматичными и открытыми. Мы должны быть прагматичными, чтобы допускать использование методов и решений до того, как окончательно поймем, как же они работают. Мы должны быть открытыми к идеям, которые возникают в других областях, научных дисциплинах и, кстати, в научной фантастике. Чтобы добиться великих целей, мы должны сохранить в себе дух первопроходцев, хотя наш мир уже стал достаточно зрелым, богатым и неповоротливым.
Деннис Цикритзис (Dennis.Tsichritzis@gmd.edu) — председатель совета директоров Немецкого национального исследовательского центра информационных технологий, профессор информатики Женевского университета (Швейцария).
Права принадлежат автору, 2001. Право на перевод с английского языка принадлежит издательству «Открытые системы».
Dennis Tsichritzis, Forget the Past to Win the Future. Communications of the ACM, March of 2001, vol. 44, no. 3