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

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

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

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

Добавлен: 28.03.2023

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

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

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

Введение

В 21-ом веке практически невозможно прожить без информационных технологий, данная сфера одна из самых быстро растущих и постоянно развивающихся во всем мире. Мы окружены вещами и устройствами, которые запрограммированы для того, чтобы сделать нашу жизнь легче, быстрее и удобнее. И языки программирования – один из важнейших инструментов для работы специалистов по созданию, поддержанию и развитию всех этих систем. Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования и каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

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

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

Предметом исследования является история и эволюция языков программирования.

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

Задачи исследования:

  1. Раскрыть основные понятия по теме языков программирования;
  2. Проследить путь развития языков программирования;
  3. Рассмотреть особенности и классификацию языков программирования;
  4. Выявить особенности современных языков программирования;
  5. Исследовать дальнейшие перспективы развития языков программирования.

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

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


Глава 1. История и эволюция языков программирования

1.1. Основные понятия и определения

Язык вообще - определенный способ сопоставления объектам Ri, которые рассматриваются как некоторая первичная реальность, объектов Li, называемых именами Ri и рассматриваемых как нечто вторичное, специально созданное для сопоставления объектам Ri [9]. По отношению к своему имени Li объект Ri называют его значением. Совокупность всех объектов Li также часто называют языком.

Отметим две основные функции языка.

  • Коммуникативная функция. Это первая функция языка, поскольку он возникает как средство связи.
  • Моделирующая функция. Язык используется в качестве средства построения моделей действительности.

Интересное и образное определение языка принадлежит Тузову [8]. Язык – средство описания информационных процессов. Предложения языка и текст – застывшие формы процессов. Они превращаются в активный процесс во время выполнения его человеком или вычислительной машиной.

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

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

Также, как и в случае языка человеческого, призванного служить инструментом для взаимосвязи и коммуникации людей, у языков программирования есть свои задачи и функции. Важно понимать, что конечная цель программирования – не создание программ самих по себе, а предоставление программных услуг. Этот принцип означает, что программы должны быть «дружественными» по отношению к пользователю, в частности, надежными, робастными и «заботливыми». Первое означает, что в программе должно быть мало ошибок, второе – что она должна сохранять работоспособность в неблагополучных условиях эксплуатации, а третье – что она должна объяснять свои действия, а также ошибки пользователя [5].


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

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

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

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

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

1.2. Парадигмы языков программирования

Парадигма (от греч. παράδειγμα, «пример, модель, образец») – набор теорий, стандартов и методов, которые совместно представляют собой способ организации научного знания.

Парадигма программирования – это совокупность идей и понятий, определяющая стиль написания программ.

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

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


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

– Императивная;

– Функциональная;

– Декларативная;

– Объектно-ориентированная [17].

Императивные языки программирования – Бейсик, Паскаль, Си и прочие (включая объектно-ориентированные).

Императивное программирование наиболее популярное. Характеризуются последовательным, пошаговым изменением состояния вычислителя. При этом управление изменениями полностью определено и полностью контролируемо.

Одна из характерных черт императивного программирования – наличие переменных с операцией "разрушающего присвоения". То есть, была переменная А, было у нее значение Х. Алгоритм предписывает на очередном шаге присвоить переменной А значение Y. То значение, которое было у А, будет "навсегда забыто". Если задача описывается последовательным исполнением операций ("открыть кран, набрать воды"), то такие задачи идеальные кандидаты на императивную реализацию.

Функциональные языки программирования – LISP, ISWIM (If you See What I Mean), ML (Meta Language ), Miranda.

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

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

Декларативная модель – это парадигма программирования, в которых операторы представляют собой объявления или высказывания в символьной логике. Типичным примером таких языков являются языки логического программирования. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций [14].

Логические языки программирования – Prolog.

Объектно-ориентированные подход к программированию – это подход к разработке программного обеспечения, основанный на объектах, а не на процедурах (Java, С, Visual Basic).

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


1.3. История и поколения языков программирования

С глубокой древности известны попытки создать устройства, ускоряющие и облегчающие процесс вычислений. Еще древние греки и римляне применяли приспособление, подобное счетам, — абак. Такие устройства были известны и в странах Древнего Востока. В XVII в. немецкие ученые В. Шиккард (1623), Г. Лейбниц (1673) и французский ученый Б. Паскаль (1642) создали механические вычислительные устройства — предшественники всем известного арифмометра. Вычислительные машины совершенствовались в течение нескольких веков. Но при этом не применялось понятие «программа и программирование».

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

С 1970—1980-х гг. программирование как новая научная дисциплина занималась методами разработки программных продуктов. Оно включает комплекс вопросов, связанных с написанием спецификаций, проектированием, кодированием, тестированием и функционированием программ для ЭВМ.

К сегодняшнему дню насчитывают шесть поколений языков программирования. Каждое из последующих поколений по своей функциональной мощности качественно отличается от предыдущего [19].

  • Первое поколение: Машинные языки.

В первое поколение входят языки, созданные в начале 50-х годов, когда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу «одна инструкция — одна строка». ЯП первого поколения представляли собой набор машинных команд в двоичном (бинарном) или восьмеричном формате, который определялся архитектурой конкретной ЭВМ. Каждый тип ЭВМ имел свой ЯП, программы на котором были пригодны только для данного типа ЭВМ. От программиста при этом требовалось хорошее знание не только машинного языка, но и архитектуры ЭВМ.

  • Второе поколение: Ассемблеры. Расцвет второго поколения языков программирования пришелся на конец 50-х -начало 60-х годов. Тогда был разработан символический ассемблер, в котором появилось понятие переменной. Он стал первым полноценным языком программирования. Благодаря его возникновению заметно возросли скорость разработки и надежность программ. Языки ассемблерного типа (ассемблеры, макроассемблеры), позволили вместо двоичных и других форматов машинных команд использовать их символьные обозначения (имена). Являясь существенным шагом вперед, ассемблерные языки все еще оставались машинно-зависимыми, а программист все также должен был быть хорошо знаком с организацией и функционированием аппаратной среды конкретного типа ЭВМ. При этом ассемблерные программы все так же затруднительны для чтения, трудоемки при отладке и требуют больших усилий для переноса на другие типы ЭВМ. Однако и сейчас ассемблерные языки используются при необходимости разработки высокоэффективного программного обеспечения (минимального по объему и с максимальной производительностью).
  • Третье поколение: Процедурные языки. Появились в начале 60-х годов XX века. К этому поколению относят универсальные языки высокого уровня, с помощью которых можно решать задачи из любых областей (например, Algol-60). Третье поколение ЯП начинается с появления в 1956 г. первого языка высокого уровня — Fortran. Первоначально Fortran обладал весьма ограниченными средствами обеспечения работы с символьной информацией и с системой ввода-вывода. Однако постоянное развитие языка сделало его одним из самых распространенных ЯВУ.