Файл: Классификация языков программирования . Критерии выбора среды и языка разработки программ.pdf
Добавлен: 04.04.2023
Просмотров: 65
Скачиваний: 1
ВВЕДЕНИЕ
Актуальность курсового исследования. Эволюционное развитие компьютерных технологий обусловило появление новых разноплановых знаковых систем для записи алгоритмов, именуемых языками программирования.
За полувековой период существования программирования и информационных технологий создано несколько тысяч компьютерных языков и с каждым годом их число растет. Отдельные языки задействуются непосредственно только самими разработчиками, другие применяются миллионами людей по всему миру. Сфера деятельности профессионального программиста может предполагать владение десятком и более разных языков программирования.
Виртуальный мир компьютерных языков охватывает языки программирования, спецификаций, моделирования и другие языки. В каждой из этих ветвей можно отметить разные подходы (например, императивный, декларативный, объектно-ориентированный), дисциплины обработки (например, последовательная, недетерминированная, распределенная) и формализованных моделей (от машин Тьюринга до машин логического вывода). Вследствие этого проблема классификации компьютерных языков становится актуальной.
Традиционные языки программирования рассчитаны преимущественно на создание автономных приложений: программ, которые принимают входные данные, обрабатывают их определенным образом и генерируют соответствующие результаты. Вместе с тем в большинстве компьютерных приложений необходима согласованная работа множества программ.
Цель курсового исследования – изучить классификацию языков программирования и критерии выбора среды и языка разработки программ.
Объектом исследования выступают языки программирования.
Предметом исследования являются критерии выбора среды и языка разработки программ.
Для реализации поставленной цели необходимо было решить следующие задачи исследования:
1. Провести теоретический анализ научной литературы по проблеме исследования.
2. Рассмотреть сущность и понятие языка программирования.
3. Изучить классификацию языков программирования.
4. Выявить критерии выбора среды и языка разработки программ.
Для решения поставленных задач были использованы следующие методы: теоретический анализ и обобщение литературных источников и публицистических материалов по проблеме исследования.
Теоретической основой исследования послужили труды отечественных и зарубежных авторов, посвященные проблемам классификации языков программирования и выбора среды и языка разработки программ: И.Ю. Баженовой, И.Г. Головина, И.А. Волковой, И.В. Черпакова, С.А. Орлова, М. Бен-Ари, Б. Керниган, Д. Ритчи, Т. Пратт, М. Зелковиц и др.
Научные труды, которые мы использовали в данном исследовании, представляют собой работы по упорядочению и систематизации множества языков программирования. Научные и публицистические материалы, к которым мы обращались в ходе курсового исследования, также связанны с выбором среды и языка разработки программ. Большинство работ, в основном, имеют прикладной характер.
Например, в книге С.А. Орлова «Теория и практика языков программирования» вводятся определения языка с трех точек зрения: семиотической, практической и технологической, что способствует формированию необходимой панорамы представления о таком сложном объекте изучения, как язык программирования. Кроме того, в книге описываются формы и содержание критериев для оценки эффективности языков и рассматриваются способы построения этих критериев.
Учебник И.В. Черпакова «Основы программирования» содержит необходимый теоретический и практический материал, а также примеры, поясняющие понятия, связанные с задачами исследования.
Надежность литературных источников, использованных в данной курсовой работе, обусловлена тем, что они выпущены серьезным издательствами или вузами.
В случае использования публицистических материалов, их надежность объясняется тем, что они опубликованы в типовых научных журналах.
Структура работы. Работа состоит из введения, двух глав, заключения и списка использованных источников.
1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ
1.1. Сущность и понятие языка программирования
М. Бен-Ари характеризует язык программирования как набор правил, определяющих, какие последовательности символов составляют программу и какое вычисление описывает программа [2, с. 16].
Автор также трактует язык программирования как механизм абстрагирования. Он дает возможность программисту описать вычисления абстрактно и в то же время позволяет программе (обычно называемой ассемблером, компилятором или интерпретатором) перевести это описание в детализированную форму, необходимую для выполнения на компьютере [2, с. 17].
С точки зрения И.В. Черпакова, язык программирования – это формализованный язык, на котором описываются алгоритмы решения задач [25, с. 38].
Любой язык программирования характеризуется алфавитом, синтаксисом и семантикой. Алфавит – разрешенный к использованию набор символов, с помощью которого могут быть образованы слова и величины данного языка. Синтаксис – система правил, определяющих допустимые конструкции языка программирования из символов алфавита. Семантика – система правил использования и однозначного толкования каждой языковой конструкции, для которой дано синтаксическое определение [22, с. 18].
Исходное определение языка программирования (далее – ЯП) – это знаковая система для планирования поведения компьютера .
Знаковая система – это совокупность соглашений, определяющих набор знаковых ситуаций. Знаковая ситуация – первичное понятие семиотики, ее элементами являются знак и денотат (рисунок 1) [22, с. 24].
Знаковая система
знаковая ситуация 1
<знак1, денотат1>
знаковая ситуация N
<знакn, денотатn>
...
Рисунок 1. Структура знаковой системы
Источник: Орлов С.А. Теория и практика языков программирования: Учебник. – СПб.: Питер, 2014. – C. 24
Знак – это обозначение или имя, денотат – значение, смысл. Примеры знаков и денотатов приведены в таблице 1.
Таблица 1
Знаки и денотаты
Знак |
Денотат |
Сообщение |
Смысл |
Буква |
Звук |
Слово |
Понятие |
Sqrt |
Вычисление квадратного корня |
lf-then-else |
Разветвление вычислений |
Источник: Орлов С.А. Теория и практика языков программирования: Учебник. – СПб.: Питер, 2014. – С. 25.
Опираясь на данные понятия, С.А. Орлов предлагает модифицированную формулировку языка программирования как правила образования знаков (синтаксис) и согласованные с ними правила образования денотатов (семантика) [22, с. 25].
В ЯП знаки – это элементы программ, а денотаты – характеристики поведения исполнителя (компьютера) [5, с. 21].
Практическое определение языка программирования заключется в том, что это средство общения между человеком (пользователем) и компьютером (исполнителем) [22, с. 25].
С помощью ЯП формируются сообщения для компьютера. Эти сообщения должны быть понятны компьютеру. Возможные ошибки разделяют на синтаксические, семантические и прагматические (рисунок 2) [22, с. 25].
Ошибки сообщений на языке программирования
синтаксические
прагматические
семантические
Рисунок 2. Классификация ошибок сообщений
Источник: Орлов С.А. Теория и практика языков программирования: Учебник. – СПб.: Питер, 2014. – C. 24
Синтаксические ошибки возникают, если автор сообщения подразумевает одну структуру сообщения, а получатель – другую. Устраняются легко. В ЯП таких ошибок не бывает, так как их создатели используют принцип синтаксической однозначности (правильный текст должен иметь единственную допустимую структуру).
Семантические ошибки связаны с искажением смысла элементов сообщения, а прагматические ошибки – с искажением цели (назначения) элемента или сообщения.
Прагматические ошибки – самые трудные. Их примеры: часы хорошие-плохие, выяснение смысла программы без знания ее назначения [8, с. 20].
Для исключения ошибок необходимо, чтобы отправитель и адресат пользовались [24, с. 18]:
- oдинаковыми правилами разложения сообщения на составляющие (предмет синтаксиса);
- cогласованными правилами, придающими сообщению смысл (предмет семантики);
- cогласованными целевыми установками (предмет прагматики).
Технологическое определение состоит в том, что язык программирования – инструмент для производства программных услуг [20, с. 25].
Программирование нацелено на обслуживание пользователя. Принцип хорошего обслуживания: «Клиент всегда прав». Это означает, что программы должны быть дружественными к пользователю.
Программы должны быть:
- надежными (содержать мало ошибок);
- устойчивыми (сохранять работоспособность в неблагоприятных условиях эксплуатации, ограниченности ресурсов, перегрузок, ошибок пользователя, сбоев и отказов аппаратуры);
- заботливыми (должны уметь объяснять свои действия и ошибки пользователя).
С.А. Орлов сформулировал технологический критерий качества ЯП: язык тем лучше, чем проще производство (на его основе) программных услуг [20, с. 26].
Перевод программы на некотором языке программирования в эквивалентную ей систему команд, пригодную для исполнения, выполняют специальные программы – трансляторы. Сам процесс перевода называется трансляцией программы. Алгоритм, записанный на языке программирования, подлежащем трансляции, называется исходным кодом программы [12, с. 26].
Выделяют два вида трансляторов: интерпретаторы и компиляторы. Соответствующие операции перевода исходного текста программы в эквивалентную исполняемую форму носят название интерпретации и компиляции соответственно [26, с. 24].
Интерпретатор последовательно просматривает инструкции исходного кода программы, производит их анализ на наличие ошибок, определяет операции, необходимые для выполнения текущей инструкции, исполняет эти операции.
Во время интерпретации можно интерактивно контролировать процесс исполнения программы, например, просматривать содержимое ячеек памяти, изменять значения переменных. В то же время скорость исполнения программы при интерпретации не очень высока, поскольку каждая команда анализируется заново. Это становится существенным, например, при наличии большого количества циклических конструкций. Еще одним минусом интерпретации является то, что для каждого исполнения программы требуется наличие интерпретатора [26, с. 24].
Компилятор полностью обрабатывает исходный код программы, выполняя анализ на наличие ошибок с помощью специальной программы – отладчика. Если текст программы соответствует синтаксису языка, то происходит трансляция исходного кода в низкоуровневый машинный язык, называемый также объектным кодом [26, с. 24].
Для того чтобы получить независимую от транслятора программу, способную работать в конкретной операционной системе, объектный код связывается с процедурами и функциями, реализованными в конкретной операционной системе. Этот процесс выполняется специальной программой – редактором связей. В результате компиляции формируется независимый от языка программирования и способный выполняться самостоятельно исполняемый файл. В операционных системах семейства Windows он обычно имеет расширение .ехе.
Программа, получаемая в результате компиляции, выполняется быстрее, чем при интерпретации. В то же время для создания независимой от языка программы требуется наличие своего компилятора для каждой операционной системы и аппаратной платформы [19, с. 51].
Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений. В период 1960-х - 1970-х гг. были разработаны основные парадигмы языков программирования, используемые в настоящее время, хотя во многих аспектах этот процесс представлял собой улучшение идей и концепций, заложенных еще в первых языках третьего поколения [4, с. 64]:
- язык APL оказал влияние на функциональное программирование и стал первым языком, поддерживавшим обработку массивов;
- язык ПЛ/1 (NPL) был разработан в 1960-х гг. как объединение лучших черт Фортрана и Кобола;
- язык Симула, появившийся примерно в это же время, впервые включал поддержку объектно-ориентированного программирования;