Файл: Классификация языков программирования высокого уровня (Основные определения для языков программирования).pdf
Добавлен: 29.03.2023
Просмотров: 565
Скачиваний: 2
СОДЕРЖАНИЕ
1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ: ОБЩИЕ СВЕДЕНИЯ
1.1 Основные определения для языков программирования
1.2 Основные элементы языков программирования
1.3 Операции и выражения для языков программирования на примере языка С++
1.4 Операторы управления в языках программирования на примере с++
2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
2.1 Парадигма языков программирования
2.2 Императивные языки программирования
2.3 Функциональные языки программирования
2.4 Логические (декларативные) языки программирования высокого уровня
2.5 Объектно-ориентированные языки программирования высокого уровня
2.6 Критерии оценки языков программирования
3. ХАРАКТЕРИСТИКА НАИБОЛЕЕ ИЗВЕСТНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
3.1 Характеристика императивных языков программирования
3.2 Характеристика объектно-ориентированных языков программирования
3.3 Характеристика функциональных языков программирования
Рассмотрим свойства, которыми должны в той или иной мере обладать языки программирования.
Понятность конструкций языка – это свойство, обеспечивающее лёгкость восприятия программ человеком. Данное свойство языка программирования зависит от выбора ключевых слов и такой нотации, которая позволяла бы при чтении текста программы легко выделять основные понятия каждой конкретной части программы, а также от возможности построения модульных программ. Высокая степень понятности конструкций языка программирования позволяет быстрее находить ошибки.
Под надёжностью понимается степень автоматического обнаружения ошибок, которое может быть выполнено транслятором. Надёжный язык позволяет выявлять большинство ошибок во время трансляции программы, а не во время её выполнения. Существует несколько способов проверки правильности выполнения программой своих функций: использование формальных методов верификации программ, проверка путём чтения текста программы, прогон программы с тестовыми наборами данных.
Гибкость языка программирования проявляется в том, сколько возможностей он предоставляет программисту для выражения всех операций, которые требуются в программе.
Простота языка обеспечивает лёгкость понимания семантики языковых конструкций и запоминания их синтаксиса. Простой язык предоставляет ясный, простой и единообразный набор понятий. При этом желательно иметь минимальное количество различных понятий с как можно более простыми и систематизированными правилами их комбинирования, т.е. язык должен обладать свойством концептуальной целостности.
Естественность. Язык должен содержать такие структуры данных, управляющие структуры и операции, а также иметь такой синтаксис, которые позволяли бы отражать в программе логические структуры, лежащие в основе реализуемого алгоритма.
Мобильность. Язык, независимый от аппаратуры, предоставляет возможность переносить программы с одной платформы на другую. На практике добиться мобильности довольно трудно, особенно в системах реального времени, в которых одна из задач проектирования языка заключается в максимальном использовании преимуществ базового машинного оборудования.
Суммарная стоимость использования языка программирования складывается из нескольких составляющих:
• стоимость обучения языку определяется степенью сложности языка;
• стоимость создания программы зависит от языка и системы программирования, выбранных для реализации конкретного приложения;
• стоимость трансляции программы тесно связана со стоимостью её выполнения. Совокупность методов, используемых транслятором для уменьшения объёма и/или сокращения времени выполнения оттранслированной программы, называется оптимизацией. Чем выше степень оптимизации, тем качественнее получается результирующая программа и сильнее уменьшается время её выполнения, но при этом возрастает стоимость трансляции;
• стоимость выполнения программы особенно существенна для программного обеспечения систем реального времени;
стоимость сопровождения программы включает в себя затраты на исправление дефектов и модификацию программы в связи с обновлением аппаратуры или расширением функциональных возможностей[14].
Вывод
Во второй главе данной работы, на основании изученных источников я решил поставленные задачи номер 3 и 4. Дал определения и привел примеры: объектно-ориентированным, декларативным, логическим и функциональным языкам программирования. Дал критерии оценки языков программирования высокого уровня.
Также я понял, что выбор языка программирования для написания кода, зависит от конкретно поставленной задачи и конкретных обстоятельств. В решении этого вопроса учитываются разные критерии языков: понятность, надежность, гибкость простота, стоимость.
3. ХАРАКТЕРИСТИКА НАИБОЛЕЕ ИЗВЕСТНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
3.1 Характеристика императивных языков программирования
Фортран (FORmula TRANslating system – система трансляции формул); старейший и сегодня активно используемый в решении задач математической ориентации язык. Является классическим языком для программирования на ЭВМ математических и инженерных задач.
Бейсик (Beginner's All-purpose Symbolic Instruction Code – универсальный символический код инструкций для начинающих); несмотря на многие недостатки и изобилие плохо совместимых версий – самый популярный по числу пользователей. Широко употребляется при написании простых программ.
Паскаль (Pascal – назван в честь ученого Блеза Паскаля); чрезвычайно популярен как при изучении программирования, так и среди профессионалов. Создан в начале 70-х годов швейцарским ученым Никлаусом Виртом. Язык Паскаль первоначально разрабатывался как учебный, и, действительно, сейчас он является одним из основных языков обучения программированию в школах и вузах. Однако качества его в совокупности оказались столь высоки, что им охотно пользуются и профессиональные программисты.
Не менее впечатляющей, в том числе и финансовой, удачи добился Филип Кан, француз, разработавший систему Турбо-Паскаль. Суть его идеи состояла в объединении последовательных этапов обработки программы – компиляции, редактирования связей, отладки и диагностики ошибок – в едином интерфейсе. Версии Турбо-Паскаля заполонили практически все образовательные учреждения, программистские центры и частные фирмы[15].
Ada и Ada- 95. В 1983 году под эгидой Министерства обороны США был создан язык Ada (в честь первой программистки Ады Лавлейс). Язык замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на отступ ОС (параллелизм, обработка исключений). В 1995 году был принят стандарт языка Ada-95, который развивает предыдущую версию, добавляя в нее объектно-ориентированность и исправляя некоторые неточности. Оба этих языка не получили широкого распространения вне военных и прочих крупномасштабных проектов (авиация, железнодорожные перевозки). Основной причиной является сложность освоения языка и достаточно громоздкий синтаксис[16].
Язык C был разработан в 1972 году Дэнисом Ритчи и Кеном Томпсоном из лаборатории AT&T Bell Telephone Laboratories. По стилю он похож на Algol и Pascal. Язык C — небольшой, но универсальный язык с ограниченным набором операторов и возможностей. Вместе с тем, органичный сплав простого синтаксиса и высокой эффективности вычислений принесли ему славу самого популярного языка системного программирования.
В конце шестидесятых лаборатория AT&T Bell Telephone Laboratories закончила совместный с MIT и General Electric проект по созданию операционной системы Multics, по итогам которого Кену Томпсону захотелось создать более удобную операционную систему. У него зародилась идея операционной системы UNIX, код которой Томпсон решил написать на языке высокого уровня. Он разработал новый язык под названием B, реализующий минимальные возможности для системного программирования. Компилятор B помещался в 8-килобайтную память компьютера. Конечно, сейчас трудно представить, насколько существенным фактором было ограничение емкости памяти всего 40 лет назад.
В 1970 году для проекта UNIX был приобретен компьютер PDP-11 с его огромной памятью в 24 Кбайт. В это время сторонникам UNIX стали мешать ограничения языка B, поэтому были добавлены такие понятия, как типы, определения структур и дополнительные операторы. Новому языку дали новое имя — C.
В семидесятые годы языком C интересовались лишь университеты, использующие операционную систему UNIX. В восьмидесятые годы стали появляться коммерческие версии этой системы. Благодаря языку C популярность UNIX непрерывно росла. В 1989 году увидел свет американский стандарт языка C, который был принят в качестве международного стандарта (ISO/IEC 9899) в 1990 году.
В настоящее время огромное число программистов применяют язык C. Вместе с языками C++ и Java, которые создавались на его основе, он оказывает существенное влияние на стиль программирования. Синтаксис и семантика большинства новых языков ( Java, Perl, C#) основаны на понятиях, характерных для языка C[17].
3.2 Характеристика объектно-ориентированных языков программирования
Си++ (С++); объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко повысить производительность программистов, наложилось на унаследованную от языка Си определенную низкоуровневость.
Дельфи (Delphi); язык объектно-ориентированного «визуального» программирования; в данный момент чрезвычайно популярен. Созданный на базе языка Паскаль специалистами фирмы Borland язык Delphi, обладая мощностью и гибкостью языков Си и Си++, превосходит их по удобству и простоте интерфейса при разработке приложений, обеспечивающих взаимодействие с базами данных и поддержку различного рода работ в рамках корпоративных сетей и сети Интернет.
Ява (Java); платформенно-независимый язык объектно-
ориентированного программирования, чрезвычайно эффективен для создания интерактивных веб-страниц. Этот язык был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей.
C# (произносится си шарп) – объектно-ориентированный язык программирования. Разработан в 1998–2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft.NET Framework и впоследствии был стандартизирован как ECMA22334 и ISO/IEC 23270. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java.
С тех пор язык сильно вырос в плане популярности и стал чуть ли не самым предпочитаемым языком среди разработчиков Windows и Web-приложений, которые используют .NET Framework. Отчасти привлекательность языка С# связана с его понятным синтаксисом, который происходит от синтаксиса C/C++, но упрощает некоторые вещи. Несмотря на это упрощение, язык С# обладает той же мощью, что и C++[18].
3.3 Характеристика функциональных языков программирования
Язык LISP был разработан группой исследователей под руководством Джона Маккарти из Массачусетского технологического института (МТИ) в 1960 году. Этот язык широко использовался для научных исследований в области естественных языков, доказательства теорем, задач искусственного интеллекта. За полвека создано большое количество версий языка LISP [64, 75].
Наиболее удивительная черта LISP — это эквивалентность форм представления в языке программ и данных, что позволяет выполнять структуры данных как программы и изменять программы как данные. Другая характерная особенность: в качестве структуры управления применяется рекурсия, а не итерация (цикл), как в императивных языках. В большинстве программ на LISP широко используются рекурсивные вызовы функций.
С самого начала LISP подвергался критике за медленность вычислений на стандартном компьютере фон Неймана.
Программы на LISP выполняются в диалоговой среде. Поэтому не существует главной программы в традиционном понимании. Вместо этого пользователь вводит последовательность выражений, которые требуется вычислить. Система LISP вычисляет выражения по мере их ввода и автоматически выводит результаты на экран монитора. Некоторые введенные выражения являются определениями функций. Другие выражения содержат обращения к этим функциям с указанием конкретных значений аргументов. В LISP не существует блочной структуры или других сложных структур. Единственной формой взаимодействия между функциями считается обращение к одной функции из другой во время выполнения программы[19].