
 
 
103 
Прежние прорывы разрешили второстепенные трудности 
Если  рассмотреть  три  наиболее  плодотворных  шага  в  произошедшем  развитии 
программных технологий, то обнаружится, что все они были сделаны в направлении 
решения  различных  крупных  проблем  разработки  программ,  но  эти  проблемы 
затрагивали второстепенные, а  не относящиеся к сущности трудности. Можно также 
видеть естественные пределы экстраполирования каждого их этих направлений. 
Языки  высокого  уровня.  Конечно,  наибольшее  значение  для  роста 
производительности,  надежности  и  простоты  имело  все  более  широкое 
использование  языков  высокого  уровня.  Большинство  исследователей  считает,  что 
этим  был  достигнут,  по  крайней  мере,  пятикратный  рост  производительности  при 
одновременном выигрыше в надежности, простоте и легкости понимания. 
Что делает язык высокого уровня? Он освобождает программу от значительной доли 
необязательной  сложности.  Абстрактная  программа  состоит  из  концептуальных 
конструкций:  операций,  типов  данных,  последовательностей  и  связи.  Конкретная 
машинная  программа  связана  с  битами,  регистрами,  условиями,  переходами, 
каналами,  дисками  и  прочим.  В  той  мере,  в  какой  в  языке  высокого  уровня 
воплощены  необходимые  абстрактной  программе  конструкции  и  избегаются 
конструкции  низшего  порядка,  он  ликвидирует  целый  уровень  сложности, 
совершенно не являющийся необходимым свойством программы. 
Самое  большее,  что  может  сделать  язык  высокого  уровня, — это  предоставить  все 
конструкции,  которые  по  замыслу  программиста  содержит  абстрактная  программа. 
Конечно,  уровень  утонченности  наших  представлений  о  структурах  данных,  типах 
данных  и  операциях  неуклонно  растет,  но  с  постоянно  убывающей  скоростью.  И 
языки  в  своем  развитии  все  больше  приближаются  к  изощренности  нашего 
мышления. 
Более  того,  с  некоторого  момента  дальнейшая  разработка  языков  высокого  уровня 
становится  обузой,  осложняющей,  а  не  упрощающей  интеллектуальные  задачи 
пользователя, редко использующего эзотерические конструкции. 
Разделение  времени.  Большинство  исследователей  считает,  что  благодаря  работе  в 
режиме  разделения  времени  произошел  большой  рост  производительности  труда 
программистов  и  качества  создаваемых  программных  продуктов,  хотя  и  не  такой 
значительный, как вызванный использованием языков высокого уровня. 
Разделение времени помогает решить совсем другую задачу. Благодаря разделению 
времени  обеспечивается  безотлагательность,  и  потому  возможность  иметь  общее 
впечатление  о  сложности.  Из-за  медленной  оборачиваемости  при  пакетной 
обработке  мы  неизбежно  забываем  мелочи,  если  не  самое  направление  нашей 
мысли,  в  тот  момент,  когда  мы  прервались  и  начали  компиляцию  и  выполнение 
программы.  Этот  обрыв  мысли  дорого  обходится  по  времени,  поскольку  приходится 
восстанавливать  ее  в  памяти.  В  худшем  случае,  можно  вообще  потерять 
представление о том, что происходит со сложной системой. 
Медленная  оборачиваемость,  как  и  сложности  машинных  языков,  является 
второстепенной,  а   не  существенной  трудностью  процесса  программирования. 
Предельный вклад, вносимый разделением времени, определяется непосредственно. 
Главное — это сократить время отклика системы. По мере приближения его к нулю, 
оно  переходит  порог  скорости  человеческого  восприятия,  составляющей  около  100 
миллисекунд. Дальше никакой выгоды получить уже нельзя. 
Объединенные  среды  программирования.  Считается,  что Unix и Interlisp, первые 
широко  распространенные  интегрированные  среды  программирования,  повысили 
производительность в несколько раз. Почему? 
Они  направлены  на  преодоление  второстепенных  трудностей  совместного 
использования  программ  путем  использования  общих  библиотек,  унифицированных 
форматов  файлов,  каналов  и  фильтров.  В  результате  концептуальные  структуры, 
которые, в принципе, всегда могут вызывать, обмениваться данными и использовать 
друг друга, получают возможность осуществлять это практически.