Третий этап развития программного обеспечения (ПО)

Третий этап (до начала 70-х годов) связан с обобщением и интеграцией найденных решений в «больших» языках программирования, таких, как ПЛ/1, АЛГОЛ-68, СИМУЛА-67 (в настоящее время — просто СИМУЛА). Движущей силой вновь было существенное изменение соотношения затрат в результате резкого увеличения размеров систем ПО (до сотен тысяч и даже миллионов строк исходного текста) и нарастающего процесса отчуждения ПО от разработчика из-за коллективного характера работ и перехода к товарному производству. Кодирование программ превратилось в один из самых простых видов работ. Основные затраты приходились на отладку (40% и более), проектирование и документирование ПО. В этот период созданы развитые системы программирования с оптимизирующими и отладочными трансляторами, посредниками, макробиблиотеками и библиотеками стандартных подпрограмм, специализированными текстовыми редакторами, средствами анализа и диалоговой отладки программ в терминах входного языка. Были разработаны развитые операционные системы, первые системы управления базами данных (СУБД), многочисленные системы автоматизации документирования, отслеживания модификаций и сборки версий ПО.

Характерные для этого этапа языки сильно отличаются друг от друга. ПЛ/1 — язык типа «оболочка», объединяющий большое количество готовых средств на все случаи жизни; его даже сравнивали с рождественской елкой — здесь висит пряник, там — орех, еще где-то — бесполезная хлопушка, ПЛ/1 много критиковали за отсутствие логической стройности, за сложность изучения, за приводящий к странным последствиям принцип «все проходит» — «язык не должен запрещать необычную конструкцию допускающую разумную интерпретацию», за нарушение этого принципа многочисленными исключениями, за неудачную семантику вычислений с фиксированной точкой, (например, вычисление выражения 20 + 1/3 приводит к переполнению), за сложность трансляции, негативное влияние средств обработки исключительных ситуаций на оптимизацию программ и т. д. Но время показало, что в нем действительно собраны почти все интенсивно используемые семантические примитивы основных проблемных областей и в этом смысле достигнут уровень, практически предельный для относительно универсального языка программирования. За 25 лет развития в язык были введены лишь отдельные дополнения. Дальнейшее повышение уровня языка требует не введения в него готовых средств проблемных областей, а развития возможностей адаптации к проблемным областям за счет построения программистом новых объектов и накопления опыта программирования не только в форме подпрограмм, но и в форме как можно более общих схем алгоритмов и структур данных.

Преимущества универсального языка, пригодного для решения широкого класса задач, достаточно очевидны. Но, несмотря на поддержку фирмы «IBM», в США ПЛ/1 был лишь третьим по распространенности языком программирования (после языков КОБОЛ и ФОРТРАН). Это объясняется в большей степени сложностью вытеснения используемых инструментальных средств, чем свойствами языка ПЛ/1. (Для языка КОБОЛ хорошие трансляторы появились на несколько лет раньше, чем для языка ПЛ/l) В конце 60-х годов появились первые качественные трансляторы языка ПЛ/1, а разработанный позднее комплекс из оптимизирующего и отладочного трансляторов для ЭВМ с архитектурой фирмы «IBM» и сейчас считается одной из самых развитых систем программирования. Поэтому в странах, почему-либо задерживавшихся с внедрением языка КОБОЛ, язык ПЛ/1 достаточно прочно занимал место наиболее используемого профессионалами языка программирования.

Примечание. С учетом непрофессиональных программистов и широкой распространенности персональных ЭВМ сейчас наиболее используемым языком, по-видимому, является БЭЙСИК.