Файл: Обзор языков программирования высокого уровня (Язык программирования Pascal).pdf
Добавлен: 22.04.2023
Просмотров: 74
Скачиваний: 1
Введение
Объектом исследования данной курсовой работы являются языки программирования высокого уровня.
Предметами исследования являются понятие языка программирования высокого уровня, а также конкретные языки программирования такие как C, C++, Java, Python, Pascal.
Цель исследования — Провести обзор понятия языка программирования высокого уровня. Провести обзор конкретных языков программирования, их синтаксиса, особенностей.
Актуальность данной работы
На сегодняшний день тяжело представить себе специалиста в области информационных технологий, не умеющего использовать язык программирования. Для разработки пользовательских приложений, систем управления и серверных программ используются различные языки программирования. Из-за большого количества различных систем используются машинно-независимые независимые языки программирования, также известные как языки программирования высокого уровня. Таким образом, обзор языков программирования высокого уровня позволит начинающему программисту узнать их особенности, и, вероятно, поможет с выбором основного языка программирования, на котором он будет писать в будущем.
Задачи исследования
1. Определения языка программирования, языка программирования высокого уровня; отличия языков программирования высокого уровня от остальных языков программирования; разновидности языков программирования высокого уровня.
2. Определения синтаксиса и семантики языка программирования; виды переменных, программных операторов, а также ключевые слова.
3. Обзор следующих языков программирования высокого уровня: C, C++ Java, Python, Pascal.
4. Написание простой консольной программы, которая запрашивает имя пользователя, его возраст, и, в зависимости от возраста, делает предположение о том, учится ли пользователь в школе. Варианты программы должны быть написаны на всех предложенных для обзора языках. (C, C++, Java, Python, Pascal )
Для разработки программ были использованы следующие средства.
ПЭВМ под управление операционной системы Linux Ubuntu 18.04 версия ядра 4.15.0-47-generic
Характеристики ПЭВМ: 16 ГБ ОЗУ, процессор AMD RYZEN 1600 6 cores/12 threads @ 3600 MGHz
Для написания исходных кодов был использован редактор Vim версии 8.0
Для компиляции программ на C был использован компилятор gcc версии 7.3.0
Для компиляции программ на C++ был использован компилятор g++ версии 7.3.0
Для компиляции программ на Java был использован компилятор javac версии 10.0.2. Для запуска был использован интерпретатор java версии 10.0.2
Для запуска программы на языке Python был использован интерпритатор Python версии 3.6.7
Для компиляции программ на Pascal был использован компилятор Free Pascal Compiler версии 3.0.4
Глава 1 Разновидности языков программирования
Язык программирования — Формализованный язык, предназначенный для описания программ и алгоритмов решения задач на ЭВМ. Языки программирования являются искусственными; в них синтаксис и семантика строго определены, поэтому они не допускают свободного толкования выражения, что характерно для естественного языка. Языки программирования разделяются на две основные категории языки высокого уровня и языки низкого уровня: [1]
Язык высокого уровня — язык программирования, средства которого обеспечивают описание задачи в наглядном, легко воспринимаемом виде, удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ любого типа, поэтому программы, написанные на языках высокого уровня, требуют перевода в машинные коды программами транслятора либо интерпретатора. К языкам высокого уровня относят Фортран, ПЛ/1, Бейсик, Паскаль, Си, Ада и др.; [1]
Язык низкого уровня — язык программирования, предназначенный для определенного типа ЭВМ и отражающий его внутренний машинный код.
Таким образом, можно сделать вывод о том, что основное отличие языка высокого уровня от языка низкого уровня заключается в зависимости от ЭВМ, на котором пишется программа. [1]
Так, исходя из определения, мы можем сделать вывод, что язык программирования ассемблер является языком программирования низкого уровня, так как программный код зависит от архитектуры процессора, на котором пишется программа. Так, например, программа, написанная для архитектуры IA32 и программа для IA64 будет отличаться довольно сильно. [3]
Язык программирования Си же в свою очередь является языком программирования высокого уровня, так как его код является архитектурно-независимым, и одна и та же программа, написанная на языке программирования Си будет успешно запускаться на ЭВМ с различной архитектурой процессоров. (Естественно, программа должна быть предварительно скомпилирована с помощью своих компиляторов для каждой архитектуры)
Также языки программирования могут быть разделены по парадигмам программирования, естественным в использовании для данного языка, на Императивный, Декларативный, Функциональный, и Объектно-ориентированный.
Императивный язык программирования — язык программирования, который позволяет в явной форме (при помощи задания выполняемых операторов) определять действия и порядок (последовательность) их выполнения. [1]
Декларативный язык программирования — язык программирования, который позволяет задавать связи и отношения между объектами и величинами, но не определяет последовательность выполнения действий. [1]
Функциональный язык программирования — декларативный язык программирования, основанный на понятии функций, которые задают зависимость, но не определяют порядок вычислений. [1]
Объектно-ориентированный язык программирования - язык описания программы поведением совокупности взаимосвязанных объектов. [2]
Исходя из этих определений, можно заметить, что множество языков являются мультипарадигмальными, а также то, что в целом парадигма программирования выбирается программистом, который пишет на языке. (Естественно, язык программирования должен иметь конструктивную возможность соответствовать данной парадигме)
И даже тут могут быть исключения, например, язык программирования Си, на котором можно работать в соответствии с принципами объектно-ориентированного программирования, несмотря на то, что он не разрабатывался с такой целью.
В определении языка высокого уровня есть уточнение, утверждающее, что языки программирования высокого уровня должны быть переведены в машинные коды для выполнения программы на ЭВМ.
Исходный код может быть переведен в машинные коды с помощью компиляторов и интерпретаторов. Таким образом мы получаем естественное разделение языков программирования на компилируемые и интерпретируемыми.
Процесс компиляции исходного кода обычно состоит из нескольких этапов.
Первый этап заключается в том, что компилятор считывает исходный код и преобразует его в специальный ассемблерный код, попутно проводя оптимизации.
Следующий этап — это перевод ассемблерного кода в специальный машинный код, также называемый объектным кодом. На данном этапе программа уже может быть выполнена, однако обычно при написании программ используются различные библиотеки. Исполняемый код таких библиотек находится в таких же объектных файлах, поэтому чтобы использовать библиотечные функции, необходимо также включить этот объектный код в основной файл.
Последний этап компановка (линковка) Специальная программа упаковщик склеивает объектный код, полученный из нашего исходного кода с объектным кодом, содержащим в себе реализацию библиотечных функций. В итоге получается полностью готовый исполняемый файл, содержащий в себе все необходимые компоненты для запуска.
Стоит отметить, что хоть исходный код и является архитектурно-независимым, скомпилированный на определенной системе код может быть запущен только на такой же, и не является архитектурно-независимым.
Но даже тут есть исключения. Например, язык программирования Java использует интерпретатор JVM (Java Virtual Machine) для исполнения своего кода. Однако, также Java использует компиляцию исходного кода в специальный файл jar (java runtime), который является своего рода машинными кодами для интерпретатора JVM. [6]
Семантика и синтаксис языков программирования
Синтаксис языка - совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму. [9]
Семантика языка - совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содержание. [9]
Эти два понятия в полной мере описывают то, каким образом должны быть написаны исходные коды для конкретных языков программирования.
Согласно определению, синтаксис языка определяет все допустимые символы и их сочетания, которые могут быть использованы для написания исходного кода программ.
Например, для языка программирования Си мы знаем, что имена переменных могут быть составлены из цифр, букв разного регистра, а также символа нижнего подчеркивания «_», при этом первым символом могут быть только буквы и символ «_».
Также именно синтаксис определяет операторы сравнения, такие как «==», «!=», «>=» и другие. В том числе синтаксис определяет ключевые слова языка, такие как for, while, return. [4]
С другой стороны, семантика определяет смысл конструкций языка, то есть она определяет значение совокупности имен и ключевых слов. Иными словами, семантика определяет, что должна сделать определенная последовательность имен, операторов и ключевых слов.
Например, именно благодаря семантике мы понимаем, что следующий код приведет к выполнению внутреннего участка кода в цикле 10 раз:
for (int i=0; i<10; i++) {
// Внутренний код в цикле
}
Операторы, виды переменных, ключевые слова
Для программирования процесса выполнения программы используются специальные конструкции из слов языка программирования.
Так, для хранения значений используются переменные — именованные участки памяти, в которых во время выполнения хранятся такие значения, как буквы, строки, числа.
Операторы позволяют преобразовывать переменные и числа различными способами. Таким образом, числа могут быть сложены, перемножены, может быть выполнена операция побитового «ИЛИ» и другие.
Ключевые слова же в свою очередь позволяю контролировать порядок выполнения кода. Встречаются ключевые слова, которые обеспечивают переход к другому участку кода (goto), исполнение определенного кода по определенному условию (if), повторение кода в цикле (for, while), и множество других. [9]
Для различных языков программирования могут быть разные правила по тому, какими могут быть переменные. Бывает строго типизированные языки и слабо типизированные языки программирования. Также, в языке может быть определена область, в которой должны быть указаны все переменные, которые необходимо использовать.
Например, в языке Pascal, все переменные должны быть заданы в начале функции или процедуры, должен быть указан тип для каждой переменной. [8]
В языке Python переменные можно указывать где угодно в теле блока кода, также не нужно указывать тип данных — интерпретатор Python автоматически определит тип переменной. [7]
Глава 2 Язык программирования C
C — многоцелевой язык программирования высокого уровня, разработанный Денисом Ритчи в начале 1970-х гг. на базе языка BCPL. Используется на миниЭВМ и ПЭВМ. Является базовым языком операционной системы Unix, однако применяется и вне этой системы, для написания быстродействующих и эффективных программных продуктов, включая и операционные системы. Для IBM PC имеется ряд популярных версий языка Си, в том числе Turbo C (фирмы Borland), Microsoft C и Quick C (фирмы Microsoft), а также Zortech C (фирмы Symantec). Многие из указанных версий обеспечивают также работус Си++. [1]
Язык C является функциональным, компилируемым языком программирования со строгой типизацией.
Язык использует препроцессинг, который используя специальные ключевые слова изменяет текст программы перед компиляцией. Ключевые слова такие, как #define, #include, #ifdef, #ifndef.
В частности, с помощью директивы #include принято включать в исходный код программы заголовочные файлы, которые содержат определения различных библиотечных функций. Код, который реализует эти функции добавляется в исполняемый текст программы позже, на этапе линковки.
В языке С основными типами данных являются int — целое число, float — число с плавающей точкой, double — число с плавающей точкой, с двойной точностью, char — символ таблицы ASCII и bool — логический тип данных, который может содержать данные вида true или false. [4]