Технологии
программирования играло разную роль на разных этапах развития программирования.
По мере повышения мощности компьютеров и развития средств и методологии
программирования росла и сложность решаемых на компьютерах задач, что привело к
повышенному вниманию к технологии программирования. Резкое удешевление
стоимости компьютеров и, в особенности, стоимости хранения информации на
компьютерных носителях привело к широкому внедрению компьютеров практически во
все сферы человеческой деятельности, что существенно изменило направленность
технологии программирования. Человеческий фактор стал играть в ней решающую
роль. Сформировалось достаточно глубокое понятие качества ПС, в котором акценты
стали ставится не столько на его эффективности,
сколько на удобстве работы с ним для пользователей (не говоря уже о его
надежности). Широкое использование компьютерных сетей привело к интенсивному
развитию распределенных вычислений, дистанционного доступа к информации и
электронного способа обмена сообщениями между людьми. Компьютерная техника из
средства решения отдельных задач все более превращается в средство
информационного моделирования реального и мыслимого мира, способное просто
отвечать людям на интересующие их вопросы. Начинается этап глубокой и полной
информатизации (компьютеризации) человеческого общества. Все это ставит перед
технологией программирования новые и достаточно трудные проблемы.
Сделаем краткую
характеристику развития программирования по десятилетиям.
В 50-е годы
мощность компьютеров была невелика (компьютеры первого поколения), а
программирование для них велось, в основном, в машинном коде. Решались в главным образом
научно-технические задачи (счет по формулам), задание на программирование уже
содержало, как правило, достаточно точную постановку задачи. Использовалась
интуитивная технология программирования: почти сразу приступали к составлению
программы по заданию, при этом часто задание несколько раз изменялось (что
сильно увеличивало время и без того итерационного процесса составления
программы), минимальная документация оформлялась уже после того, как программа
начинала работать. Тем не менее именно в этот период
родилась фундаментальная для технологии программирования концепция модульного
программирования [1.10] (для преодоления трудностей программирования в машинном
коде). Появились первые языки программирования высокого уровня, из которых
только ФОРТРАН пробился для использования в следующие десятилетия.
В 60-е годы можно
было наблюдать бурное развитие и широкое использование языков программирования
высокого уровня (АЛГОЛ 60, ФОРТРАН, КОБОЛ и др.), роль
которых в технологии программирования явно преувеличивалась. Надежда на то, что
эти языки решат все проблемы при разработки больших
программ, не оправдалась. В результате повышения мощности компьютеров и
накопления опыта программирования на языках высокого уровня быстро росла
сложность решаемых на компьютерах задач, в результате чего обнаружилась
ограниченность языков, проигнорировавших модульную организацию программ. И
только ФОРТРАН, бережно сохранивший возможность модульного программирования,
гордо прошествовал в следующие десятилетия (все его ругали, но его пользователи
отказаться от его услуг не могли из-за грандиозного накопления фонда
программных модулей, которые с успехом использовались в новых программах).
Кроме того, было понято, что важно не только то, на каком языке мы
программируем, но и то, как мы программируем [1.4]. Это было уже началом
серьезных размышлений над методологией и технологией программирования.
Появление в компьютерах 2-го поколения прерываний привело к развитию
мультипрограммирования и созданию больших программных систем. Последнее стало возможным с использования коллективной разработки,
которая поставила ряд серьезных технологических проблем [1.11].
В 70-е годы
получили широкое распространение информационные системы и базы данных. Этому способствовало очень важное событие, происшедшее в середине
70-ых годов: стоимость хранения одного бита информации на компьютерных
носителях стала меньше, чем на традиционных. Интенсивно
развивалась технология программирования [1.2, 1.8, 1.12-1.14]: обоснование и
широкое внедрение нисходящей разработки и структурного программирования,
развитие абстрактных типов данных и модульного программирования (в частности,
возникновение идеи разделения спецификации и реализации модулей и использование
модулей, скрывающих структуры данных), исследование проблем обеспечения
надежности и мобильности ПС, создание методики управления коллективной
разработкой ПС, появление инструментальных программных средств (программных
инструментов) поддержки технологии программирования.
80-е годы
характеризуются широким внедрением персональных компьютеров во все сферы
человеческой деятельности и тем самым созданием обширного
и разнообразного контингента пользователей ПС. Это привело к бурному развитию
пользовательских интерфейсов и созданию четкой концепции качества ПС [1.5, 1.15-1.18].
Появляются языки программирования (например, Ада), учитывающие требования
технологии программирования [1.19]. Развиваются методы и языки спецификации ПС
[1.20-1.21]. Выходит на передовые позиции объектный подход к разработке ПС
[1.9]. Создаются различные инструментальные среды разработки и сопровождения ПС
[1.3]. Развивается концепция компьютерных сетей.
90-е годы
знаменательны широким охватом всего человеческого общества международной
компьютерной сетью, персональные компьютеры стали подключаться к ней как
терминалы. Это поставило ряд проблем регулирования доступа к компьютерно-сетевой информации (как технологического, так и
юридического и этического характера). Остро встала проблема защиты компьютерной
информации и передаваемых по сети сообщений. Стали бурно развиваться
компьютерная технология (CASE-технология) разработки ПС и связанные с ней
формальные методы спецификации программ. Начался решающий
этап полной информатизации и компьютеризации) общества.