Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Классификация языков программирования высокого уровня (Основные определения для языков программирования)

Содержание:

ВВЕДЕНИЕ

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

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

Программы предназначены для решения конкретных задач с помощью ЭВМ.

Существуют языки программирования низкого уровня, которые преобразуют двоичный машинный код, в более понятный для человека вид с помощью программ трансляторов – ассемблер. Также есть языки высокого уровня, которые еще более понятны и удобны для программиста. Среди языков высокого уровня можно назвать: Pascal, Java, C#, Python и другие.

О языках программирования высокого уровня, их классификации написана эта работа.

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

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

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

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

Задачи, исходя из поставленных целей:

• Просмотреть общих сведений о языках программирования высокого уровня.

• Рассмотрение процессов интерпретации и компиляции.

• Дать определения и привести примеры: объектно-ориентированным, декларативным, логическим и функциональным языкам программирования.

• Дать критерии оценки языков программирования.

• Охарактеризовать наиболее известные языки программирования.

Методы исследования: сбор, обобщение, систематизация, анализ информации и метод сравнения.

Курсовая работа состоит: из введения, трех глав, заключения, списка использованной литературы:

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

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

• Во второй главе дается классификация языков программирования высокого уровня. Даются критерии оценки языков программирования высокого уровня.

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

• В заключении сделаны основные выводы по теме.

Теоретическую базу курсовой работы составили следующие издания: Т. А. Жданова, Ю. С. Бузыкова «Основы алгоритмизации и программирования»; А. Г. Аузяк, Ю. А. Богомолов, А. И. Маликов, Б. А. Старостин «Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов»; Г. Р. Кадырова. «Основы алгоритмизации и программирования»; Макаров В. Л. «Программирование и основы алгоритмизации»; И. П. Рак, А. В. Терехов, А. В. Селезнев «Основы алгоритмизации и программирования». Также для наиболее полного раскрытия темы я использовал дополнительно следующие источники: Орлов С. А. «Теория и практика языков программирования», Молдованова О. В. «Языки программирования и методы трансляции», Трофимов В. В. «Основы алгоритмизации и программирования».

Данные источники выбраны потому что, они рекомендованы преподавательским составом. Они надежны, так как изданы в различных университетах. Раскрывают тему работы в полном объеме.

1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ: ОБЩИЕ СВЕДЕНИЯ

1.1 Основные определения для языков программирования

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

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

Поэтому для облегчения программирования разработаны специальные языки – алгоритмические языки или языки программирования [1].

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

По этому критерию можно выделить следующие уровни языков программирования:

• машинные;

• машинно-ориентированные (ассемблеры);

• машинно-независимые (языки высокого уровня).

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

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

Работа всех трансляторов строится по одному из двух принципов: интерпретация или компиляция.

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

Компиляция программы включает два действия: анализ, т. е. определение правильности записи исходной программы в соответствии с правилами построения языковых конструкций входного языка, и синтез – генерирование эквивалентной программы в машинных кодах[2].

1.2 Основные элементы языков программирования

Рассмотрим основные элементы языков программирования высокого уровня на примере языка QBasic.

Язык программирования Qbasic (как и любой другой язык) образуют

три его составляющие: алфавит, синтаксис и семантика.

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

Синтаксис – это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза.

Семантика определяет смысловое значение предложений языка[3].

Продолжим на примере языка С++. Из символов алфавита формируются лексемы языка:

• идентификаторы;

• знаки операций;

• константы;

• разделители.

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

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

Переменные - это данные, которые могут изменять свои значения в процессе выполнения программы[4].

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

Функции:

При программировании часто бывает необходимо вычислить значение функции (например, логарифм числа, корень квадратный и т. п.). Вычисление функций осуществляется с помощью подпрограмм, которые заранее запрограммированы[5].

1.3 Операции и выражения для языков программирования на примере языка С++

Выражение в языке С++ - это последовательность операндов, операций и символов-разделителей. Операнды - это переменные, константы либо другие выражения. Разделителями в С++ являются символы [ ] ( ) { } , ; : . * = #, каждый из которых выполняет свою функцию. Выражение может состоять из одной или более операций и определять выполнение целого ряда элементарных шагов по преобразованию информации. Компилятор соблюдает строгий порядок интерпретации выражений, называемый правилами предшествования.

По числу операндов, участвующих в операции, различают следующие типы:

• унарные (имеющие один операнд);

• бинарные (имеющие два операнда);

• тернарные (имеющие три операнда).

По типу выполняемой операции различают:

• арифметические операции;

• логические операции и операции отношения;

• операцию условия;

• операцию присваивания;

• операцию sizeof;

• операцию преобразования типов.[6]

Арифметические операции:

Язык С++ (С) включает:

• арифметические операции сложения (задается знаком +), вычитания и унарный минус (-), умножения (*), деления (/), операцию определения остатка (%);

• операции инкремента (++) и декремента (--).

Логические операции и операции отношения:

Логические операции и операции отношения используются при формировании логических выражений, имеющих только два значения: 1, если логическое выражение ИСТИННО; 0, если логическое выражение ЛОЖНО. С++ поддерживает следующие логические операции:

• && - логическое И;

• || - логическое ИЛИ;

• ! - логическое НЕ.

С++ поддерживает следующие операции отношения:

• > - больше;

• < - меньше;

• = = - равно;

•>= - больше или равно;

•<= - меньше или равно;

•!= - не равно;

Операция условия:

В языке C++ - условная операция имеет следующий формат:

операнд-1 ? операнд-2 : операнд-3.

Операнд-1 должен быть целого или плавающего типа или быть указателем. Он оценивается с точки зрения его эквивалентности 0. Если операнд-1 не равен 0, то вычисляется операнд-2, и его значение является результатом операции. Если операнд-1 равен 0, то вычисляется операнд-3, и его значение является результатом операции. Следует отметить, что вычисляется либо операнд-2, либо операнд-3, но не оба.

Операция присваивания:

Язык С++ имеет несколько особенностей выполнения операции присваивания.

• простое присваивание: (=): операнд 1 = операнд2;

• составное присваивание: операнд 1> += < операнд 2>.

Операция sizeof

С помощью операции sizeof можно определить размер памяти, которая соответствует идентификатору или типу. Она имеет следующий формат:

sizeof (выражение) .

Преобразование типов:

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

1. операнды разных типов приводятся к "старшему", т.е. более длинному типу. Самый старший - long double, double, float, unsigned long, long int, unsigned int, char - самый младший;

2. при выполнении операции присваивания результат приводится к тип.

переменной слева от знака операции[7].

1.4 Операторы управления в языках программирования на примере с++

Операторы управления вычислительным процессом позволяют выполнять ветвление, циклическое повторение одного или нескольких операторов, передачу управления в нужное место кода программы. Под вычислительным процессом понимают процесс выполнения операторов программы. Операторы программы могут быть простыми или составными. Простой оператор - это оператор, не содержащий другие операторы. Разделителем простых операторов служит точка с запятой. Специальным случаем простого оператора является пустой оператор, состоящий из единственного символа ';'. Составной оператор, или блок, - это любая совокупность простых операторов, заключенная в фигурные скобки {}. Составной оператор идентичен простому оператору и может находиться в любом месте программы, где синтаксис языка допускает наличие оператора. Все операторы языка могут быть условно разделены на следующие категории:

• условные операторы, к которым относятся оператор условия if и опе-ратор выбора switch;

• операторы цикла (for, while, do while);

• операторы перехода (break, continue, return, goto);

• другие операторы (оператор "выражение", пустой оператор)[8].

Вывод

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

Также я установил, что современные языки программирования высокого уровня облегчают работу по написанию программ и взаимодействию человека и компьютера. Что разные языки программирования отличаются друг от друга уровнем (низкий, высокий), алфавитом, синтаксисом, и семантикой.

2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

2.1 Парадигма языков программирования

Парадигма - это главная идея какого-либо сложного понятия (в данном случае языка программирования).

Применительно к языкам программирования различают следующие парадигмы: ‰

• императивное программирование; ‰

• функциональное программирование; ‰

• логическое программирование; ‰

• объектно-ориентированное программирование.

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

Каждую парадигму поддерживает свой вид языков программирования:

Императивные ЯП ориентированы на операторы. Вычисления в них представляются как последовательность действий, производимых операторами.

• Функциональные ЯП задают вычисления как вызовы функций. ‰

• Логические ЯП описывают вычисления формальной логики.

• В объектно-ориентированных ЯП вычисления реализуются совокупностью объектов[9].

2.2 Императивные языки программирования

Императивные языки описывают процесс вычислений в виде команд, изменяющих состояние программы. Эти языки разрабатывались для фон-неймановской архитектуры ЭВМ, названной так в честь её автора – Джона фон Неймана. В компьютере фон Неймана данные и программы хранятся в одной и той же памяти, называемой оперативной. Центральный процессор получает из оперативной памяти очередную команду, декодирует её, выбирает из памяти указанные данные, выполняет команду и возвращает в память результат.

Основными элементами императивных языков являются переменные, моделирующие ячейки памяти ЭВМ; операторы присваивания, осуществляющие пересылку данных; один или несколько итеративных циклов.

Большинство императивных языков программирования включают в себя конструкции, позволяющие программировать рекурсивные алгоритмы. К этому виду языков относятся такие распространённые языки программи-рования, как: Algol, Fortran, Basic, PL/1, Ada, Pascal, C, C++, Java, C#[10].

2.3 Функциональные языки программирования

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

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

Функциональные (аппликативные) языки задают вычисления как вызовы функций.

Синтаксис функциональной программы выглядит следующим образом: functionn(…function2(function1(данные))…)

В начале вычислений к исходным данным применяется функция function1, затем к полученному промежуточному результату — function2 и т. д. В последнюю очередь применяется функция functionn. Она возвращает ожидаемый результат.

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

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

Первый язык функционального программирования LISP появился в рамках проекта по искусственному интеллекту (1960). Язык Scheme (1975) был построен как диалект языка LISP. Это небольшой язык с простым синтаксисом и семантикой, удобный для обучения студентов. В начале 1980-х Дэвид Тернер из университета Кента в Кентербери предложил английский вариант функционального языка с названием Miranda (1986). Язык ML (MetaLanguage) был создан Робином Милнером в Эдинбургском университете (1990). ML поддерживал не только функциональную, но и императивную парадигму. Язык Haskell (1992) как чисто функциональный язык считается современным преемником языка Miranda[11].

2.4 Логические (декларативные) языки программирования высокого уровня

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

Наиболее распространённым декларативным языком является язык Prolog. Основными областями его применения являются экспертные системы, системы обработки текста на естественных языках и системы управления реляционными базами данных[12].

2.5 Объектно-ориентированные языки программирования высокого уровня

Парадигма объектно-ориентированного программирования является развитием императивного программирования. При ее создании преследовались две цели:

‰• сократить размеры программ за счет повышения размера строительных элементов («маленькие» переменные заменяются «большими" объектами) и тем самым обеспечить возможность создания (за то же время) более крупных программных приложений;

‰• упростить процесс создания новых программ на базе старых (за счет применения механизма наследования).

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

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

Состояние объекта характеризуется перечнем данных и их значений. Поведение задается последовательностью выполняемых операций.

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

Описание объектов с общей структурой и поведением называется классом. Как и переменные, единичные объекты создаются по их описаниям. Только в роли описаний для переменных выступают типы данных, а в роли описаний для объектов - классы. Объект считается экземпляром класса.

Специфику объектно-ориентированного подхода определяют три принципа:

‰• инкапсуляция (сокрытие своего содержимого от внешнего мира);

‰• наследование (возможность получения потомками структуры и поведения предков);

‰• полиморфизм (использование одного и того же имени для выражения различных действий и объектов).

Первый объектно-ориентированный ЯП, Simula 67, был придуман норвежцами К. Нигаардом и У. Далом как расширение императивного языка Algol 60. Этот язык опередил свое время и был благополучно забыт.

Второй объектно-ориентированный ЯП, Smalltalk, появился в нужное время (1972–1980) и в нужном месте. Его автором стал Алан Кей из фирмы Xerox. Широкое распространение получил язык C++, созданный Б. Страуструпом (1983).

Очень часто используются гибридные языки, реализующие сразу несколько парадигм: Аda 2005, Eiffel, Object Pascal (императивная и объектно-ориентированная парадигмы), CLOS (функциональная и объектно-ориентированная парадигмы)[13].

2.6 Критерии оценки языков программирования

Достаточно часто возникает вопрос о том, какой язык программирования предпочтительней. Универсального ответа на вопрос о лучшем языке, конечно, нет. Можно говорить лишь о выборе языка для конкретной задачи, а точнее, для конкретных обстоятельств.

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

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

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

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

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

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

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

Суммарная стоимость использования языка программирования складывается из нескольких составляющих:

стоимость обучения языку определяется степенью сложности языка;

стоимость создания программы зависит от языка и системы программирования, выбранных для реализации конкретного приложения;

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

стоимость выполнения программы особенно существенна для программного обеспечения систем реального времени;

стоимость сопровождения программы включает в себя затраты на исправление дефектов и модификацию программы в связи с обновлением аппаратуры или расширением функциональных возможностей[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].

3.4 Характеристика логических языков программирования

Пролог (PROgramming in LOGic – логическое программирование). Главное назначение языка – разработка интеллектуальных программ и систем. Пролог – это язык программирования, созданный специально для работы с базами знаний, основанными на фактах и правилах (одного из элементов систем искусственного интеллекта). В языке реализован механизм возврата для выполнения обратной цепочки рассуждений, при котором предполагается, что некоторые выводы или заключения истинны, а затем эти предположения проверяются в базе знаний, содержащей факты и правила логического вывода. Если предположение не подтверждается, выполняется возврат и выдвигается новое предположение. В основу языка положена математическая модель теории исчисления предикатов[20].

Вывод

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

ЗАКЛЮЧЕНИЕ

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

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

Дальше я дал классификацию языкам программирования высокого уровня по парадигме (главной идее чего-либо). Дал определение императивным, языкам основным элементом, которых является переменная моделирующая ячейки памяти в ЭВМ. Объектно-ориентированным языкам, включающими принципы инкапсуляции, наследования и полиморфизма. Функциональным языкам в который ищется функция программы для обеспечения ожидаемого результата. Логическим, где операторы в программе выполняются не в том порядке, в каком они записаны, а в порядке, определяемом системой реализации правил. Также дал критерии оценки языкам программирования по надежности, гибкости, понятности и стоимости.

В последней главе я дал характеристику наиболее известным языкам программирования высокого уровня. Некоторые языки давно устарели, а некоторые используются и по сей день. Одни хороши для обучения, другие используются для научных разработок, третьи наиболее удобны для разработки ПО.

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

В написании работы я использовал предложенные мне источники, а также дополнительную литературу. Не смотря на то, что учебник Орлова С. А. «Теория и практика языков программирования» является дополнительным. По моему мнению, он наиболее полно раскрывает тему данной курсовой работы.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Жданова Т. А. Основы алгоритмизации и программирования: учеб. пособие /Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с.
  2. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследова-тельского технического ун-та - КАИ, 2013, 153 с.
  3. Кадырова, Г. Р. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с.
  4. Макаров В. Л, Программирование и основы алгоритмизации: Учеб. Пособие. – СПб.: СЗТУ. 2003. - 110 с.
  5. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А. В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та, 2004. 24 с.
  6. Орлов С. А. О-66 Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. - СПб.: Питер, 2013 - 688 с.

Молдованова О. В. Языки программирования и методы трансляции: Учебное пособие. – Новосибирск/СибГУТИ, 2012. – 134 с.

  1. Трофимов В. В. Основы алгоритмизации и программирования : учебник для СПО / В. В. Трофимов, Т. А. Павловская; под ред. В. В. Трофимова. – М.: Издательство Юрайт, 2019. 137 с.

  1. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А. В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та, 2004. 9 с.

  2. Кадырова, Г. Р. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 14-16 с.

  3. Жданова Т. А. Основы алгоритмизации и программирования: учеб. пособие /Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 19 с.

  4. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 44 с.

  5. Жданова Т. А. Основы алгоритмизации и программирования: учеб. пособие /Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 23 с

  6. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследова-тельского технического ун-та - КАИ, 2013, 47-48 с.

  7. Макаров В. Л, Программирование и основы алгоритмизации: Учеб. Пособие. – СПб.: СЗТУ. 2003. с – 35-39

  8. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследова-тельского технического ун-та - КАИ, 2013, 47-48 с.

  9. Орлов С. А. О-66 Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. - СПб.: Питер, 2013. - 63 с.

  10. Молдованова О. В. Языки программирования и методы трансляции: Учебное пособие. – Новосибирск/СибГУТИ, 2012. – 8 с.

  11. Орлов С. А. О-66 Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. - СПб.: Питер, 2013. - 68-69 с.

  12. Молдованова О. В. Языки программирования и методы трансляции: Учебное пособие. – Новосибирск/СибГУТИ, 2012. – 8-9 с.

  13. Орлов С. А. О-66 Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. - СПб.: Питер, 2013 - 73-74 с.

  14. Молдованова О. В. Языки программирования и методы трансляции: Учебное пособие. – Новосибирск/СибГУТИ, 2012. – 9-11 с.

  15. Кадырова, Г. Р. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 19-20 с.

  16. Трофимов В. В. Основы алгоритмизации и программирования : учебник для СПО / В. В. Трофимов, Т. А. Павловская; под ред. В. В. Трофимова. – М.: Издательство Юрайт, 2019. 23 с.

  17. Орлов С. А. О-66 Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. - СПб.: Питер, 2013. - 65-66 с.

  18. Кадырова, Г. Р. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 20-22 с.

  19. Орлов С. А. О-66 Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. - СПб.: Питер, 2013. - 69 с.

  20. Кадырова, Г. Р. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 23 с.