Файл: Вариант 19. Обзор языков программирования высокого уровня.pdf

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

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

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

Добавлен: 25.04.2023

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

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

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

Язык машинного языка и язык ассемблера являются популярными примерами языков низкого уровня.

Машинный код — это единственный язык, который компьютер может обрабатывать напрямую без предварительного преобразования. В настоящее время программисты почти никогда не пишут программы непосредственно на машинном коде, потому что это требует внимания к многочисленным деталям, которые язык высокого уровня обрабатывает автоматически. Кроме того, он требует запоминания или поиска числовых кодов для каждой инструкции и его крайне трудно модифицировать. [4, 7, 9]

Истинный машинный код — это поток сырых, обычно двоичных, данных.

1.3 Высокоуровневые языки программирования

Языками программирования высокого уровня называют языки, которые ориентированы на человека, более близки и понятны ему. В таких языках не учитываются особенности компьютерных архитектур. Создаваемые программы на уровне исходных текстов средствами этих языков легко переносимы на другие платформы, имеющие транслятор соответствующего языка. Создание языков высокого уровня по времени совпадает с появлением языков программирования третьего поколения (60-е годы ХХ века). Это универсальные языки, с их помощью удается решать задачи из любых областей. Относительная простота, независимость от конкретного компьютера и возможность использования мощных синтаксических конструкций позволили резко повысить производительность труда программистов. К числу языков этого поколения относится Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Этот язык очень прост в изучении.

С начала 70-х годов ХХ века по настоящее время продолжается период языков четвертого поколения. Эти языки предназначены для реализации крупных проектов, повышения их надежности и скорости создания. Как правило, в эти языки встроены мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк исходного кода. К числу языков этого поколения относятся: Pascal (Паскаль), С (Си), C++ (Си++), Java (Джава, Ява).

Паскаль во многом напоминает Алгол (язык 3-го поколения), но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов.


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

Си++ - это объектно-ориентированное расширение языка Си. Он имеет множество мощных возможностей, позволяющих резко повысить производительность труда программистов. Однако этот язык требует от программистов высокого уровня профессиональной подготовки. [15]

Язык Java был создан в начале 90-х годов ХХ века компанией Sun на основе Си++.

В этом языке исключены все низкоуровневые возможности языка Си++. Главной особенностью языка Java является то, что компиляция происходит не в машинный код, а в платформа-независимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора виртуальной Java-машины (Java Virtual Machine), версии которой сегодня созданы для любых платформ. Благодаря этому программы на Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода. Поэтому по популярности этот язык сегодня занимает второе место в мире после Бейсика. Особое внимание в развитии языка Java уделяется двум направлениям:

1) поддержке мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini);

2) созданию платформа-независимых программных модулей, способных работать на серверах в глобальных и локальных компьютерных сетях с различными операционными системами (технология Java Beans).

В середине 90-х годов ХХ века появились языки пятого поколения. Это языки объектно-ориентированного программирования. К ним относятся системы автоматического создания прикладных программ с помощью визуальных средств разработки. В этом случае становится необязательным знание основ программирования. Главная идея, которая заложена в основу этих языков, - возможность автоматического формирования результирующего текста на универсальных языках программирования. Этот результирующий текст программы потом необходимо откомпилировать. [12, 19]

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


2. Исследования высокоуровневых языков программирования

2.1 Язык С

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

- операционные системы;

- компиляторы языка;

- текстовые редакторы;

- сетевые драйверы;

- базы данных;

- языковые переводчики.

Язык С составляет подмножества языка С++. Практически более новый язык включает в себя весь С и добавляет ему новые функции, а самое главное — объектно-ориентированную парадигму.

Программа на C может состоять от 3 до миллионов строк и может быть записана в один или несколько текстовых файлов с расширением «.c», например, hello.c. [7]

Разработка C первоначально не была целью его создателей. Фактически, различные обстоятельства и проблемы создали идеальную ситуацию для ее появления. В 1960-х годах Деннис Ритчи, который был сотрудником Bell Labs (AT&T), вместе с некоторыми из его коллег, работал над разработкой операционной системы, которая могла бы использоваться многими пользователями одновременно. Эта операционная система была известна как Multics, и она должна была позволить многим пользователям совместно использовать общие вычислительные ресурсы. Multics добавляли много преимуществ, но также имели много проблем. Это была большая система, и казалось, с точки зрения выгоды, что затраты перевешивают вложенные усилия и ресурсы. Постепенно Bell Labs отказались от проекта.

Программа на C состоит из различных, так называемых, токенов, а токен — это либо ключевое слово, идентификатор, константа, строковый литерал, либо символ. Например, следующий оператор C состоит из пяти токенов:

printf("Hello, World! \n");

Индивидуальные токены:

printf

(

"Hello, World! \n"

)

;

В программе на C точка с запятой является идентификатором утверждения. То есть каждое отдельное утверждение должно заканчиваться точкой с запятой. Он указывает конец одного логического объекта.

Ниже приводятся два разных утверждения:

printf("Hello, World! \n");

return 0;

Комментарии являются неким текстом помощи к программе на языке C, и они игнорируются компилятором. Они начинаются с “/ *” и заканчиваются символами “* /”, как показано ниже:


/* my first program in C */

Невозможно комментировать комментарии, и они не встречаются в строковых или символьных литералах.

Идентификатор на C — это имя, используемое для идентификации переменной, функции или любого другого определяемого пользователем элемента. Идентификатор начинается с буквы от A до Z, от a до z или символа подчеркивания '_', за которым следуют ноль или несколько букв, знаков подчеркивания и цифр (от 0 до 9). [10]

C не допускает знаков препинания, таких как “@, $ и %” внутри идентификаторов. C — язык программирования с учетом регистра. Таким образом.

Есть список наименований показывает зарезервированные слова в C. Эти зарезервированные слова не могут использоваться в качестве констант или переменных, или любых других имен идентификаторов.

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

Пробел — это термин, используемый в C для описания пробелов, вкладок, символов новой строки и комментариев. Пробел отделяет одну часть инструкции от другой и позволяет компилятору определить, где начинается один элемент в инструкции, такой как int, и следующий элемент. Поэтому в следующем утверждении: “int age;” должен быть по крайней мере один пробельный символ (обычно пробел) между int и age, чтобы компилятор мог их отличить. С другой стороны, в следующем утверждении: “fruit = apples + oranges; // get the total fruit” никакие пробельные символы не нужны между фруктами и =, или между = и яблоками, хотя можно включать некоторые, если нужно увеличить удобочитаемость.

Типы данных в С относятся к обширной системе, используемой для объявления переменных или функций разных типов. Тип переменной определяет, сколько места занимает он в хранилище и как интерпретируется шаблон бита. [8]

Типы в C можно классифицировать следующим образом:

1. Основные типы.

Они являются арифметическими типами и далее подразделяются на: (a) целые типы и (b) типы с плавающей точкой.

2. Перечисляемые типы.

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

3. Тип void.

Указатель типа void указывает, что значение не доступно.

4. Производные типы.

Они включают (a) типы указателей, (b) типы массивов, (c) типы структуры, (d) типы Союза и (e) типы функций.

Типы массивов и типы структуры в совокупности относятся к смешанным типам. Тип функции указывает тип возвращаемого значения функции [16].


Тип void указывает, что значение не доступно. Он используется в трех типах ситуаций:

1. Функция возвращается как “ничего”.

В C есть различные функции, которые не возвращают никакого значения, или можно сказать, что они возвращают пустоту. Функция без возвращаемого значения имеет тип возврата как void. Например, void exit (int status).

2. Аргументы функции как недействительные.

В C есть различные функции, которые не принимают никаких параметров. Функция без параметра может принимать “пустоту”. Например, int rand (void);

3. Указатели на “пустоту”.

Указатель типа void * представляет адрес объекта, но не его тип. Например, функция выделения памяти void * malloc (size_t size); возвращает указатель на void, который может быть передан любому типу данных.

Переменная — это не что иное, как название области хранения, которой могут манипулировать программы. Каждая переменная в C имеет определенный тип, который определяет размер и расположение памяти переменной; диапазон значений, которые могут быть сохранены в этой памяти; и набор операций, которые могут быть применены к переменной. [6]

Имя переменной может состоять из букв, цифр и символа подчеркивания. Он должен начинаться с буквы или подчеркивания. Буквы верхнего и нижнего регистра различны, потому что C чувствителен к регистру.

Язык программирования C также позволяет определять различные, другие типы переменных, таких как «Перечисление», «Указатель», «Массив», «Структура» и т.д.

Определение переменной сообщает компилятору, где и сколько хранилища следует создать для переменной. Определение переменной указывает тип данных и содержит список одной или нескольких переменных этого типа следующим образом:

type variable_list;

Здесь тип должен быть допустимым типом данных C, включая char, w_char, int, float, double, bool или любой пользовательский объект; и переменная_list может состоять из одного или нескольких имен идентификаторов, разделенных запятыми. Некоторые действительные объявления показаны ниже:

int i, j, k;

char c, ch;

float f, salary;

Значения int i, j, k; объявляет и определяет переменные i, j и k; которые инструктируют компилятор создавать переменные с именем i, j и k типа int. [4, 15]

Переменные могут быть инициализированы (назначено начальное значение) в их объявлении. Инициализатор состоит из знака равенства, за которым следует постоянное выражение следующим образом:

type variable_name = value;

Некоторые примеры:

extern int d = 3, f = 5; // declaration of d and f.

int d = 3, f = 5; // definition and initializing d and f.

byte z = 22; // definition and initializes z.