Эволюция технологий и языков программирования

Рассмотрение исторических этапов развития технологий и языков программирования. Характеристика языков объектно-ориентированного программирования. Реализация основных объектов и концепций объектно-ориентированной технологии программирования на языке С++.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 25.05.2018
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ГОСУДАРСТВЕННЫЙ КОМИТЕТ СВЯЗИ, ИНФОРМАТИЗАЦИИ

И ТЕЛЕКОММУНИКАЦИОННЫХ ТЕХНОЛОГИЙ РЕСПУБЛИКИ УЗБЕКИСТАН

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ КАРШИНСКИЙ ФИЛИАЛ

“Допущен к защите”

Зав. кафедрой «Информационных технологий» Носиров Б.Н.

Выпускная квалификационная работа

на тему

«ЭВОЛЮЦИЯ ТЕХНОЛОГИЙ И ЯЗЫКОВ ПРОГРАММИРОВАНИЯ»

Выпускник Тен С.Н.

Руководитель доц. Узаков З.У.

Рецензент Эргашев А.Х.

Консультант по БЖД доц. О.Д. Рахимов

Карши 2014 г.

Задание

На выпускную квалификационную работу

Студента Тен Сергея Николаевича

Тема выпускной квалификационной работы:

Эволюция технологий и языков программирования

Утверждена приказом № 37-15, 16 января 2014г. Каршинского филиала ТУИТ

Срок сдачи выпускной квалификационной работы «__»_______2014г

Исходные данные к работе: Учебно - методические материалы по программированию, Электронные учебники,.

Содержание расчётно-пояснительной записки (список подлежащих рассмотрению работ): Глава 1 Введение; Глава 2 Исторически этапы развития технологий и языков программирования; Глава 3 Объектно - ориентировано технологии и языков программирования; Глава 4 Реализация основных объектов и концепций объектно - ориентированной технологии программирования на языке С++; Глава 5 Безопасность жизнедеятельности; Глава 6 Заключение; Глава 7 Список литературы; Глава 8 Приложение

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

Консультант по квалификационной работе:

Наименование главы

Консультант

Дата принятия задания

Подпись консультанта

1

Эволюция технологий и языков программирования

Узаков З.У.

25.01.2014 г.

2

Безопасность жизнедеятельности

Рахимов О.Д.

25.01.2014 г.

Календарный график по выполнению выпускной квалификационной работы

Разделы квалификационной работы

Объём квалификационной работы, (стр.)

Отношение к общему объёму,

%

Отметка о выполнении задания

Примечание

1

Глава1 Введение

7

6,0

Выполнено

2

Глава2 Исторически этапы развития технологий и языков программирования

1

0,9

Выполнено

3

2.1 Технологии и языки программирования низкого уровня Технологии и языки программирования низкого уровня

4

3,4

Выполнено

4

2.2 Технологии и языки программирования высокого уровня

10

8,9

Выполнено

5

2.3 Технологии и языки программирования сверх высого уровня

8

6,9

Выполнено

6

Глава3 Объектно - ориентировано технологии и языков программирования

1

0,9

Выполнено

7

3.1 Языки объектно - ориентированного программирования

10

8,7

Выполнено

8

3.2 Основные концепции объектно - ориентированной технологии программирования

3

2,6

Выполнено

9

3.3 Особенности объектно - ориентированной технологии программирования

14

2,3

Выполнено

10

Глава4 Реализация основных объектов и концепций объектно - ориентированной технологии программирования на языке С++

2

1,7

Выполнено

11

4.1 Реализация массивов, структур, объединений и классов

3

2,6

Выполнено

12

4.2 Реализация концепции полиморфизма

8

7,0

Выполнено

13

4.2 Реализация концепций наследования

9

7,8

Выполнено

14

4.3 Реализация концепций инкапсуляции

12

10,5

Выполнено

15

Глава5 Безопасность жизнедеятельности

1

0,9

Выполнено

16

5.1 Характеристика условий труда программиста

1

0,9

Выполнено

17

5.2 Параметры микроклимата

1

0,9

Выполнено

18

5.3 Шум и вибрация

1

0,9

Выполнено

19

5.4 Требования к рабочему месту

1

0,9

Выполнено

20

5.5 Противопожарная безопасность

1

0,9

Выполнено

21

Глава6 Заключение

3

2,6

Выполнено

22

Глава8 Приложение

3

2,6

Выполнено

Руководитель работы: Узаков З.У.

(подпись) (Ф.И.О.)

Дата принятия задания: 25 января 2014 года

(дата)

Студент - выпускник: Тен С.Н.

(подпись) (Ф.И.О.)

Содержание

Введение

Глава 1. Исторически этапы развития технологий и языков программирования

1.1 Технологии и языки программирования низкого уровня

1.2 Технологии и языки программирования высокого уровня

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

Глава 2. Объектно - ориентировано технологии и языков программирования

2.1 Языки объектно - ориентированного программирования

2.2 Основные концепции объектно - ориентированной технологии программирования

Глава 3. Реализация основных объектов и концепций объектно - ориентированной технологии программирования на языке С++

Глава 4. Безопасность жизнедеятельности

4.1 Характеристика условий труда программиста

4.2 Параметры микроклимата

4.3 Шум и вибрация

4.4 Требования к рабочему месту

4.5 Противопожарная безопасность

Заключение

Список литературы

Приложение

язык программирование технология исторический

Введение

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

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

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

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

ЭВМ будущего, пятого поколения называют машинами «искусственного интеллекта». Но прототипы языков для этих машин были созданы существенно раньше их физического появления. Это языки ЛИСП и Пролог.

Процесс работы компьютера заключается в выполнении программы, то есть набора вполне определённых команд во вполне определённом порядке. Машинный вид команды, состоящий из нулей и единиц, указывает, какое именно действие должен выполнить центральный процессор. Чтобы задать компьютеру последовательность действий, которые он должен выполнить, нужно задать последовательность двоичных кодов соответствующих команд. Программы в машинных кодах состоят из тысячи команд. Написание таких программ - занятие сложное и утомительное. Программист должен помнить комбинацию нулей и единиц двоичного кода каждой команды, а также двоичные коды адресов данных, используемых при её выполнении. Гораздо проще написать программу на каком-нибудь языке, более близком к естественному человеческому языку, а работу по переводу этой программы в машинные коды поручить компьютеру. Так возникли языки, предназначенные специально для написания программ.

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

Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространенным утверждениям, признаваемым большинством разработчиков, относятся следующие:

- Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными процессами.

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

- Исполнение: язык программирования может использовать специальные конструкции для определения и манипуляции структурами данных и управления процессом вычислений.

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

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

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

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

Можно писать программы непосредственно на машинном языке, хотя это и сложно. На заре компьютеризации(в начале 1950-х г.г.), машинный язык был единственным языком, большего человек к тому времени не придумал. Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (т.е. немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят "исходный код" (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляют компьютер выполнять соответствующие команды, которые даются на машинном языке.

Несмотря на то, что в различных источниках делается акцент на те или иные особенности внедрения и применения Объекто-ориентированного программирования, 3 основных (базовых) понятия ООП остаются неизменными. К ним относятся:

1. Наследование (Inheritance)

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

2. Инкапсуляция (Encapsulation)

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

3. Полиморфизм (Polymorphism)

Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами -- из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием -- в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.

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

За прошедшие 15 лет в методологии написания программ для компьютеров произошла радикальная перемена. Она состоит в том, что разработчики перешли от языков программирования системного уровня, таких как С и С++, к языкам описания сценариев, примерами которых могут служить Perl Tcl. Хотя в эту перемену оказалось вовлечено огромное количество людей, лишь немногие из них осознают, что в действительности происходит, и еще меньше найдется таких, кто бы смог объяснить причины.

Объектно-ориентированное программирование - это подход к разработке программного обеспечения, основанный на объектах, а не на процедурах. Этот подход позволяет максимизировать принципы модульности и "сокрытия информации". Объектно-ориентированное программирование базируется на связывании или инкапсуляции структур данных и процедуры, которая работает с данными в структуре, с модулем.

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

Данная работа состоит из глав, в которых описана актуальность, цели и причины написания данной работы. Основное внимание я уделил 2,3,4 и 7 главе, где описывается суть моей выпускной квалификационной работе

Глава 2 содержит исторически этапы развития технологий и языков программирования в которых описывается различие между группами технологий языков низкого, высокого и сверх высокого уровней.

Глава 3 содержит описание объектно - ориентированных технологий и языков программирования в которых описывается актуальность ООТЯП

Глава 4 содержит реализацию основных концепций объектно - ориентированных технологий и языков программирования в которых реализуется концепция полиморфизма, наследования и инкапсуляции.

Глава 7 содержит наглядный пример реализации концепций полиформизма, наследования и инкапсуляции.

Глава 1. Исторически этапы развития технологий и языков программирования

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

Основные требования, предъявляемые к языкам программирования:

наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;

единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;

гибкость - возможность относительно удобного, несложного описания распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств;

модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах;

однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач.

В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.

По наиболее распространенной классификации все языки программирования делят на языки:

низкого уровня

высокого уровня

сверхвысокого уровня

1.1 Технологии и языки программирования низкого уровня

В группу языков низкого уровня входят машинные языки и языки символического кодирования: Низкоуровневый язык программирования близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft.NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).

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

Как правило, использует особенности конкретного семейства процессоров. Общеизвестный пример низкоуровневых языков программирования:

Язык Ассемблера - это символическое представление машинного языка. Он облегчает процесс программирования по сравнению с программированием в машинных кодах.

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

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

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

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

Лисп - Один из самых старых языков программирования Фортран был создан в 50-х гг. нашего века. Фортран и подобные ему языки программирования (Алгол, ПЛ/1) предназначались для решения вычислительных задач, возникающих в математике, физике, инженерных расчетах, экономике и т.п. Эти языки в основном работают с числами.

Второй старейший язык программирования Лисп (List Information Symbol Processing), Дж. Маккарти в 1962 г. скорее для работы со строками символов, нежели для работы с числами. Это особое предназначение Лиспа открыло для программистов новую область деятельности, известную ныне, как «искусственный интеллект». В настоящее время Лисп успешно применяется в экспертных системах, системах аналитических вычислений и т.п.

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

Существование множества различных диалектов Лиспа привело к созданию в начале 80-х гг. Common LISP Комитета, который должен был выбрать наиболее подходящий диалект Лиспа и предложить его в качестве основного. Этот диалект, выбранный Комитетом в 1985г., получил название Common LISP . В дальнейшем он был принят в университетах США, а также многими разработчиками систем искусственного интеллекта, в качестве основного диалекта языка Лисп.

Язык программирования Лисп существенно отличается от других языков программирования, таких, как Паскаль, Си и т.п. Работа с символами и работа с числами как с основными элементами требует разных способов мышления.

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

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

Низкий уровень подразумевает не качество программ, а уровень детализации инструкций. Так, команда, записанная на Ассемблере, например, MOV AL, OOh, означает, что в регистр процессора (указывается, в какой именно!) надо занести число 0.

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

Методы программирования для старых компьютеров были громоздкими, медленными и крайне ограниченными. Эти компьютеры программировались путем установки ряда переключателей (включено или выключено), каждый переключатель представлял одну двоичную единицу (или бит), принимая значение 0 или 1. Это сильно ограничивало возможности и занимало много времени.

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

К языкам низкого уровня относят:

* машинные языки - языки кодов ЭВМ;

* машино - ориентированные языки - ассемблеры, мнемокоды.

Также к языкам низкого уровня условно можно причислить MSIL, применяемый в платформе Microsoft .NET, Форт, Java байт-код.

1.2 Технологии и языки программирования высокого уровня

ALGOL это язык программирования, первоначально разработанный в 1958 году, который был назван по названию "Алгоритмический процесс" основной проблемы программирования. Это краткое имя алгоритмического языка. В некотором смысле, это была реакция на Fortran, этот язык был предшественником Паскаля. Он использует слова в качестве ограничителей блоков и был первым, кто использовал пару "begin" и "end". Программирование для начинающих.

Существовали три основные версии официального Алгола: Алгол 58, Алгол 60 и Алгол 68. Из них, язык программирования Алгол 60 был самым влиятельным (Алгол 60 был предком Algol W, который был использован Никлаусом Виртом для разработки Паскаля). Каждая официальная версия Алгола названа в честь года, в котором она была опубликована. Программирование для чайников.

Алгол был разработан совместно с Комитетом европейских и американских компьютерных ученых. Этот язык имеет, по крайней мере, три различных синтаксиса: ссылочный синтаксис, синтаксис публикации, и синтаксис исполнения. Для разного синтаксиса разрешено использовать различные имена ключевых слов, разрешено использовать разные разделители целой и дробной части (запятую или точку) для различных стран как основу программирования.

Язык программирования Алгол 60 был выпущен в 1960 году Джоном Бэкусом и Питером Наурос, которые служили в комитете, который разработал АЛГОЛ. Algol 60 вдохновил разработчиков многих языков, которые создавались позже; цитата в этой связи Э. Хоара "Алгол оказал громадное влияние на своих преемников". Полная цитата "Этот язык настолько опередил свое время, что намного опередил своих предшественников и очень близок к своим последователям", но афоризм более известен. Иногда ошибочно эти слова приписывают Эдсгеру Дейкстре, что вполне понятно, так как он служил в комитете-разработчике, а также делал не менее известные замечания по поводу языка.

Компьютер B5000 компании Burroughs Corporation и его преемники были и остаются вычислительными машины со стеком данных, предназначенные для программирования на расширенном Алголе; действительно операционные системы, или MCP (Master Control Program), как их называют, написано на расширенном Алголе еще в 1961 году. Unisys Corporation до сих пор предлагает схожие с B5000 компьютеры, на которых и сегодня работает MCP и поддерживает несколько компиляторов для расширенного Алгола.

В официальном языке программирования Algol 60 не были определены средства ввода / вывода; конкретные реализации языка обязательно должны были добавить какие-то свои, но они варьировались от одной реализации к другой. Алгол-68, возможно, преодолел этот недостаток отсутствия объектов ввода / вывода (или "transput").

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

Джон Бэкус разработал Бэкуса метод нормальной формы описания языков программирования, специально для Алгола 58. Он был пересмотрен и расширен Питером Науром в метод Бэкуса-Наура для Алгола 60. Алгол 68 был определен с использованием двухуровневой грамматики, которую изобрел Адриан ван Вейнгаардена и которая носит его имя.

Фортрана (FORTRAN) -- один из первых языков программирования, языков-долгожителей, широко применяемый и сегодня, несмотря на критику и мрачные прогнозы. Название его составлено из первых букв FORmula TRANslating Syst., что означает «система трансляций формул». Язык был разработан группой сотрудников фирмы IBM под руководством Джона Бэкуса. Первый отчет по созданию ФОРТРАНА (версия ФОРТРАН I) был опубликован 10 ноября 1954 г. (последний датируется 1957 г.) Первая версия была реализована на компьютере IBM-704. Для написания первого компилятора потребовалось 18 человеко-лет.

В первые годы язык был встречен скептически, так как ожидали снижения эффективности программ. Однако Д. Бэкус с сотрудниками группы создали такой компилятор, который генерировал программы, по качеству не уступающие составленным вручную на машинном языке.

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

Наличие многочисленных диалектов не создало серьезных препятствий для широкого обмена программами.

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

Небезынтересно отметить, что дальнейшие версии несут в себе отпечаток ФОРТРАНА I и его реализации на ламповой ЭВМ IBM-704. В частности, шестилитерные имена переменных объясняются тем, что длина слова в IBM-704 составляла 64 бит. Максимальное число индексов для элементов массива, равное 3, объясняется наличием в IBM-704 только трех индекс-регистров и т. д.

В 1958 г. появилась усовершенствованная версия языка -- ФОРТРАН II, а спустя несколько лет -- ФОРТРАН III, которая, однако, не получила распространения.

Наиболее популярной получилась версия под названием ФОРТРАН IV, созданная в 1962 г. В том же году Американский институт стандартов (ANSI) организовал комитет по выработке стандарта ФОРТРАНа, который был принят в 1966 г. Вновь разработанный стандарт получил название ФОРТРАН ANSI или ФОРТРАН-66.

После 1966 г. было разработано еще несколько версий ФОРТРАНА, на основе которых в 1977 г. появилась пересмотренная версия стандартного языка под названием ФОРТРАН-77. Эта версия не исключает использование старых фортрановских программ, она лишь расширяет возможности языка в операциях ввода-вывода, в средствах описания данных и подпрограмм, в конструкциях, которые ранее допускали значения только целого типа, и т. п.

В мае 1984 г. комитет Х3.13 Американского национального института стандартов рассмотрел предложения по выработке новой стандартной версии языка ФОРТРАН на период 1980 -- 1990 гг. под названием ФОРТРАН 8х. В новой версии, совместимой с языком ФОРТРАН-77, предлагаются изменения, касающиеся в основном работы с файлами: процедур открытия и закрытия файлов, доступа к ним и поиска записи в файле с помощью различных операторов, влияния операторов на эффективность работы процессора.

Трансляторы языка ФОРТРАН существуют на всех вычислительных машинах и, в частности, на машинах серии СМ и диалого-вычислительных комплексов (ДВК).

В СССР в 1978 г. разработаны стандарты на языки ФОРТРАН (ГОСТ 23056-78) и базисный ФОРТРАН (ГОСТ 23057-78). Стандарт ФОРТРАН ANSI положен в основу реализации версии ФОРТРАН IV на ЕС ЭВМ.

КОБОЛ - Имя языка составлено из первых букв названия COBOL -- COmmon Business -- Oriented Language, что дословно означает «общий язык деловой ориентации». Язык этот ориентирован на обработку экономической информации. Он разработан рабочей группой, созданной под эгидой исполнительного комитета по языкам систем обработки данных Кодасил (CODASYL -- Conference on Data System Languages).

Работы над первой версией языка завершены в декабре 1959 г., а в феврале 1960 г. опубликован предварительный отчет. На разработку КОБОЛ-60 потребовалось около 4 человеко-лет. Корни КОБОЛа уходят к ранним, мало известным языкам программирования ФЛОУМАТИК, КОМТРАН и ФАКТ, а АЛГОЛ повлиял на выбор символов для КОБОЛа. Первые компиляторы КОБОЛа созданы в декабре 1960 г. одновременно двумя фирмами RCA и Remington -- Rand -- Univas.

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

КОБОЛ был первым языком, в котором средства описания данных соответствуют процедурным возможностям, и первым языком, в котором введен тип данных «запись», являющийся основной структурой данных. К одной из примечательных особенностей КОБОЛа относится рекурсивное описание данных. Другая его особенность в том, что программы на КОБОЛе разбиваются на части, называемые разделами, причем каждая программа состоит из четырех разделов: идентификации, оборудования (среды), данных и процедур.

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

Еще одна отличительная черта КОБОЛа -- это его постоянное изменение и совершенствование. Вслед за появлением КОБОЛа-60 в следующем году была опубликована вторая версия под названием «КОБОЛ-61?, которая получила широкое распространение, однако имела некоторую несовместимость с КОБОЛом-60. В 1963 г. была опубликована расширенная версия языка, названная «Расширенный КОБОЛ-60?. Два года спустя появилась новая версия с несколько необычным именем: «КОБОЛ, редакция 1965?. Эта версия в качестве американского национального стандарта утверждена в 1968 г. Однако работы по усовершенствованию языка и выработке новых версий продолжаются.

Измененный американский стандарт КОБОЛа принят в 1974 г. с соответствующим названием -- КОБОЛ-74. В настоящие время в Американском национальном институте стандартов (ANSI) заканчивается разработка другого стандарта КОБОЛа, который предусматривает введение ряда новых конструкций в язык и отказ от некоторых редко используемых или неудобных операторов и т.д. Новый стандарт предусматривает также значительное сокращение различных подмножеств языка.

В СССР первые компиляторы с подмножества языка КОБОЛ реализованы в 1968 г. на ЭВМ «Днепр-21? и «Минск-32?, а в 1977 г. был принят отечественный стандарт на язык программирования КОБОЛ (ГОСТ 22558-77).

Оценивая вклад этого языка в теорию и практику программирования, нельзя не указать на противоречивый характер отношений к нему пользователей, с одной стороны, и специалистов по информатике, с другой. Если среди программистов он получил распространение благодаря своей удобочитаемости, а может быть, и ранней стандартизации, то многие ученые его появление восприняли как ошибку, а его использование как «болезнь», с которой необходимо бороться. Причем некоторые из ученых, в частности известный голландский специалист по программированию Э. Дейкстра, выражали свое негативное отношение к КОБОЛу в довольно резкой форме (ACM SIGPLAN NOTICE, 1982, v. 17, pp. 13-15). Они возражали против использования английского языка как основы КОБОЛа из-за его несовершенной стилистики. Хорошая читаемость программ, утверждали они, не говорит в пользу КОБОЛа, так как программы с введением многочисленных «шумовых» слов становятся слишком многословными. Из-за большой длины программы компиляторы работают медленно, а кроме того, возникают трудности автоматического обнаружения ошибок во время компиляции.

В заключении отметим: несмотря на то что опыт разработки и применения КОБОЛа, очевидно, мало повлиял на создание языков, появившихся после него (за исключением языка PL/1), все же надо признать, что он оставил заметный след в истории развития языков программирования.

Эти языки позволяют писать программы текстом, похожим на английский язык. Компилятор получает каждую команду и преобразует ее в машинный код. Он позволяет использовать имена (переменные) для представления элементов данных так, что одна и та же программа может быть использована с любыми входными данными. Программы, написанные на языках высокого уровня, более компактны, легче для понимания, а вероятность появления в них ошибок меньше.

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

Первым языком программирования высокого уровня считается компьютерный язык Plankalkьl разработанный немецким инженером Конрадом Цузе ещё в период 1942-1946г. Однако транслятора для него не существовало до 2000 г. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка.

Ранние языки высокого уровня были довольно специализированными: Фортран (FORmula TRANslation) был предназначен для использования в научных целях, КОБОЛ (Common business Orientated Language) - для использования в мире бизнеса. Появление в 50-х гг. языка BASIC (Beginners All-purpose Symbolic Instruction Code) закрыло существовавший в языках высокого уровня пробел между языками для науки и для бизнеса. BASIC в равной степени годится для любых задач и в то же время достаточно прост для изучения.

Тем временем были изобретены новые методы программирования, которые привели к новой волне языков высокого уровня. Одним из этих языков, выдержавших проверку временем, является основанный на методах структурного программирования Pascal.

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

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

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

Примеры: C, C++, Visual Basic, Java, Python, PHP, Ruby, Perl, Delphi (Pascal). Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.

К языкам высокого уровня относят:

проблемно-ориентированные (имеют средства для организации структур данных, описания алгоритмов и ориентированы на решение задач определенного класса): Фортран, Алгол, Кобол, Ада и др.;

универсальные: Алгол 68, PL/1, Паскаль, QBasic, C, C++, С# и дp.;

языки проектирования программ (системы программирования) - в настоящее время имеют самый высокий уровень абстракции, они расширяются не как языки описания процесса обработки данных, а как средства описания задач: Visual Basic, Delphi, MS Visual C++, Borland C++ Builder и др.;

языки гипертекстовой разметки, такие, как HTML - набор кодов, который вводится в документ для обозначения, например, связей между его частями. Команды HTML обеспечивают соединение сайтов и главных страниц WWW (Всемирной паутины сети Интернет) при помощи гиперссылок и указывают Web-браузеру (программе навигации) способ расположения массивов данных;

языки описания сценариев - макросы, в которых объединены отдельные команды, управляющие средой в соответствии с их списком - программой: (например состоящие из именованных последовательностей совокупности указанных нажатий клавиш при работе с пакетом Microsoft Office);

языки моделирования систем: например, GPSS (General Purpose Simulating System) позволяет автоматизировать при моделировании процесс программирования моделей. Язык построен в предположении, что моделью сложной дискретной системы является описание ее элементов и логических правил их взаимодействия. Для определенного класса моделируемых систем выделяют небольшой набор абстрактных элементов объектов. Набор логических правил ограничен и может быть описан небольшим числом стандартных операций. Комплекс программ, описывающих функционирование объектов и выполняющих логические операции, является основой для создания программной модели систем данного класса.

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

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

Наиболее характерной особенностью синтаксиса Алгола-68 является возможность переопределения синтаксиса и операторов -- программист может активно расширять язык в требуемом направлении, создавать собственные операции. Целью включения таких средств в язык было достижение максимальной выразительности и получение возможности удобного описания максимально абстрактных алгоритмов. За эти возможности, а также за наличие мощных операторов для обработки структур и массивов Алгол-68 иногда называют «языком сверхвысокого уровня».

Формально Алгол-68 является процедурным языком программирования, ориентированным на описание последовательности команд, но благодаря развитым средствам описания типов и операций он может быть использован для написания программ практически в любом стиле. Так, в приведённом ниже примере программа на Алголе-68 написана в функциональном стиле.

Эта программа реализует классический алгоритм «Решето Эратосфена» для поиска всех простых чисел меньше 100. nil означает null pointer (нулевой указатель) в других языках. Нотация x of y означает «доступ к x как к элементу struct или union y».

Ещё одна интересная особенность языка Алгол-68 -- его «многоязычность» -- в язык заложена возможность использования различных таблиц трансляции, что позволяет для каждого естественного языка определить свой набор ключевых слов Алгола-68. В результате программисты получают возможность писать программы ключевыми словами родного языка. Ниже приведён пример простейшей процедуры на Алголе-68, выполняющей вычисление даты, следующей за переданной в параметре, на двух языках: английском и немецком.

APL (от названия книги A Programming Language) -- интерактивный матричный язык программирования, основанный на математической нотации Айверсона.

В 1956 году Кеннет Э. Айверсон, сотрудник Гарвардского университета (впоследствии сотрудник фирмы IBM и профессор названного университета) заявил о разрабатываемом им языке, который был закончен в 1961 г. Впервые этот язык был описан в 1962 году в книге Айверсона «A Programming Language» («Некий язык программирования»). Позднее язык был стандартизирован: ISO 8485:1989 описывает Core APL, ISO/IEC 13751:2001 -- Extended APL. Кроме того, предпринимались попытки дополнить его современными возможностями -- объектно-ориентированным программированием, работой с базами данных SQL и т.д.

Целью создания APL была разработка компактной системы записи (нотации) для описания алгоритмов прикладной математики. В изобретенной Айверсоном оригинальной нотации присутствует множество специфических соглашений и символов (кроме обычных знаков, в алфавите содержится 58 специфических, например, «сапог», «шапка», «посох», «дно» и т.д., и лигатуры -- знаки, которые возникают при наложении друг на друга двух простых символов). Все это предназначено для точной и сжатой формулировки алгоритмов, которые затем можно интерпретировать на различные языки программирования. Таким образом, APL создавался не только как язык программирования, но в первую очередь как язык передачи идей. Первые реализации APL как языка программирования были созданы гораздо позже, чем его первые описания и использования для описаний других систем.

Основные особенности APL:

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

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

ориентированность на работу с массивами.

максимальная нагруженность смыслом всех функций и операторов: все они доступны в множестве вариантов функциональности в зависимости от количества и размерности аргументов (один аргумент или два, скаляры они или массивы и т.д.).

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

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

высокий уровень абстрактности.

сложность написания и еще большая сложность чтения кода.

APL предоставляет программисту богатый набор функций -- средств обработки данных и их преобразования в другие данные. Использование функций в выражениях подчиняется простому правилу приоритета: правым аргументом бинарной функции (или единственным аргументом унарной) всегда является выражение справа от нее целиком. Приоритет можно контролировать в явном виде при помощи скобок, но чаще всего это не нужно. Это правило упрощает анализ иерархической структуры выражений: функции верхнего уровня всегда находятся слева в строке.

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

Одна команда программы на APL выглядит как последовательность функций и операторов, применяющихся к массивам. В языке есть примитивные типы данных (скаляры) -- числа и символы (логические значения моделируются числами 0 для false и 1 для true -- прием, впервые примененный в APL). Все структуры данных в языке -- массивы: одномерные векторы, двухмерные матрицы и многомерные мультитаблицы. Все функции изначально ориентированы на работу с массивами, хотя и могут применяться к скалярам (с разным эффектом в зависимости от размерности аргументов). Развитая система операций над массивами позволяет во многих случаях избежать использования явных команд управления потоком выполнения программы. Во многих реализациях императивных управляющих структур нет вообще, хотя последние реализации склоняются к их добавлению и использованию для того, чтобы подчеркнуть разделение структур данных и управляющих конструкций.

Для реализации разнородных структур данных используется принцип boxing: любой массив может “заключаться в коробку” и рассматриваться как скаляр. В таком представлении над ним нельзя производить операции, зато его можно включать (вкладывать) в другие массивы. Содержимое такого массива становится доступным после его “извлечения из коробки”. Эта же техника используется для передачи в функции трех и более аргументов (все функции APL могут принимать от 0 до 2 аргументов, включительно).


Подобные документы

  • Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.

    курсовая работа [2,6 M], добавлен 17.11.2014

  • Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.

    курсовая работа [275,9 K], добавлен 22.12.2011

  • Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.

    контрольная работа [60,1 K], добавлен 17.01.2011

  • Развитие и классификация языков программирования. Методические рекомендации по изучению языков программирования. Основные понятия объектно-ориентированного программирования. Создание электронного учебного пособия с помощью языка гипертекстовой разметки.

    курсовая работа [331,1 K], добавлен 06.09.2011

  • Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.

    курсовая работа [759,5 K], добавлен 04.11.2014

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

    презентация [873,4 K], добавлен 23.01.2013

  • Обзор основных используемых языков программирования (С++, Java, Pascal). Анализ существующих методов шифрования паролей. Основные понятия объектно-ориентированного программирования. Реализация приложения для генерирования паролей на языке Object Pascal.

    курсовая работа [822,4 K], добавлен 07.07.2012

  • Основные этапы развития языков программирования. Характеристика машинно-ориентированной, проблемно-ориентированной и процедурно-ориентированной систем программирования. Ознакомление с системами программирования Delphi, Visual Basic и Visual C++.

    курсовая работа [102,4 K], добавлен 21.07.2012

  • Оценка современного этапа развития компьютерных технологий. История развития, классификации, сведения и уровни языков программирования. Обзор современных языков программирования: Си, его разовидности, Паскаль, Фортран, Бейсик - тенденция их развития.

    курсовая работа [46,5 K], добавлен 22.12.2010

  • Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.

    презентация [11,9 K], добавлен 23.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.