Файл: История развития программирования в России (Начало развития программирования в СССР).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 89

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

На данном временном этапе развития программирование в большей степени начинает приобретать характер копирования технологий запада, в попытке не тратя ресурсы страны следовать за нововведениями в программировании. Но данная стратегия не была реализована и как следствие не стала «Гигантским скачком» в развитии отрасли, как на это рассчитывали организаторы данной идеи. В одной из своих лекций прочитанной на территории России, Эдгар Дейкстра называл данное решение правительства СССР одной из причин победы Запада в «холодной войне».

На протяжение 50-х и 60-х годов было создано много основополагающих технологий в сфере программирования, которые способствовали развитию новых направлений и сфер применения их. Многие достижения в области электроники и микроэлектроники позволили осуществить заменить элементную базу ЭВМ на более продвинутую и новую. Так громоздкие электронные лампы заменяют полупроводниками (миниатюрными транзисторами).

Развитие языков программирования СССР

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

Ляпунов предложил называть «этап» оператором, а схемой счета — совокупность операторов и логических условий. Схема и совокупность спецификаций каждого оператора — это программа. Данная точка зрения на программу в таком ключе стал революционной и сразу легла в основу первых компиляторов или программирующих программ, так их называли в тот промежуток времени.

Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа[9]), он же ПП-1, успешно испытанный в 1954 году. Транслятор ПП-2 (1955 год, 4 в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур.

Первыми программами, принадлежащими системному программному обеспечению, были трансляторы — ассемблеры и автокоды на Западе, программирующие программы (ПП) у нас.

Сотрудники отдела программирования исследовали реализуемость операторных схем и определили основные типы операторов, соответствующие решаемым задачам: Ai — арифметические операторы, Pi — логические операторы, управляющие счетом, Fi — операторы переадресации, позволяющие переходить к следующему значению индекса. Первые трансляторы отечественного производства имели мнемоническое именование программирующих программ. В основе входящего языка каждой из программирующих программ лежал общий концептуальный базис, функцией которого была фиксация типов операторов и общую идею их спецификации. Унификация языков не ставилась как задача первостепенной реализации.


Типы операторов по своей функциональности соответствовали подавляющему большинству решаемых тогда задач, а именно — вычислительным задачам. Выделялись арифметические операторы Аi, ведущие вычисление по формулам, логические операторы Рi, осуществляющие управление счетом, операторы переадресации Fi, позволяющие переходить к следующему значению индекса (и обратные им операторы восстановления), все же неарифметические вычисления объединялись в группы, которые имели название нестандартные операторы Hi, для которых спецификацией был их машинный код. Специального подъязыка описания данных, зачатки которого появились в более поздних ФОРТРАНе[10] и Алголе, не существовало.

Программирующая программа ПП-1 являлась одним из первых в мировой практике трансляторов и, по-видимому, имела самый высокий уровень входного языка.

Программирующая программа ПП-2, была создана под руководством М. Р.Шура-Буры в 1955 году для машины Стрела-1, основывалась на ПП-1 как прототипе. По своей сути ПП-2 являлся первым оптимизирующим транс тором, в виду того, что у него были усовершенствованы алгоритмы трансляции и было уделено заметное внимание оптимизации программ — экономии выражений, оптимальному сочетанию переадресации и восстановления (иначе говоря, наилучшей реализации вычисления индексных выражений), оптимальному отведению памяти для так называемых рабочих ячеек.

ПП для БЭСМ[11] создавала входной язык программирующих программ. Ее задачей было объединение схемы и спецификаций операторов в одном тексте, был введен первый структурный оператор — оператор цикла (соответствующий современным циклам с параметром).

ПП-2 послужила в качестве идеи для основания других двух проектов — ПП для Стрелы 4 и ПП для Стрелы 7. Первая из них представляла собой зачаток настоящей системы программирования: кроме самого транслятора она содержала систему сборки модулей и некоторые средства отладки. Транслятор получал такие фрагменты объектной программы, которые потом назовут модулями, а система сборки создавала программу из оттранслированных модулей и библиотечных программ.

В ПП для Стрелы 3 был реализован ряд идей — табличный подход к синтаксическому анализу, число рабочих переменных было оптимизировано для программирования арифметических выражений. Был создан метод хеширования, который применялся к экономии арифметических выражений.

С трансляции начиналось не только системное, но и теоретическое программирование. Именно работы по входным языкам (операторным схемам) и трансляторам (программирующим программам) послужили толчком к созданию первой математической модели программ — схемам Янова.


В конце пятидесятых прошлого столетия развивался и подход к автоматизации программирования с помощью сторонних библиотек стандартных программ. Были разработаны — стандартная составляющая программа — ССП (осуществляла статическую загрузку и связывание стандартных программ из достаточно обширной библиотеки), интерпретирующая система (ИС), ИС-2 уже воплотила в жизнь некоторые функции будущих операционных систем, осуществляя динамическое связывание, подкачку и смену используемых подпрограмм, причем все это делалось с небольшими накладными расходами и весьма скромными запросами на память. За счет высокой эффективности ИС-2 и хорошо продуманного интерфейса с основной программой сделали ее неотъемлемой частью комплекта поставки ЭВМ, что и является требованием в работе операционной системы.

Не взирая на все свои положительные качества, программирующие программы широкого практического использования не приобрели, даже при их наличии почти во всем множестве архитектур, существовавшем в стране, доля программирования непосредственно в машинном языке была доминирующей. Переход к современному стилю программирования на языках программирования высокого уровня был осуществлен по средствам создания первых алголовских трансляторов. Произошло так, что первая тройка отечественных алголовских трансляторов, созданная для наиболее массовой в то время ЭВМ М-20[12], различалась по своим потребительским возможностям так, что своей совокупностью они удовлетворяли практически все категории пользователей.

Создание системного программирования привело к необходимости создания адекватных языков программирования. Все языки, появившиеся к началу 60 годов — Фортран, Кобол, Алгол-60 и другие, — не учитывали этой области программистской деятельности, и алголовские системы, будучи достаточно громоздкими программными системами, писались еще в машинных кодах вручную. Адекватные языки нужны были не только для трансляторов, но и для всей возникающей области системного программирования: начали появляться и другие языковые процессоры, и первые операционные системы, и информационные системы, в дальнейшем это все приобретет название базового программного обеспечения.

Единственным языком программирования отечественного происхождения, получивший общемировую известность, стал язык Рефал. Однако распространённость этого языка незначительна. Первая версия Рефала была создана в 1966 году Валентином Турчиным в качестве метаязыка для описания семантики других языков. В будущем, за счет появления достаточно эффективных реализаций на ЭВМ, он стал находить практическое использование в качестве языка программирования. В текущее время основными диалектами языка являются такие его формы как: Рефал-2 (1970-е), Рефал-5 (1985) и Рефал+ (1990), отличающиеся друг от друга деталями синтаксиса и набором дополнительных средств, расширяющих первоначальный вариант.


Рефал — язык манипулирования символьными объектами, такими как текстами, формулами, программами и т.п. Программа на Рефале состоит из функций, которые могут определяться по средствам друг друга — рекурсивно. В следствии чего и произошло название: алгоритмический язык рекурсивных функций. Помимо описания семантики алгоритмических языков, он нашел и другие, не менее важные применения. В первую очередь это машинное выполнение громоздких аналитических выкладок в теоретической физике и прикладной математике, интерпретация и компиляция языков программирования, машинное доказательство теорем, моделирование целенаправленного поведения и т.п.

Рефал — язык бестиповый. В его основе лежит понятие объектного выражения как универсального типа данных. Все аргументы и результаты всех функций являются объектными выражениями.

Объектное выражение определяется таким образом, что операция конкатенации делается неявной, скрытой. Точнее сказать, что конкатенация на уровне значений выражается конкатенацией на уровне имен. Это свойство вытекает из основной цели Рефала как метаязыка для описания разных языковых объектов. Оно придает особую выразительную силу и остальным средствам языка, таким как результатные выражения и образцы.

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

Язык определения функций Рефала, основанный на понятиях образца и результатного выражения чрезвычайно прост и компактен. Его минимальная версия получила название Базисный Рефал. Диалект Базисного рефала под названием Рефал-2 был реализован на многих типах отечественных ЭВМ и долгое время играл роль де-факто стандарта языка Рефал.

Язык Рефал-5 содержит Базисный Рефал в качестве подмножества. Расширения языка Рефал-5 качественно меняют стиль программирования.

В настоящее время существует две реализации языка Рефал-5: одна выполнена Д. Турчиным, другая — Н. Кондратьевым и Арк. Климовым. Обе имеют практически один и тот же входной язык, но отличаются рядом особенностей выполнения поствоенных задач. Вторая известна также под названием Рефал-6, однако следует помнить, что это название не языка, а его реализации.

Был также создан язык Рефал Плюс, в отличии от Рефал-5 доведенный до концептуальной полноты (расширение Рефала средствами обработки неуспехов).


1997 год. Рефал прочно занял свою нишу, не имея никаких конкурентов и опасностей. Например, он успешно используется физиками Обнинска, многими математическими центрами в России. Одно из основных применений Рефал – разработка трансляторов с языков программирования, когда сам Рефал используется как метаязык. В ИПМ[13] на нем был очень быстро написан высокоэффективный транслятор Cern Fortran.

Военные структуры также не обделили вниманием Рефал как язык для ЭВМ. Современная боевая техника зачастую требует модификации средств разработки, делая их адекватными растущим возможностям электроники, и Рефал поддерживает создание быстро совершенствующихся узкоспециализированных языков программирования. Рефал нашел применение в одной из очень интересных областей применения, это искусственный интеллект (ИИ). В ИИ Рефал используется и в качестве конечного средства разработчика, и как инструмент для создания языков представления знаний, ориентированных на конкретные области применения в ИИ. Одним из фундаментальных направлений, позволяющих эффективно использовать мощь Рефал, является анализ естественных языков. По средствам Рефал были созданы лингвистические процессоры, экспертные системы.

Язык системного программирования (машинно-ориентированный язык), задумывался как язык-посредник при трансляции с различных языков. Для каждой аппаратной платформы достаточно было написать транслятор Алмо — и появлялась возможность работать с множеством языков программирования, которые имели трансляцию в Алмо. Были созданы реализации языка для основных отечественных машин того времени (М-20, БЭСМ-6, Минск 2, Урал 11) и трансляторы с Алгола-60 и ФОРТРАНа в Алмо, причем все трансляторы также были написаны на Алмо и “раскручены” на всех этих машинах. Язык Алмо имел в своей основе некоторую абстрактную машину, отражавшую особенность существовавшего тогда класса машин, и в этом отношении Алмо-подход предвосхищал появившиеся позже Р-код, М-код и прочие подобные подходы. Машинная ориентированность явно прослеживалась в языке — регистровые объекты, постфиксная запись выражений, оперсации с битами машинных слов и т.д.

Сигма — СИмвольный Генератор и МАкроассемблер — обладал двумя на то время новыми и важными особенностями. Синтаксически ограничиваемый макросами, генеральную линию создания программ — подстановку описанных макросов. Язык содержал средства формального описания конкретной архитектуры: была создана система параметров, в терминах которой фиксировалось представление языка для конкретной ЭВМ. Таким образом, общая Сигма-программа вместе с описанием архитектуры ЭВМ транслировалась на данную ЭВМ. Параметрами архитектуры были длина слова, представление значений типов в машинном слове и т.п., так и правила заполнения шаблонов машинных команд.