Файл: Современные языки программирования (1. Основы программирования).pdf

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

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

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

Добавлен: 04.07.2023

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

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

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

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

1.2. Классификации языков программирования

Существуют сотни различных классификаций языков программирования. Однако к основным классификационным признакам следует отнести следующие: степень зависимости как от аппаратных средств, принципы программирования и ориентация на класс задач (рис. 2) [7].

Языки

программирования

машинно-ориентированные

(Ассемблер, внутренний язык ЭВМ)

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

проблемно-ориентированные,

предназначены для решения

определенного класса задач

(моделирования, экономические

и т.д.)

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

(С, Бейсик и Паскаль)

Языки

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

Языки

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

Рис. 2. Классификация языков программирования

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

Универсальные языки предназначены для решения широкого класса задач. До этих языков относят Pascal, С, C ++ и другие. Особым классом универсальных языков являются языки, реализованные в визуальных средах программирования (Visual Basic, Delphi и другие) [14].

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

По принципам программирования различают процедурные, непроцедурные языки и языки объектно-ориентированного программирования.

Процедурные языки построены на описании последовательной смены состояния компьютера, то есть значения ячеек памяти, состояния процессора и других устройств. Они манипулируют данным в пошаговом режиме, используя последовательное выполнение инструкций. В процедурных языках придерживаются четкой структуризации программ, поэтому их еще называют языки структурного программирования. Примерами таких языков является Алгол, Pascal, первые версии языка Basic [15].


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

Существует несколько парадигм (ключевых подходов), которые управляют конструированием программ. Первый подход считает программу моделью, ориентированной на процесс (process-oriented model). При этом программу определяют последовательности операторов ее кода.

Первые компиляторы (например, FORTRAN) поддерживали процедурную модель программирования, в основе которой лежит использование функций. Следующий этап развития связан с переходом к структурной модели программирования (к ней относятся компиляторы ALGOL, Pascal, C), в основе которого лежат следующие положения: программы представляются в виде совокупности взаимосвязанных процедур и данных, которыми эти процедуры (или блоки) оперируют. Здесь широко используются процедурные блоки и минимальное использование GOTO. Эти программы являются более простые. Такие языки программирования, как Pascal, C успешно используют эту модель. Но здесь часто возникают проблемы, когда растет размер и сложность программ. [2]

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

1. Можно повторно использовать код программы и таким образом экономить время на разработку;

2. Программы с использованием ООП хорошо структурированы, что позволяет хорошо понимать, какие функции выполняют отдельные подпрограммы;

3. Программы с использованием ООП легко тестировать и модифицировать. Можно разбить программу на компоненты и тестировать работу каждой из них. [1]

В современном программировании существует несколько подходов к программированию: структурное (детальное), модульное и объектно-ориентированное программирование.

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


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

Модульное программирование использует методологию, ориентированную на обработку. Его основные признаки:

- Каждый модуль реализует одну и только одну независимую функцию;

- Каждый модуль имеет единственную точку ввода-вывода;

- Размер модуля нужно минимизировать;

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

- Вся программа состоит из протестированных модулей и поэтому легко проверяется. [4]

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

Методологии разработки программ, ориентированные на данные, относят к объектно-ориентированному программированию (ООП) и проектированию концептуальных баз данных.

Существует классификация, по которой языки и системы программирования по типам их парадигмы распределяют [3] на четыре разновидности:

  1. Директивные (directive), процедурные (procedural) или императивные (imperative);
  2. Структурные;
  3. Декларативные (declarative);
  4. Объектно-ориентированные (object-oriented).

2. Классификация языков программирования высокого уровня

2.1. Особенности языков программирования высокого уровня

Примерно в 50-е годы XX века появились языки программирования так называемого «высокого уровня» (high-level programming language).

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


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

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

Разработать программу - значит описать алгоритм на соответствующем языке программирования.

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

Язык программирования высокого уровня и система программирования играют роль посредника между человеком и компьютером [15].

Обязательные компоненты любого языка программирования высокого уровня:

- алфавит (аналогично алфавита обычной человеческой речи);

- символы арифметических и логических операций и некоторые специальные знаки;

- набор так называемых ключевых слов, которые нельзя изменять (например, begin, end, var, for)

- идентификаторы - комбинации символов для обозначения переменных, функций, файлов и других объектов (примеры: alfa, n32, sun_2, аи) [9].

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

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

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

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


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

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

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

Для создания программы используется среда программирования, обязательными компонентами которого являются:

- текстовый редактор для ввода и редактирования программ;

- редактор связей;

- транслятор (компилятор или интерпретатор).

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

Языки программирования высокого уровня делятся на определенные группы: процедурно-ориентированные языки, проблемно-ориентированные, объектно-ориентированные.

2.2. Процедурно-ориентированные языки программирования

Процедурно-ориентированные языки программирования начали появляться в 50 годах ХХ ст. Первый язык высокого уровня Фортран (FORTRAN - FORmula TRANslator) был создан в 1954 году.

Размер программ постоянно увеличивался, поэтому программисты начали объединять отдельные их части в подпрограммы, которые группировали в библиотеки. Библиотеки подключались к основной рабочей программе, которая при необходимости вызывала нужную подпрограмму. Фактически такой подход увеличил структурность программ - большая программа стала совокупностью процедур-подпрограмм. Одна подпрограмма, главная, начинала работу всей программы. То есть произошел переход к следующему этапу развития технологий - процедурного программирования. Процедурно–ориентированные языки, предназначенные для записи процедур или алгоритмов обработки информации для каждого определенного круга задач [11].