БЕСЕДЫ О ПРОГРАММИРОВАНИИ

   

У каждого читателя этой колонки есть прикладная программа, скорость выполнения которой определяет степень удовлетворенности пользователя, а для каждой такой программы найдется одна или несколько систем, которые снижают общую производительность при выполнении задачи.

В некоторых случаях этим тормозом могут оказаться заторы при вводе-выводе, в других  -  скорость выполнения задач с плавающей запятой, а в третьих таким фактором может стать просто большое количество возможных решений, которые приходится сравнивать. Однако существующие сейчас ограничения вряд ли будут серьезной проблемой в долгосрочной перспективе.

Посмотрите на развитие соотношения цена/производительность в компьютерном мире за последние 10 лет. Впечатляет, не правда ли? Вы, наверное, готовы побиться об заклад, что ваши пользователи уверены, что все будет развиваться в таких же темпах и в следующие 10 лет.

Что их ждет  -  радость или разочарование?

Каждый из нас время от времени задумывается и спрашивает себя, на какие тенденции технического прогресса мы опираемся, пытаясь сделать свои программы быстрее; достигли ли технологии предела своего развития или даже фундаментальных ограничений; следует ли искать принципиально новый подход, который позволит пересечь эту границу.

В конце концов, нам надо думать об этом, если мы рассчитываем заниматься своим делом и дальше, поскольку от нас ждут больше и больше, и конца этому не предвидится.

Я задумался над этими проблемами после того, как прочитал отчет конференции Enabling Technologies for Petaflops Computing ("Технология для петафлопных вычислений"), которая состоялась в феврале 1994 г. В отчете, выпущенном в августе издательством MIT Press, указывается на несколько областей, в которых нам следует начать думать, чтобы определить, какими путями мы будем совершенствовать сегодняшние разработки, дабы они соответствовали требованиям XXI в.

Я приношу извинения за нелепое слово "petaflops", но тут ничего не поделаешь. "Flops"  -  это количество операций с плавающей запятой в секунду, и мы перешли от "megaflops" (этот термин мне пришлось объяснять 13 лет назад, когда я воспользовался им в своей лекции) к "gigaflops", а затем к "teraflops" и, как вы уже догадались, к "petaflops", т.е. к миллионам миллиардов операций в секунду, при том, что одна такая единица превосходит мощность всех существующих сейчас компьютеров. Но это ненадолго.

Некоторые из проблем вычислений со скоростью "petaflops" носят чисто аппаратный характер. Сегодня нам нужны миллиарды операций в секунду и десятки миллионов байтов рабочей памяти. Через десять лет, как предсказывают участники упомянутой выше конференции, нам будут нужны реальная память объемом в десятки терабайт, скорость передачи данных 1 петабайт/с и время доступа менее 1 мкс. Такая конфигурация сможет поддерживать даже Windows 2005.

Однако создателям архитектуры системных программ и разработчикам приложений придется самим решать, как управиться с такими фантастическими ресурсами, и мне и думать не хочется о том, чтобы попытаться решить эту проблему при помощи языка ((С++)++)++. Нужно что-то, что как минимум обладает управляемой мощностью  -  Eiflel, АДА, ЛИСП или Smalltalk.

Мои вкусы совпадают со вкусами группы Software Technology Working Group, обнародованными на конференции 1994 г. (их представления об инструментах будущего описаны в главе 7 отчета): автоматическое управление ресурсами, множество уровней абстракции, интерактивные мультимедийные инструменты, приложения, написанные с использованием нескольких языков, максимум повторного использования и поддержка распределенной разработки.

Если уже сейчас вы работаете с инструментами такого типа, значит, вы начали готовиться к работе, которая будет актуальна через десять лет.

Если нет  -  для вас настало время подумать о будущем.

К Питеру Кофи можно обратиться через MCI Mail: 357-1756 или через CompuServe: 72631,113, или Internet 3571756@MCIMAIL.COM.

ПИТЕР КОФИ