Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Классификация языков программирования ).pdf

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

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

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

Добавлен: 02.04.2023

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

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

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

Введение

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

Классификация и виды языков программирования – это очень сложный, многообразный вопрос, который постоянно вызывает споры, требует регулярной переоценки и умения находить в различных языках объединяющие их характеристики и особенности. Сейчас существует огромное количество самых разных языков программирования. По некоторым подсчетам, всего их более чем 120. Некоторые из них очень распространены и популярны (C++, Java, Python), некоторые известны только узкому кругу специалистов и любителей экзотики (Groovy, Clojure, Boo)

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

Обзор источников

А. Ездаков «Функциональное и логическое программирование» (2016) Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с

В пособии рассмотрены основные аспекты функционального и логического программирования на примере использования языков Лисп и Турбо-Пролог.

Книга ориентирована на студентов, обучающихся по направлениям «Информатика и вычислительная техника» и «Прикладная математика и информатика».

Гедранович, В.В. Основы компьютерных информацион-

ных технологий: учеб.-метод. комплекс / В.В. Гедранович, Б.А. Гедранович,

И.Н. Тонкович. – 2-е изд., стереотип. – Минск: Изд-во МИУ, 2011 – 344 с.

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

Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2002. ~ 416 с:

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


А.А. Тюгашев. Основы программирования. Часть I. – СПб: Университет

ИТМО, 2016 – 160 с.

Учебное пособие содержит теоретический материал и лабораторный практикум для изучения дисциплины «Основы программирования».

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

Пратт Т., Зелковиц М.Языки программирования: разработка и реализация, Питер, 4-е издание, 2016 – 248 с.

В книге Т. Пратта и М. Зелковица "Языки программирования: разработка и реализация", авторы которой - известные американские специалисты в области языков программирования, приведены общие сведения о разработке и реализации языков программирования, основы формальных грамматик и конечных автоматов - тематических моделей, использующихся для определения и реализации языков программирования. Эта база нужна программисту высокой квалификации для создания производительных и устойчивых к ошибкам программ. Смысл изложения будут понятен пользователю, знакомому с процедурным и объектно-ориентированным языком. Данным изданием смогут воспользоваться студенты высших учебных заведений и программисты разной квалификации.

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

Цель исследования: Изучить классификацию языков программирования и критерии выбора среды и языка разработки программ

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

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

1.1 Обзор классификаций

Основные объекты языка программирования постоянны и напоминают компоненты человеческих языковых систем: синтаксис, определяющий формальные правила записи программы, допустимые виды и регистр символов; лексика, включающая в себя весь словарный запас языка: имена переменных и функций, константы, строки, операторы; грамматика, указывающая, как правильно сочетать единицы языка для образования словосочетаний и предложений [ Голицына, О.Л. Основы алгоритмизации и программирования: Учебное пособие / О.Л. Голицына, И.И. Попов. - М.: Форум; Издание 2-е, 2015. - 432 c].


Лексика и грамматика вместе определяют семантику языка. На этом уровне конкретные последовательности знаков приобретают особый смысл, понятный человеку и компьютеру. Например, слово while во многих системах программирования трактуется как начало циклической операции. Конечно, компьютеры не понимают обычных слов, само по себе сочетание латинских букв ничего для них не означает. Машины имеют дело с машинным кодом - нулями и единицами, описывающими примитивные состояния наличия или отсутствия сигнала. Поэтому языки программирования устанавливают четкие соответствия определенных слов и последовательностей нативных машинных команд [Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с: ].

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

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

Языки программирования могут быть сгруппированы по десяткам различных признаков. Они являются принципиально важными или имеют прикладное значение. Наблюдается сильная зависимость классификации языков программирования от истории развития. С годами технологии усложнялись и кардинально изменялись, на первый план выходило удобство программиста, появлялись эффективные алгоритмы, сложные команды и новые уровни абстракции [Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с: ].

Основные классификации языков программирования по видам и механизму работы базируются на следующих параметрах:

Особенности лексики и грамматики в совокупности с уровнем абстракции и степенью удобства для человека.

Базовая концепция и методология составления алгоритмов.

Способ представления данных.

Организация процесса взаимодействия с машиной, механизм исполнения программ.

Область жизни, в которой применяется язык.

Историческая эпоха, в которую языковая система была сформирована. Составить четкую классификацию языков и систем программирования нельзя, но возможно разделить и систематизировать их по принципиально важным признакам [Пратт Т., Зелковиц М.Языки программирования: разработка и реализация, Питер, 4-е издание, 2016 – 248 с.].


1.2 Удобство для человека

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

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

Низкий уровень. По-настоящему низкоуровневыми являются языки ассемблера, которые используют нативные машинные команды, закодированные с помощью мнемонических кодов [Вирт, Н. Алгоритмы и структуры данных / Н. Вирт. - М.: Мир, 2016. - 360 c].

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

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

.Сверхвысокий уровень. Эта немногочисленная группа характеризуется появлением сверхмощных команд и операторов. Сюда можно отнести Алгол-68. Особенностью языков низкого уровня является их машинозависимость. Они тесно привязаны к особенностям организации конкретного типа ЭВМ, но в целом похожи друг на друга. Они обеспечивают: высокую скорость выполнения и максимальную компактность создаваемых программ; прямое взаимодействие с аппаратными ресурсами; полный контроль над памятью [А.А. Тюгашев. Основы программирования. Часть I. – СПб]: Университет, ИТМО, 2016 – 160 с.].

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

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


1.3 Обработка программы машиной

Чтобы выполнить сложную инструкцию, компьютер прежде всего должен понизить ее абстрактность и перевести на понятный для себя язык. Способ, которым это делается, называется моделью исполнения. Выделяют две основных модели и одну гибридную: Компиляция - единовременный перевод всей программы в машинный код. Интерпретация - последовательное выполнение каждого выражения [Гедранович, В.В. Основы компьютерных информационных технологий: учеб.-метод. комплекс / В.В. Гедранович, Б.А. Гедранович,И.Н. Тонкович. – 2-е изд., стереотип. – Минск: Изд-во МИУ, 2016 – 344 с.].

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

Основные недостатки интерпретационной модели: постоянное нахождение транслятора в памяти ЭВМ; повторная обработка повторяющихся команд. Несмотря на это, интерпретируемые языки очень удобны для циклической разработки и отладки, так как позволяют быстро вносить изменения в программу [Бекишев, Г.А. Элементарное введение в геометрическое программирование / Г.А. Бекишев, М.И. Кратко. - М.: Наука. Главная редакция физико-математической литературы, 2017. - 144 c].

Компилятор же трудится только один раз, сразу преобразуя всю инструкцию в понятный для компьютера вид - машинный код или некий промежуточный байт-код, а затем покидает память ЭВМ. Здесь выполнение отделено от процесса трансляции, что является более эффективной моделью [Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с: ].

Основные недостатки компиляционной модели: большая сложность. Прежде чем перевести программу на понятный машине язык, транслятор много раз проходит по исходной инструкции, анализируя и проверяя ее. Четкого разграничения систем не существует, так как традиционно интерпретируемые языки могут быть скомпилированы и наоборот. Классификация языков программирования высокого уровня по модели исполнения: Интерпретируемые - Python, Haskell, PHP, JavaScript. Компилируемые сразу в машинный код: C, C++, Fortran, ASM. Компилируемые в байт-код: Python, Java. Транскомпилируемые: Haskell, Fortran, C, C++ [ Голицына, О.Л. Основы алгоритмизации и программирования: Учебное пособие / О.Л. Голицына, И.И. Попов. - М.: Форум; Издание 2-е, 2015. - 432 c].