Владимир Липаев - Очерки истории отечественной программной инженерии в 1940-е – 80-е годы
Ознакомительный фрагмент
На протяжении 60-х годов запросы на разработку программного обеспечения быстро возросли и программы становились очень большими. Руководители начали понимать, что создание программного обеспечения – гораздо более сложная задача, чем они себе представляли. Это привело к тому, что было разработано структурное – модульное программирование. С развитием структурного программирования следующим достижением были процедуры и функции. Если задача выполняется несколько раз, то ее можно объявить, как функцию или процедуру и в выполнении программы просто вызывать ее. Общий код программы в данном случае становится меньше. Функции позволяют создавать модульные программы, в основе которых лежит представление программы в виде иерархической структуры блоков. Класс — это структура, которая имеет свои переменные и функции, которые работают с этими переменными. Это было очень большое достижение в области программирования. Программирование можно было разбить на классы и тестировать не всю программу, состоящую из строк кода, а разбить программу на группу классов, и тестировать каждый класс. Это существенно облегчило написание программного продукта.
Следующий шаг был сделан в 1954-м году, когда на Западе был создан первый язык программирования высокого уровня – Фортран. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них можно писать программы до нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот язык становился нечитаемым и трудно управляемым, когда дело касалось больших программ. Решение этой проблемы пришло после изобретения на Западе языков структурного программирования, таких как Алгол (1958), Паскаль (1970), Си (1972). С этого момента начался языковый бум. Языки программирования стали появляться один за другим. Так появились С+, ADA, FoxPro, Basic, Pascal и др. На сегодняшний день существует тысячи языков программирования. Из них популярность и известность получили только некоторые. Они отличаются простотой, быстротой, гибкостью и другими свойствами, удобными в некоторой определенной области использования.
Споры программистов перенеслись в другую плоскость – какой язык лучше. Большее предпочтение отдавалось универсальным языкам программирования, способным предоставлять эффективный инструментарий для решения разнообразных вычислительных задач. Все современные реализации широко распространенных языков обладают сходными характеристиками: начиная от скорости написания программ и кончая производительностью полученного кода.
Теперь приверженцы языка ассемблер утверждали, что их код самый быстрый, а любители языков высокого уровня утверждали, что они напишут программу быстрей, чем самый лучший программист на языке ассемблер. Однако программы на языках высокого уровня занимали больший объем памяти и работали медленнее. В вычислительных задачах победила в основном скорость разработки и «удобство» языка программирования для определенного класса задач.
Ассемблер не ушел из практики, когда необходимо было создавать эффективные по объему программы реального времени высокой производительности и занимающие минимальный объем памяти (см. главу 4). В 60-е – 70-е годы большинство программных продуктов в оборонной промышленности для мобильных и бортовых ЭВМ создавались на ассемблерах, адаптированных на архитектуру соответствующих машин. Только в 80-е годы в связи с ростом ресурсов специализированных машин начали использоваться алгоритмические языки высокого уровня, несмотря на возможное расширение программ при трансляции, по сравнению с программами, разработанными на ассемблере.
С середины 50-х годов во всех странах, производивших вычислительную технику, начался бурный процесс «языкотворчества» — создание нескольких сотен проблемно-ориентированных языков [1, 4]. Многим программистам казалось, что небольшие улучшения языков программирования способны радикально повлиять на разработку и качество программ, на использование скудных ресурсов ЭВМ. Однако это требовало создания соответствующих трансляторов и средств отладки, вследствие чего энтузиазм языкотворчества постепенно угас. Сложной задачей для системных программистов того времени было создание трансляторов для конкретных типов машин. Создание каждого транслятора с машинно-независимого языка программирования считалось крупным научным и практическим достижением. Большое число различных типов машин и различных языков требовало трудоемкой работы высококвалифицированных программистов и математиков по разработке трансляторов. Соответственно, возникла необходимость создания небольшого числа стандартизированных языков и программно-преемственных семейств вычислительных машин. Это потребовало глубоких теоретических исследование в теории алгоритмов, схем программ, теории формальных грамматик.
В СССР в 60-е годы был создан алгоритмический язык РЕФАЛ, в основе которого лежала теоретическая модель процесса, реализуемого нормальными алгоритмами Маркова. Его использование в нашей стране позволило создать ряд оригинальных программных продуктов, не имевших аналогов за рубежом. Однако РЕФАЛ испытал судьбу многих отечественных находок. Сходная судьба была у языков программирования семейства Аналитик, созданных в Институте кибернетики АН УССР для ЭВМ серии «МИР». Эти машины, по существу, были первыми персональными ЭВМ (к сожалению, тогдашняя элементная база не позволила свести их габариты к настольным). Однако, несмотря на передовые принципы, заложенные в структуру и функции языков семейства Аналитик, они также не стали достоянием мирового сообщества программистов, хотя иностранные эксперты достаточно высоко оценивали достижения программирования в СССР [4].
Исследования в области параллельного программирования в СССР начались в середине 60-х годов, когда в Институте математики СО АН СССР (Новосибирск) и в Московском энергетическом институте возникли первые коллективы, заинтересовавшиеся теорией параллельных процессов в вычислительных системах, состоящих из однородных или неоднородных машин [4]. Первые монографии по теории вычислительных систем и параллельных вычислений вышли в нашей стране с большим опережением аналогичных изданий за рубежом. Отечественные специалисты первыми в мировой науке дали постановку и предложили решения таких задач, как сегментация алгоритмов и программ, планирование выполнения больших программ на вычислительных системах, динамическое диспетчерование потока программ и сегментов программ, асинхронная организация протекания процессов. В это время было предложено несколько оригинальных моделей для параллельных вычислений, заново открытых потом в США и других странах.
В 1953-х годах Л.В. Канторович разработал технологию крупноблочного программирования, которая давала обозримое описание крупных программ и обеспечивала формализацию, достаточную для исследования синтаксических структур программ и создания программирующих программ [4]. Идеи, высказанные в этих работах, предшествовали развитию программной инженерии. Работа школы протекала весьма активно в 1950 – 60-е годы. Характерной особенностью крупноблочных систем являлось то, что они оперировали не с индивидуальными числами и символами, а с величинами – укрупненными агрегированными информационными объектами. Такие укрупненные структуры данных (матрицы, векторы, последовательности, деревья, схемы и т. д.) выступали как целое в вычислительных планах; стандартные способы обработки отдельных компонентов выполнялись автоматически на нижних уровнях. Это вносило иерархическую структуру в языки программирования, освобождая верхние уровни от ненужной детализации. Существенно, что вычислительный процесс мыслился при этом также «объемным», протекающим одновременно, либо попеременно на каждом из этих уровней. Громоздкие и трудоемкие вычисления часто чрезвычайно упрощались при переходе на другой уровень. Представлялось, что в разумной стратегии переходов с одного уровня на другой кроется значительный резерв для повышения экономики вычислений. На этой же уровневой основе была создана оригинальная теория и методология трансляции, гибко сочетающая компиляцию и интерпретацию.
Ряд объективных обстоятельств способствовал тому, что до середины 60-х годов программирование в СССР развивалось до некоторой степени автономно от зарубежного [1, 3, 4]. К этим обстоятельствам относились:
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Владимир Липаев - Очерки истории отечественной программной инженерии в 1940-е – 80-е годы, относящееся к жанру Детская образовательная литература. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


