Файл: История развития программирования в россии (Развитие языков программирования).pdf

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

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

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

Добавлен: 31.03.2023

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

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

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

Введение

Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования.

На сегодняшний день программирование является основополагающим компонентом развития как отдельных отраслей промышленности любой страны, так и всей экономики в целом. И чтобы понимать какого результата ждать в будущем, в каком направлении движется государство, необходимо знать историю программирования, текущее положение программирования в стране, и то, как это влияет на развитие страны в целом. Все вышесказанное обуславливает актуальность темы данной курсовой работы.

Объектом исследования является программирование в России.

Предметом исследования является история возникновения и последующего развития программирования в СССР и современной России.

Целью исследования является изучение истории возникновения и последующего развития программирования в СССР и современной России.

Исходя из поставленной цели, можно выделить следующие задачи:

  • рассмотреть предпосылки возникновения программирования
  • изучить историю становления программирования в СССР
  • проанализировать развитие программирования в современной России
  • описать текущее положение программирования в России

Глава 1. Предпосылки возникновения программирования

Еще с древних времен предпринимались попытки создать устройство, которое бы облегчало процесс вычислений.

В начале 19 века Чарльз Бэббидж, профессор математики Кэмбриджского университета, проводя анализ переписи населения, сформировал основы архитектуры вычислительной машины. Работая над аналитической машиной – «Машина Бэббиджа», Бэббидж сформировал основные принципы организации и работы современных ЭВМ. Через некоторое время работами Бэббиджа заинтересовалась Аде Лавлейс. Она подробно изучила статьи профессора по машине и стала первой, кто написал для неё программу.

Ада Левлейс написала первые программы для решения двух уравнений и заложила теоретические основы программирования и по праву считается первым в мире программистом и основоположником научного программирования.


Далее, в 1954 году Джордж Буль начал развивать булеву алгебру, на основе которой была основана теория релейно-контактных схем. [1]

В 1936 английский математик Аллан Тьюринг основал термин «Машина Тьюринга». Он утверждал, что абсолютно любой алгоритм может быть реализован на его машине – универсальной ЭВМ. Можно считать, что Машина Тьюринга и есть идеальная модель универсальной ЭВМ.[1]

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

С приходом цифровых программно-управляемых машин основалась новая область прикладной математики - программирование. Первоначально программы составлялись вручную на машинных языках (в машинных кодах). Программы были громоздкими, а отладка трудоемка. Для упрощения написания и отладки программ были разработаны мнемокоды, по структуре близкие к машинному языку и использующие символьную адресацию – ассемблеры. Ассемблер переводил программу, записанную в мнемокоде, на машинный язык.

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

Языки программирования, появившиеся на свет за всю историю, можно разделить на несколько поколений, которые отличаются друг от друга по своим возможностям и времени создания. На текущий день выделяют пять поколений языков программирования, которые отличаются друг от друга по своей функциональной мощности. В таблице 1 представлены все основные поколения языков программирования с их краткой характеристикой.

Таблица 1. Поколения языков программирования

Поколения

Языки программирования

Характеристика

Первое

Машинные

Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знания архитектуры ЭВМ

Второе

Ассемблеры, макроассемблеры

Более удобны для использования, но по-прежнему машинно-зависимы

Третье

Языки высокого уровня

Мобильные, человеко-ориентированные, проще в освоении

Четвёртое

Непроцедурные, объектно-ориентированные, языки запросов, параллельные

Ориентированы на непрофессионального пользователя и на ЭВМ с параллельной архитектурой

Пятое

Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки

Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками


1.2 Машинные коды и Ассемблер

Языки программирования первого поколения представляли собой набор машинных команд в двоичном или восьмеричном формате, который определялся архитектурой конкретной ЭВМ.

Внутреннее устройство ЭВМ таково, что для выполнения нужных операций, необходимо передать команду, которая состоит только из логических единиц и логических нулей. Соответственно, при составление полноценной программы для ЭВМ, её приходилось полностью писать на машинном коде, каждая команда которого состояла из кода операций и адресов операндов, выраженных в виде различных последовательностей логических единиц и логических нулей.[3]

Ниже представлен пример записи команды для процессора, которая выполняет команду «Загрузить» значение из ячейки памяти «операнд 1» в регистр общего назначения «операнд 2»:

Рисунок 1 – Пример записи команды «Загрузить»

Запись команд в подобном виде неудобна, так как возможно допустить ошибку при составлении последовательности, что приведет к абсолютно другому поведению программы в отличии от того, что задумывалось. В дополнение, оператору также необходимо понимать внутреннюю структуру каждого блока ЭВМ, чтобы верно написать программу, так как программы на данном языке являются машинозависимыми, иначе говоря, для каждой отдельной ЭВМ необходимо было писать свою отдельную программу.

Спустя некоторое время стало понятно, что процесс формирования машинного кода возможно автоматизировать. Так в 1950 году начали применять мнемонический язык – Assembly. Assembly дал возможность представить машинный код в более удобном формате для человека, а именно использовал буквенные команды, отражающие суть операции, вместо двоичного кода.[3]

Ниже представлен пример записи команды на языке Assembly для сложения двух чисел:

ADD ch,10001010b

Assembly - язык программирования низкого уровня.

Язык программирования низкого уровня ориентирован на конкретный тип процессора и учитывает его особенности. Это значит, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Появление языка Assembly значительно облегчило жизнь программистов, так как теперь они могли писать программу командами, состоящими из символов приближенных к обычному языку. Для того времени этот язык было новшеством, так как позволял писать компактные по размеру программы.[1]


Но даже с приходом Assembly, написание больших программ вызывало трудности, что и привело к появлению языков третьего поколения – языков высокого уровня.

1.3 Первые языки программирования высокого уровня

Начиная с середины 50-х годов, стал увеличиваться прогресс развития в области программирования. Все больше стали появляться новые языки программирования, которые выступали посредником между ЭВМ и программистами. Параллельно с этим начали создаваться языки программирования высокого уровня – эти языки программирования были машинонезависимыми, а это означало, что они могут выполняться на различных архитектурах ЭВМ.[1]

Но для каждого языка были разработаны собственные компиляторы – программа, выполняющая компиляцию.

Компиляция – трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду.

1.4 Язык программирования FORTRAN

Первый язык высокого уровня был создан в период с 1954 по 1957 года группой программистов под руководством Джона Бэкуса в корпорации IBM и это стало следующим этапом развития языков программирования. Это был язык программирования FORTRAN.

Язык был широко принят учеными для написания программ с интенсивными вычислениями. Включение комплексного типа данных сделало его особенно подходящим для технических приложений.

Популярность FORTRAN способствовала тому, что производители компьютеров стали создавать компиляторы FORTRAN для своих компьютеров. К 1963 году, существовало более 40 компиляторов под различные платформы – именно поэтому FORTRAN считают первым широко используемым языком программирования.[4]

Приход FORTRAN в СССР произошел позже, чем в других странах. Как только фортран появился в СССР, все вычисления, выполняемые физиками, стали выполняться только с его использованием.

В данный момент, наше общество становится более информационным и нам приходится все чаще взаимодействовать с различными технологиями, а чтобы упростить это взаимодействие, происходит создание программного обеспечения на различных языках программирования.


Глава 2. Развитие программирования в СССР

2.1 Первый компилятор

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

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

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

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

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

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

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