Основы алгоритмизации и программирования. Классификация языков программирования высокого уровня.
Содержание:
ВВЕДЕНИЕ
В настоящее время, когда компьютерные технологии не стоят на месте, нужно четко понимать, что программисту или любому специалисту, который работает с компьютером и его программами, необходим определенный пакет знаний и умений - для успешной и эффективной работы.
Чтобы это осуществлять, необходимо уметь: получать, обрабатывать, использовать информацию, полученную с помощью компьютеров и соответственно нужно уметь обращаться с языками программирования.
Актуальность выбранной темы заключается в том, что сейчас практически все, что мы используем в компьютерных технологиях, создавалась с помощью языков программирования, да и не только в них, но и в других сферах. Из предложенных тем для курсовой работы, данная тема была самая интересная для меня, т.к. я только прохожу введение в свою специальность «Программист» и для дальнейшего развития, необходим начальный «базовый» уровень знания.
Целью курсовой работы является изучение классификации языков программирования высокого уровня, их развитие и применение.
В данной курсовой работе использовался научно-исследовательские методы, а так же была изучена литература российских и зарубежных писателей. Выбор был сделан в пользу этих книг, потому что, в них описаны процессы от зарождения до создания программ.
ГЛАВА 1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Одной из самых революционных идей по созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах XIX века Charles Babbage (Чарльз Бэббидж) английского математика, часто называют «отцом компьютера». Мысль заключалась в том, чтобы предварительные записи порядка действия машины, для последующей автоматической записи вычислений, были осуществлены в программе. Использованная запись программы была сделана на перфокартах, придуманная для управления такими станками Joseph Marie Jacquard (Жозе́ф Мари́ Жакка́р – французский изобретатель)[1].
Станок Жаккарда относится к тем изобретениям, которые перевернули жизнь многих людей, оставив их без работы и средств существования, что и привело к восстанию лионских ткачей.[2]
Рисунок 1. Станок Жаккарда (вид со стороны перфокарт) и образцы жаккардовой ткани [3]
Augusta Ada King Byron, Countess of Lovelace (Авгу́ста А́да Кинг (урождённая Ба́йрон), графиня Ла́влейс – британский математик) стала известна, прежде всего, созданием описания вычислительной машины, проект которой был разработан Чарльзом Бэббиджем, составила первую в мире программу (для этой машины). Она теоретически разработала некоторые приемы управления последовательностью вычислений, которые используются в программировании и сейчас. Ею же была описана и одна из важнейших конструкций практически любого современного языка программирования – цикл и рабочая ячейка[4].
Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной John William Mauchly (Джон Уильям Мокли). Система кодирования, предложенная им, вдохновила одну из его сотрудниц Грейс Мюррей Хоппер. При работе на компьютере «Марк-1» ей и ее группе пришлось столкнуться со многими проблемами и все, что ими придумано, было впервые. В частности они придумали подпрограммы. И еще одно фундаментальное понятие техники программирования впервые ввели Хоппер и ее группа - «отладка».
В конце 40-х годов Д.У. Мокли создал систему под названием «Short Code», которая являлась примитивным языком программирования высокого уровня. В ней программист записывал решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти формулы в двух литерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система, разработанная Джон Уильям Мокли, считается одним из первых примитивных интерпретаторов.[5]
Уже в 1951 г. Хоппер создала, первый в мире компилятор и ею же был введен сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки - это называется компиляцией» - так она объясняла происхождение введенного ею термина.[6]
Языки программирования – это алгоритмы, которые используют для написания компьютерных программ.
Языки программирования состоят:
- Машинно-ориентированные языки (языки программирования низкого уровня): автокоды, ассемблеры – с помощью данных языков можно осуществлять управление вычислительным процессом напрямую, при помощи машинных команд;
- Языки программирования высокого уровня, см. рисунок 2.
Рисунок 2. Схема языков программирования высокого уровня[7]
В 40-50 годы ХХ века, программы на машинном языке (автокоды) – имеют длинную последовательность единиц и нулей, являясь машинно-зависимыми, т.е. было нужно для каждого компьютера составлять свою программу. Так же стоит отметить, что в 50 годы ХХ века, берет начало Ассемблер, который дает возможность применения символических имен в исходной программе и избавляет программиста от длительного программирования, по распределению памяти компьютера для команд, переменных и констант.[8]
Особенность языков высокого уровня состоит в том, что вычислительная машина не распознает написанных на нем программ, ведь ей доступны лишь машинные команды. По этой причине требуются специальные программы-трансляторы, которые осуществляют перевод.[9]
Транслятор (англ. Translator – переводчик) – это программа-переводчик. С помощью транслятора можно преобразовать программу из языков высокого уровня, в программу, состоящую из машинных команд. Трансляторы применяются в виде компиляторов или интерпретаторов.[10]
Интерпретатор (англ. Interpreter – устный переводчик) осуществляет перевод и выполняет программу строка за строкой. После того, как программа была откомпилирована, исходная программа, и компилятор больше не требуются. Программа, обработанная интерпретатором, переводится на машинный язык при каждой загрузке.
Рисунок 3. Схема работы интерпретатора[11]
Компилятор (англ. Compiler – собиратель, составитель) читает всю программу целиком, затем осуществляет ее перевод, создавая законченный вариант программы на машинном языке, который затем выполняется. Откомпилированные программы работают быстрее.[12]
Рисунок 4. Схема работы компилятора[13]
Языки программирования подразделяются на поколения:
- Первое – машинно-ориентированные;
- Второе – автокоды;
- Третье – Basic и Pascal;
- Четвертое поколение включает усовершенствованные языки для работы с базами данных;
- Пятое поколения – это наиболее усовершенствованные, визуальные, объектно-ориентированные, такие как: Пролог, Visual и т д.
В период создания первых вычислительных машин было создано свыше 2000 разнообразных языков программирования и в настоящее время это количество продолжает расти. Одними языками пользуются единицы (разработчики), другие становятся предметом пользования для миллионов, но так или иначе они являются неотъемлемой частью информационных технологий.[14]
Последовательность команд, определяющих алгоритм решения задачи, это и есть процедурные языки программирования. Основная идея, использование памяти для хранения, командой – присвоения, с помощью которой, определяется и меняется память компьютера. Алгоритм программы производит, преобразование содержимого памяти, изменяя его от исходного состояния.
Процедурные языки программирования состоят из операционных и структурных языков.
Виды операционных языков (привязанные к конкретной архитектуре ЭВМ)[15]:
- Фортран (начало 50-х г. XX века) – первый компилируемый язык для программирования научно-технических задач;
- Алгол (середина 60 г. XX века) – многоцелевой расширенный язык, в котором впервые введены понятия «блочная структура программы» и «динамическое распределение памяти»;
- BASIC (середина 60-х г. XX века) – характеризуется простотой освоения и наличием универсальных средств для решения научных, технических экономических и игровых задач.
- Кобол (конец 60-х г. XX века) – для решения задач обработки больших объемов данных, хранящихся на различных носителях данных;
Виды структурных языков (не привязанные к конкретной архитектуре ЭВМ)[16]:
- PL-1 (63-66гг. XX века) - хорошо подходит для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения.
- PASCAL (68-71гг. XX века) - популярный для ПК, в основу которого положен подход от общей задачи к частным (более простым и меньшим по объему).[17]
- СИ (начало 70-х г. XX века) - первоначальный его вариант планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Особенность языка - это то. что различия между выражениями и операторами сглаживаются, что приближает его к функциональным языкам программирования.[18]
- АДА (79 г. XX века) - назван в честь первой программистки Ады Лавлейс, его отличает модульность конструкций.
- Модула (1980 г. XX века) - для профессиональных системных программистов.[19]
Объектно-ориентированное программирование (ООП) — это метод программирования, при использовании которого главными элементами программ являются объекты. Объединение данных и свойственных им процедур обработки в одном объекте, называется инкапсуляцией и является одним из важнейших принципов ООП[20].
Объектные языки
- C++,
- Java.
Визуальные языки (середина 90-х г.) - интерфейсная часть программного продукта создается в диалоговом режиме, практически без написания программных операторов[21]:
- Visual Basic,
- Delphi,
- C++ Builder,
- Visual C++,
- Object PAL,
- dBase.
Язык VBA (Visual Basic for Application) - язык приложений Microsoft Office (Excel, Word, Power Point и др), который соблюдает основной синтаксис языка и правила программирования языков Basic-диалектов, что позволяет создавать макросы для автоматизации выполнения некоторых операций и графический интерфейс пользователя, интеграцию между различными программными продуктами.[22]
Языки программирования дли компьютерных сетей, являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а сами программы - в исходных текстах. Такие языки называются скрипт — языками.[23]
- Perl (1987 г.) язык обладает функциями расшифровки для практического извлечения данных и составления отчетов, обрабатывает объемные тексты, с помощью него можно создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты;
- РНР (1995-1997гг.) обладает средствами доступа к базам данных и используется создателями динамических сайтов во всем мире;
- Тс1/Тк (конец 80-х г.) состоит из перечня команд, предназначенных для работы с абстрактными не типизированными объектами и позволяет создавать программы с графическим интерфейсом;
- VRML (1994 г.) создан для организации виртуальных трехмерных интерфейсов в Интернете.
- XML - с 1996 г. идет работа над созданием универсального языка структуры документа.[24]
Декларативные языки программирования – это функциональные и логические языки программирования.
Функциональный язык программирования – это способ составления программ, в которых единственным действием является вызов функции. Программа, написанная на этом языке, представляет собой последовательность описания функций и выражений. Выражение вычисляется сведением от сложного, к простому. Все выражения записываются в виде списков[25].
Логический язык программирования – это программирование в терминах логики. Логическое программирование представляет собой попытку возложить на программиста только постановку задачи, а поиски путей ее решения предоставить транслятору. Язык этой группы Prolog (Пролог) был создан в начале 70-х годов ХХ века Аланом Колмероэ. В его основу положена математическая модель теории исчисления предикатов[26]. Программа на этом языке строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Человек только описывает структуру задачи, а внутренний «мотор» Пролога сам ищет решение с помощью методов поиска и сопоставления.[27]
Языки декларативного программирования
Язык функционального программирования:
Lisp (59 г. ХХ века) – позволяет обрабатывать большие объёмы текстовой информации.
Язык логического программирования:
Пролог (73 г. ХХ века) – язык искусственного интелекта. Программа на зяыке Пролог строится из последовательности фактов и правил, затем формулируется утверждения, которое в дальнейшем пытается доказать с помощью правил. Язык сам ищет решение с помощь методов поиска и сопоставления, которые в нем заложены.
Основные области применения Пролога:
- быстрая разработка прототипов прикладных программ;
- автоматический перевод с одного языка на другой;
- создание естественно-языковых интерфейсов для существующих систем;
- символьные вычисления для решения уравнений, дифференцирования и интегрирования;
- проектирование динамических реляционных баз данных;
- экспертные системы и оболочки экспертных систем;
- автоматизированное управление производственными процессами;
- автоматическое доказательство теорем;
- полуавтоматическое составление расписаний;
- системы автоматизированного проектирования, базирующееся на знаниях программное обеспечение;
- организация сервера данных или, точнее, сервера знаний, к которому может обращаться клиентское приложение, написанное на каком-либо языке программирования.
Области, для которых Пролог не предназначен: большой объем арифметических вычислений (обработка аудио, видео и т.д.); написание драйверов.
Изобретение языков программирования высшего уровня, а также их постоянное совершенствование и развитие, позволило человеку не только общаться с машиной и понимать ее, но использовать ЭВМ для сложнейших расчетов в области самолетостроения, ракетостроения, медицины и даже экономики.
Обобщающий вывод по первой главе.
На сегодняшний день, любое среднее и крупное предприятие, имеет в своем штате группу программистов, обладающими знаниями программирования различными языками, которые редактируют, изменяют, и модифицируют программы используемыми сотрудниками предприятия. Это говорит о том, что на рынке труда пользуются спросом обладающими знаниями и опытом работы с различными языками программирования.
В данной курсовой работе, мной были рассмотрены самые распространенные языки программирования, такие как: Фортран, Паскаль, Бейсик, которые используется для научных вычислений, для обучения программированию начинающих программистов.
Несмотря на то, что современный уровень развития языков программирования находятся на высоком уровне, тенденция их развития, а также развития информационных технологий в целом, складывается таким образом, что можно предположить, что в ближайшем будущем, человеческие познания в этой сфере, помогут произвести на свет языки, умеющие принимать, обрабатывать и передавать информации в виде мысли, слова, звука или жеста.
ГЛАВА 2. ПРИМЕРЫ В ВИДЕ ПРОГРАММ И РЯД ФУНКЦИЙ НА ЯЗЫКАХ ВЫСОКОГО УРОВНЯ ПРОГРАММИРОВАНИЯ
Для того чтобы понять выбранную тему курсовой работы, нужно «углубиться» в сами программы, написанные на языках программирования высокого уровня. Для этого следует рассмотреть следующие языки в виде программ и ряда функций:
- Perl,
- Php,
- Tcl/Tk,
- Vrml,
- Lisp,
- Prolog,
- Basic.
Создание текстовых документов с использованием языка Perl представляет собой тривиальную задачу. Для начала необходимо удостовериться, что мы поместили правильный НТМL заголовок в начале текстового документа. Например, следующий скрипт создает простой текстовый документ, содержащий сообщение Hello, world:
print “Content-type: text/plain\n\n”;
print “Hello, world\n”;
Создание текстовых документов HTML также очень легко. Например, в следующем фрагменте текста создается простой документ HTML[28]:
print <<HTML;
Content-type: text/html
<HTML>
<HEAD><TITLE>Test Using HTML</TITLE></HEAD>
<BODY>
<H1><CENTER>
Hello, world
</CENTER></H1>
</BODY></HTML>
HTML
Эти примеры больше походят на исходные коды HTML, чем на программу на языке Perl. Действительно, если удалить несколько строк, можно получить HTML-файл. Эта иллюстративная программа использует свойства языка Perl, которые достаточно просты для понимания. Строка <<HTML и последняя строка с символами HTML представляют собой конструкцию, называемую «здесь-документ» (here document), которая перешла сюда из терминологии программирования shell для UNIX. «Здесь-документ» представляет собой просто несколько строк литералов. Perl обрабатывает «здесь-документ», как строку в двойных кавычках.
Поскольку «здесь-документ» делает исходный код на языке Perl легким для чтения, то использование такой конструкции является идеальным для создания HTML-документов. Используя конструкцию «здесь-документ», скрипт на языке Perl может не иметь символов цитирования и символов новой строки, и не должен содержать функций printf[29].
Язык PHP предназначен для веб-программирования, он сочетает в себе достоинства языков C и Perl и при этом весьма прост в изучении, обладает значительными преимуществами перед традиционными языками программирования. Синтаксис PHP очень напоминает синтаксис языка C и во многом заимствован из таких языков как Java и Perl. Программист С может очень быстро освоить язык PHP и сможет использовать его с максимальной эффективностью. В PHP есть практически все операторы и функции, имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (fgets,fputs,printf) и множество других.
Синтаксис любого языка программирования гораздо легче "почувствовать" на примерах, нежели используя какие-то диаграммы и схемы. Поэтому приведем пример простейшего скрипта на PHP[30]:
<html>
<head>
<title>Пример</title>
</head>
<body>
<?
echo "Привет, я - скрипт PHP!";
?>
</body>
</html>
Это классический скрипт, с которого начинают изучение языка программирования, необходимо обратить внимание на то, что HTML-код корректно обрабатывается интерпретатором PHP.[31]
PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных «<? и ?>», выводится в браузер непосредственно. В этом и заключается главная особенность PHP, в отличие от Perl и C, где вывод осуществляется только с помощью стандартных операторов.
Типы данных в PHP. PHP поддерживает восемь простых типов данных:
Скалярный тип:
- boolean (двоичные данные)
- integer (целые числа)
- float (числа с плавающей точкой или 'double')
- string (строки)
Смешанный тип:
- array (массивы)
- object (объекты)
Специальный тип:
- resource (ресурсы)
- NULL ("пустые")
Псевдо типы:
Tcl — это аббревиатура от Tool Command Language. Команды выполняют различные действия, например: вывод строки, вычисление значения арифметического выражения или отображение компонентов (widget) на экране. В Tcl в виде команд представляются все действия, даже присвоение значений переменным и определение процедур. Для вызова команд в языке Tcl предусмотрены достаточно простые синтаксические конструкции. Все сложные действия выполняет интерпретатор, реализующий команды. Команда Tcl записывается в следующем виде:
команда параметр1 параметр2 параметр3...
Команда может представлять собой либо встроенную команду Tcl, либо процедуру. Имя команды отделяется от параметров с помощью одного или нескольких пробелов или знаков табуляции; те же символы используются для разделения параметров. Символ конца строки или точка с запятой завершают команду. В процессе интерпретации Tcl осуществляет группировку (объединение нескольких слов в один параметр) и подстановку (замену переменных и вызовов вложенных процедур). Действия интерпретатора Tcl по обработке команд можно разделить на три этапа[32].
• Группировка параметров,
• Подстановка вложенных команд, переменных и символов, которым предшествует обратная косая черта,
• Вызов команды. Интерпретация параметров самой командой.
Примеры подстановки
Если в составе команды присутствует несколько подстановок, не разделенных пробелами или знаками табуляции, группировка выполняется по умолчанию. Использовать двойные кавычки в этом случае не обязательно. В приведенной ниже команде осуществляется конкатенация значений переменных a, b и c.
set concat $a$b$c
Если же нам необходимо разделить значения переменных пробелами, тогда нужно использовать кавычки.
set concat "$a $b $c"
При работе с Tk имя компонента часто используется как имя команды. $text insert end "Hello, World!"
Таблица 1. Арифметические операции (приводятся по убыванию приоритета)[33]
-~! |
Унарный минус, побитовое отрицание, логическое отрицание |
*/% |
Умножение, деление, остаток от деления |
+ - |
Сложение, вычитание |
<< >> |
Сдвиг влево, сдвиг вправо |
< > <= >= |
Сравнение: меньше, больше, меньше или равно, больше или равно |
== != eq ne |
Равенство, неравенство, равенство строк (Tcl 8.4), неравенство строк (Tcl 8.4) |
& |
Побитовое И |
ˆ |
Побитовое исключающее ИЛИ (XOR) |
| |
Побитовое ИЛИ |
&& |
Логическое И |
|| |
Логическое ИЛИ |
x?y:z |
Если x, то y; иначе — z |
Язык VRML (Virtual Reality Modeling Language) предназначен для описания интерактивных 3D объектов и миров. Он был разработан для применения в сетях INTERNET и INTRANET. На сегодняшний день этот язык является сетевым стандартом и поддерживается ведущими мировыми производителями программного обеспечения. VRML дает разработчику возможность создавать статические и динамические 3D модели а также позволяет включать и обрабатывать в моделях гиперссылки на звуковые, видео, html файлы, другие VRML объекты. По своей структуре язык является объектно-ориентированным. Ему присущи такие характеристики объектного языка, как инкапсуляция и наследование. Полиморфизм в привычном понимании этого слова отсутствует[34].
Для описания простых VRML объектов подходит любой текстовый редактор, имеющий возможность сохранять файлы в обычном текстовом формате. Описание VRML-объектов (мира) хранится в текстовом файле с расширением wrl.[35]
Для воспроизведения VRML объектов необходим VRML браузер, поддерживающий язык VRML в спецификации 2.0 К популярным VRML-браузерам, поддерживающим Microsoft Internet Explorer, Opera и Mozila Firefox, относятся blaxxun Contact (www.blaxxun.com), Cortona3D Viewer (www.cortona3d.com), BS Contact VRML/X3D (www.bitmanagement.de), Octaga Player (www.octaga.com) и др.
Формы описываются с помощью узла - Shape, который объединяет геометрические свойства объектов ( форму,структуру ) и свойства, определяющие внешний вид этих объектов ( цвет, текстуру поверхности и т.д. . Геометрические свойства описываются с помощью поля geometry. Свойства, определяющие внешний вид описываются с помощью поля appearance.
Shape { geometry . . . appearance . . . }
Значением поля geometry являются геометрические узлы, т.е. узлы, определяющие форму и структуру объектов.
Стандартные примитивные геометрические узлы следующие:
Box { . . . }
Cone { . . . }
Cylinder { . . . }
Sphere { . . . }
В полях примитивных геометрических узлов указываются их размеры[36].
Box { size 2.0 0.5 3.0 }
Cone { height 3.0 bottomRadius 0.75 }
Cylinder { height 2.0 radius 1.5 }
Sphere { radius 1.0 }
Единицы измерения обычно метры, но могут быть и другие. Если размеры не указаны, то принимаются значения по умолчанию, которые для каждого типа узла свои.
Язык функционального программирования Лисп (Lisp) был разработан в 1958 году Джоном МакКарти (John McCarthy). Название Лисп (Lisp) происходит от List processing (обработка списков). Лисп представляет собой язык функционального программирования. Он основан на алгебре списочных структур, лямбда-исчислении и теории рекурсивных функций. Cсуществует несколько диалектов языка Лисп: Lisp1 (1958), MacLisp (1964), InterLisp (1972), CommonLisp (1984). Диалект CommonLisp получил наибольшее распространение.
Первые реализации языка были интерпретаторами и особой скоростью не отличались. В настоящее время все коммерческие и некоторые бесплатные реализации имеют качественные оптимизирующие компиляторы. По разнообразию типов данных Лисп превосходит любой другой язык: числа целые, целые с неограниченным числом знаков, вещественные, дробные (выполнение (/ 1 3) вернет 1/3, а не 0.3333333...), комплексные, списки, массивы, строки, символы, последовательности, функции, структуры, макросы, классы и объекты. В Лиспе типы привязываются к значению переменной, а не к ее имени, поэтому легко создавать разнотипные списки и массивы
Определение функций и их вычислений в Лиспе основано на лямбда-исчислении (lambda calculus) Черча. Функции в Лиспе могут передаваться как параметры, модифицироваться и возвращаться как значения. Кроме того, в Лиспе компилятор можно вызывать из исполняемой программы "на лету", то есть для модификации и рекомпиляции отдельной функции или класса не требуется остановка системы.[37] Данные в Лиспе представляются атомами, списками, консами, символьными выражениями. Взаимосвязь понятий иллюстрируется рис. 5.[38]
Рисунок 5. Символьные выражения Лиспа
Атомы, простейшие объекты Лиспа, делятся на символьные и числовые. Символьный атом - это последовательность букв, цифр и возможно специальных символов, например, X1, Gruppa-11, ABCD. Числовой атом - это последовательность цифр, например, 2, -75, 355. В числовом атоме могут присутствовать символы '+', '-', '.', '/', например –11, +55.473, 2/5. Числовые атомы интерпретируются как константы, символьные - как константы и как переменные. Атом T обозначает логическое значение "истина", атом NIL - логическое значение "ложь" или пустой список.
Последовательность элементов, разделенных пробелами и заключенных в круглые скобки, является списком. Элементами списка могут быть любые объекты: атомы, списки, консы, например, (1 a 2 b 3 c), ((x1 0) (x2 1)), ((y . blue) (z . yellow)). Пустой список не содержит элементов и обозначается ( ) или NIL. Таким образом, список - это многоуровневая или иерархическая структура данных, в которой открывающие и закрывающие скобки находятся в строгом соответствии. Например, приведенные ниже выражения являются правильно составленными списками:
(+ 2 3) - список из трех элементов;
(((((первый) 2) третий) 4) 5) - список из двух элементов.
Список, в который не входит ни один элемент, называется пустым и обозначается “( )” или символом NIL. Пустой список - это не то же самое, что "ничего". Он выполняет ту же роль, что и ноль в арифметике. NIL может быть, например, элементом других списков:
NIL то же, что и ( );
(NIL) список, состоящий из атома NIL;
(( )) то же, что и (NIL);
((( ))) то же, что и ((NIL));
(NIL ( ) ) список из двух пустых списков.
Пара элементов, разделенных точкой и заключенных в круглые скобки, называется консом, или точечной парой. Список (e1 e2 … en) может быть представлен суперпозицией консов - (e1 . (e2 . (… (en . NIL) …))).
Символьным выражением в Лиспе является один из следующих объектов: - атом, список (s1…sn) или конс (s1.s2), где s1, s2, …, sn - символьные выражения. Например, (S3 (T . L) . (a c)) является символьным выражением.[39]
В Лиспе формы представления программы и обрабатываемых ею данных одинаковы и представляются списочной структурой. Списки, представляющие программы и данные, состоят из списочных ячеек, расположение и порядок которых в памяти несущественный. Структура списка определяется логически на основе имен символов и указателей. Добавление новых элементов в список или удаление из списка может производиться без переноса списка в другие ячейки памяти. Резервирование и освобождение могут в зависимости от потребности осуществляться динамически, ячейка за ячейкой[40].
Пролог - это описывающий язык, который используется для решения задач, в которых действуют объекты и отношения между ними.
Ориентация Пролога – “нетрадиционные” применения вычислительной техники: понимание естественного языка, БЗ, экспертные системы и прочие задания. Его принципиальное отличие от традиционных языков программирования состоит в подходе способа описания решения задачи. Программа на Прологе описывает не процедуру решения задачи, а логическую модель предметной области – некоторые факты относительно свойств предметной области и отношений между этими свойствами, а также правила вывода новых свойств и отношений из уже заданных, а так же программа на языке пролога состоит, из предложений, которые могут быть фактами, правилами или вопросами.[41]
Правила сопоставления термов в системе Пролог
Терм – элемент Пролог-программы – константа-переменная-структура, один из трех вариантов. Терм записывается как последовательность литер, которые делятся на 4 категории: {A..Z},{a..z}, {0..9},{+ - * / ^ < > ~ : . ? @ # $ &}. Наиболее важная операция над термами – сопоставление. Сопоставление – процесс проверки сопоставимости термов.
Два терма сопоставимы, если:
- они идентичны,
- переменным в обоих термах можно присвоить в качестве значений объекты таким образом, что после подстановки они станут идентичными.
Например, date(Day,июнь,1999) и date(Day1,июнь,1999) сопоставимы, поскольку переменным Day и Day1 можно присвоить одинаковые значения от 1 до 31[42]
Работа со списками
Предикат, позволяющий вычислить длину списка.
length([], 0). /* в пустом списке элементов нет */
length([_|T], L) :–
length(T, L_T), /* L_T — количество элементов в хвосте */
L = L_T + 1. /* L — количество элементов исходного списка */
Предикат, позволяющий проверить принадлежность элемента списку (первый аргумент — искомое значение, второй — список, в котором производится поиск).
member(X,[X|_]). /* X — первый элемент списка */
member(X,[_|T]) :–
member(X,T). /* X принадлежит хвосту T*/
Предикат, позволяющий соединить два списка в один. Первые два аргумента предиката будут представлять соединяемые списки, а третий — результат соединения.
conc([ ], L, L). /* при присоединении пустого списка к списку L получим список L */
conc([H|T], L, [H|T1]) :–
conc(T,L,T1). /* соединяем хвост и список L, получаем хвост результата */[43]
Basic (Бейсик) создавался в 60-х годах ХХ века, в качестве учебного языка и очень прост в изучении. По популярности занимает первое место в мире. REM – оператор комментария язык программы. Все что следует после этого, оператора до конца строки пропускается компилятором и предназначено исключительно для человека, т.е. здесь писать можно что угодно. Удобно использовать комментарий в начале программы для указания её названия и назначения[44].
Пример:
REM Это комментарий
можно и так:
' Это тоже комментарий
CLS – оператор очистить экран. Вся информация, которая была на экране, стирается.
PRINT[45] – оператор вывода. Общий вид оператора: PRINT “формат:”, список или PRINT х1; х2;…
пример: PRINT "Привет! Меня зовут Саша."
На экран будет выведено сообщение: Привет! Меня зовут Саша.
INPUT – оператор ввода. Используется для передачи в программу каких-либо значений. Общий вид оператора: INPUT ; х1; х2;…
пример: INPUT а
На экране появится приглашение ввести данные (появится знак "?") и компьютер будет ждать их ввода. Для ввода необходимо ввести данные с клавиатуры и нажать ввод (enter)[46].
INPUT "Введите число а: ", а
Компьютер выведет на экран: 'Введите число а:' и будет ждать ввода данных.
DIM – оператор описания типа переменной. Одномерный массив имеет вид DIM(d), а двумерный DIM(n,m).
Под переменной языках программирования понимают программный объект (число, слово, часть слова, несколько слов, символы), имеющий имя и значение, которое может быть получено и изменено программой[47].
Переменная - это имя участка в памяти, в котором в определённый момент времени может быть только одно значение, название "переменная" подразумевает, что содержимое этого участка может изменяться. В качестве имен переменных могут быть латинские буквы с индексами. Причем может быть не одна буква, а несколько[48].
Костанты – данные, значение которых не меняется во время работы программы.
Пример: DIM a, b, chislo1 AS INTEGER, где Integer – целые числа от -32768 до 32768
Если в программе используются переменные, не описанные с помощью оператора DIM, то компьютер будет рассматривать их как универсальные переменные. Это может привести к неэффективному использованию оперативной памяти. К тому же, такие программы не всегда легки для восприятия - плохо читаемы[49]. Для задания значения переменной служит оператор присваивания. Он записывается так:
LET переменная = значение (или просто: переменная = значение)
Пример:
LET a = 3
chislo1 = 15
END – оператор конца программы.
Рисунок 6. Арифметические операции на языке Basic[50]
Рисунок 7. Математические функции на языке Basic[51]
ЗАКЛЮЧЕНИЕ
Подводя итог курсовой работы, хочется повториться, что технический процесс не стоит на месте.
В связи с этим идет рост программирования, как в языках программирования высокого уровня, так и других языках. Сейчас очень много сфер где требуются программы для работы, различных устройств, например: БПЛА, в настоящее время набирают такие масштабы, что даже МЧС России их готовы закупать вместе программным обеспечением. Так же, собираются запускать более 1 вида автомобилей без водителя, управление которого планируется, путем программного обеспечения или управления удаленно и все это благодаря тому, что языки программирования стали изучать намного серьёзнее, чем в прошлом веке.
Рассмотрев более 10-ти языков программирования, я вот до сих не определился с каким языком, хотел бы продолжить общение и в дальнейшем работать на нем, т.к. интересных языков много.
СПИСОК ЛИТЕРАТУРЫ
- Блауг М. Бэббедж Чарльз. 100 великих экономистов до Кейнса / М. Блауг. - СПб.: Экономикус, 2008. С. 169
- Абельсон Х., Сассман Д.Д., при участии Сассман Дж.. Структура и интерпретация компьютерных программ / Х. Абельсон, Д.Д. Сассман, при участии Дж. Сассман –М.: Добросвет, 2004. - С. 368
- Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. — 288 с.
- Ашарина И.В. Основы программирования на языках C и C++ / И.В. Ашарина. - М.: ГЛТ, 2012. – С.208
- Баррон Д. Введение в языки программирования / Д. Баррон - М.: Мир, 2015. – С.192
- Братко И.А. Алгоритмы искусственного интеллекта на языке PROLOG / И.А. Братко / И.А. Братко. – М.: Вильямс, 2004 . – С.289.
- Брент Уэлш, Кен Джонс, Джеффри Хоббс. Практическое программирование на Tcl и Tk / Брент Уэлш, Кен Джонс, Джеффри Хоббс. – М.: Вильямс, 2004 С.269
- Голицына О.Л. Партыка Т.Л. Попов И.И. Языки программирования. Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - М.: ИНФРА-М, 2015. С.178
- Гринчишин Я. Т., Ефимов В. И., Ломакович А. Н. Алгоритмы и программы на бейсике. / Я.Т. Гринчишин, В.И. Ефимов, А.Н. Ломакович – М.: Уч. Пос., 2014. - 160 c
- Жарков В. А. Основы программирования игр и приложений на Visual Basic и DirectX 10 / В.А. Жарков, - М.: Уч.пос., 2017. - 524 c.
- Зиборов В.Т. Visual Basic на примерах / В.Т. Зиборов – Спб.: БХВ-Петербург, 2017. - 961 c.
- Зыков С.В. Введение в теорию программирования. Функциональный подход. / С.В. Зыков –М.: Издательство Учебный Центр БИТ Microsoft МИФИ, 2015. С.275
- Зюзысов В. М. Математическое введение в декларативное программирование: Уч. пособие. — Томск: ТГУ, 2013. - С.83
- Иванова Г. С., Ничушкина Т. Н. Объектно-ориентированное программирование: учебник / Г. С. Иванова, Т. Н. Ничушкина — М.: Изд-во МГТУ им. Н. Э. Баумана, 2014. С.455
- Карпов Ю.А. Теория и технология программирования. Основы построения трансляторов / Ю.А. Карпов. - СПб.: BHV, 2012. – С.272
- Климов А.В. Занимательное программирование на Visual Basic / А.В. Климов - М.: БХВ-Петербург, 2016. - 2474 c.
- Кузнецов М.В. PHP 5 / М.В. Кузнецов. - СПб.: БХВ-Петербург, 2006. С.346
- Котеров Д.В. PHP 5 / Д.В. Котеров.- СПб.: БХВ-Петербург, 2006. С.128
- Лаптев В.В.: С++. Объектно-ориентированное программирование. - СПб.: Питер, 2008 с.216
- Лори Уоллмарк. Ада Байрон Лавлейс - первый программист. / Уоллмарк Л. - М.: Пешком в историю, 2017. С.40
- Могилев А.В., Пак Н.И., Хеннер Е.К.Информатика: Учебное пособие для вузов / А.В.Могилев, Н.И.Пак, Е.К.Хеннер.. - М.: Изд. центр "Академия", 2015.с 427
- Мурашко И.А., Марина И.М. Методическое пособие по курсу "Функциональное и логическое программирование" / И.А. Мурашко, И.М. Марина - Мн.: БГУИР, 2002. - С. 427
- Павловская Т.А.: С#. Программирование на языке высокого уровня. - СПб.: Питер, 2016 - с.304
- Питер Друкер, Бизнес и инновации/ Д. Питер - М.: Вильямс, 2014. С.179
- Пратт Т.М., Зелковиц М.Я. Языки программирования. Разработка и реализация / Т.М. Пратт, М.Я. Зелковиц. – Спб.: Издательство Питер, 9-е издание, 2017. С.246
- Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль / Г.Л. Семашко, А.И. Салтыков. - М.: Наука, 2014. – С.128.
- Симонович С.В. Информатика: Базовый курс / С.В. Симонович – Спб.: 2014. – С.640
- Симонович С.В. Информатика: Базовый курс / С.В. Симонович. – Спб.: Питер, 2014. – 640 с.: ил. 2.
- Учебное пособие. – М.: Издательский отдел факультета ВМК МГУ имени М.В.Ломоносова (лицензия ИД № 05899 от 24.09.2001); МАКС Пресс, 2016 – 112 с
- Цуканова Н.И., Дмитриева Т.А.. Теория и практика логического программирования на языке Visual Prolog 7. Учебное пособие для вузов. / Н.И. Цуканова, Т.А. Дмитриева. — М.: РиС, 2015. — 232 c.
- Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. – М.: Люберцы: Юрайт, 2016. – С.219
- Шварц Р.Л., Феникс Т., Фой Б. Д. Learning Perl / Шварц Р.Л., Феникс Т., Фой Б. Д. - Символ-Плюс, 2016. С.384
- Шрайнер П. А. Основы программирования на языке Пролог : курс лекций. Лекция 1 / П. А. Шрайнер. - М. : Интернет - Ун-т Информ. Технологий, 2005. -С.176
- Экспозиция Deutsches Museum, Munchen, 2005
- Якубайтис Э.А. Информационные сети и системы: Справочная книга / Э.А. Якубайтис -М.: Финансы и статистика, 2016. С.322
- McCartney S. ENIAC: the triumphs and tragedies of the world’s first computer - .:N. Y., 2015. С.336.
Таблица 2. Индекс TIOBE за август 2018 года[52]
Август 2018 |
Август 2017 |
Изменения |
Язык программирования |
Рейтинги |
Изменения |
1 |
1 |
Ява |
16,881% |
+ 3,92% |
|
2 |
2 |
С |
14,966% |
+ 8,49% |
|
3 |
3 |
C ++ |
7,471% |
+ 1,92% |
|
4 |
5 |
питон |
6,992% |
+ 3,30% |
|
5 |
6 |
Visual Basic .NET |
4,762% |
+ 2,19% |
|
6 |
4 |
C # |
3,541% |
-0,65% |
|
7 |
7 |
PHP |
2,925% |
+ 0,63% |
|
8 |
8 |
JavaScript |
2,411% |
+ 0,31% |
|
9 |
- |
SQL |
2,316% |
+ 2,32% |
|
10 |
14 |
язык ассемблера |
1,409% |
-0,40% |
|
11 |
11 |
стриж |
1,384% |
-0,44% |
|
12 |
12 |
Delphi / Object Pascal |
1,372% |
-0,45% |
|
13 |
17 |
MATLAB |
1,366% |
-0,25% |
|
14 |
18 |
Objective-C |
1,358% |
-0,15% |
|
15 |
10 |
Рубин |
1,182% |
-0,78% |
|
16 |
9 |
Perl |
1,175% |
-0,82% |
|
17 |
16 |
Идти |
0,996% |
-0,65% |
|
18 |
15 |
р |
0,965% |
-0,80% |
|
19 |
13 |
Visual Basic |
0,922% |
-0,89% |
|
20 |
21 |
|
PL / SQL |
0,702% |
-0,51% |
-
Питер Друкер, Бизнес и инновации/ Д. Питер - М.: Вильямс, 2014. С.17-19 ↑
-
Блауг М. Бэббедж Чарльз. 100 великих экономистов до Кейнса / М. Блауг. - СПб.: Экономикус, 2008. С.9-15 ↑
-
Экспозиция Deutsches Museum, Munchen, 2005 ↑
-
Лори Уоллмарк. Ада Байрон Лавлейс - первый программист. / Уоллмарк Л. - М.: Пешком в историю, 2017. С.5-7 ↑
-
Питер Друкер, Бизнес и инновации/ Д. Питер - М.: Вильямс, 2014. С.29-32 ↑
-
McCartney S. ENIAC: the triumphs and tragedies of the world’s first computer - .:N. Y., 2015. С. 182-183 ↑
-
Голицына О.Л. Партыка Т.Л. Попов И.И. Языки программирования. Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - М.: ИНФРА-М, 2015. С.22-24 ↑
-
Могилев и др. Информатика: Учебное пособие для вузов / А.В.Могилев, Н.И.Пак, Е.К.Хеннер; Под ред. Е.К. Хеннера. - М.: Изд. центр "Академия", 2015.с 72 ↑
-
-11 Якубайтис Э.А. Информационные сети и системы: Справочная книга / Э.А. Якубайтис -М.: Финансы и статистика, 2016. С.15 ↑
-
Пратт Т.М., Зелковиц М.Я. Языки программирования. Разработка и реализация / Т.М. Пратт, М.Я. Зелковиц. – Спб.: Издательство Питер, 9-е издание, 2017. С.24 ↑
-
Якубайтис Э.А. Информационные сети и системы: Справочная книга / Э.А. Якубайтис -М.: Финансы и статистика, 2016. С.17 ↑
-
Могилев А.В., Пак Н.И., Хеннер Е.К.Информатика: Учебное пособие для вузов / А.В.Могилев, Н.И.Пак, Е.К.Хеннер. - М.: Изд. центр "Академия", 2015.с 427 75 ↑
-
Зыков С.В. Введение в теорию программирования. Функциональный подход. / С.В. Зыков –М.: Издательство Учебный Центр БИТ Microsoft МИФИ, 2015. С.275 58-59 ↑
-
Пратт Т.М., Зелковиц М.Я. Языки программирования. Разработка и реализация / Т.М. Пратт, М.Я. Зелковиц. – Спб.: Издательство Питер, 9-е издание, 2017. С.38-41 ↑
-
Баррон Д. Введение в языки программирования / Д. Баррон - М.: Мир, 2015. – С.32 ↑
-
Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль / Г.Л. Семашко, А.И. Салтыков. - М.: Наука, 2014. – С.33 ↑
-
Карпов Ю.А. Теория и технология программирования. Основы построения трансляторов / Ю.А. Карпов. – Спб.: BHV, 2012. – С.54-55 ↑
-
Ашарина И.В. Основы программирования на языках C и C++ / И.В. Ашарина. - М.: ГЛТ, 2012. – С. 28 ↑
-
Иванова Г. С., Ничушкина Т. Н. Объектно-ориентированное программирование: учебник / Г. С. Иванова, Т. Н. Ничушкина — М. : Изд-во МГТУ им. Н. Э. Баумана, 2014. - С. 7-8 ↑
-
Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. - Люберцы: Юрайт, 2016. – С.8 ↑
-
Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. - Люберцы: Юрайт, 2016. – С.13-15 ↑
-
Иванова Г. С., Ничушкина Т. Н. Объектно-ориентированное программирование: учебник / Г. С. Иванова, Т. Н. Ничушкина — М. : Изд-во МГТУ им. Н. Э. Баумана, 2014. - С. 9-10 ↑
-
Лаптев В.В.: С++. Объектно-ориентированное программирование. - СПб.: Питер, 2008. С.64 ↑
-
Зюзысов В. М. Математическое введение в декларативное программирование: Уч. пособие. — Томск: ТГУ, 2013. – С. 24 ↑
-
Предика́т — это утверждение, высказанное о субъекте. Субъектом высказывания называется то, о чём делается утверждение. ↑
-
Павловская Т.А.: С#. Программирование на языке высокого уровня. - СПб.: Питер, 2016. С.25-26 ↑
-
Шварц Р.Л., Феникс Т., Фой Б. Д. Learning Perl / Шварц Р.Л., Феникс Т., Фой Б. Д. - Символ-Плюс, 2016. – С.37 ↑
-
Шварц Р.Л., Феникс Т., Фой Б. Д. Learning Perl / Шварц Р.Л., Феникс Т., Фой Б. Д. - Символ-Плюс, 2016. – С.39 ↑
-
Котеров Д.В. PHP 5 / Д.В. Котеров.- СПб.: БХВ-Петербург, 2006. С.128 23-26 ↑
-
Кузнецов М.В. PHP 5 / М.В. Кузнецов. - СПб.: БХВ-Петербург, 2006. С.56-57, 60 ↑
-
Брент Уэлш, Кен Джонс, Джеффри Хоббс. Практическое программирование на Tcl и Tk / Брент Уэлш, Кен Джонс, Джеффри Хоббс. – М.: Вильямс, 2004 С.15-22 ↑
-
Брент Уэлш, Кен Джонс, Джеффри Хоббс. Практическое программирование на Tcl и Tk / Брент Уэлш, Кен Джонс, Джеффри Хоббс. – М.: Вильямс, 2004 С.36-42 ↑
-
Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. - С.18-19 ↑
-
Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. - С.24 ↑
-
Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. - С.24-25 ↑
-
Учебное пособие. – М.: Издательский отдел факультета ВМК МГУ имени М.В.Ломоносова (лицензия ИД № 05899 от 24.09.2001); МАКС Пресс, 2016 – 112 с ↑
-
Мурашко И.А., Марина И.М. Методическое пособие по курсу "Функциональное и логическое программирование" / И.А. Мурашко, И.М. Марина - Мн.: БГУИР, 2002. - С. 24 ↑
-
Мурашко И.А., Марина И.М. Методическое пособие по курсу "Функциональное и логическое программирование" / И.А. Мурашко, И.М. Марина - Мн.: БГУИР, 2002. - С. 27 ↑
-
Абельсон Х., Сассман Д.Д., при участии Сассман Дж.. Структура и интерпретация компьютерных программ / Х. Абельсон, Д.Д. Сассман, при участии Дж. Сассман –М.: Добросвет, 2004. - С. 36 ↑
-
Шрайнер П. А. Основы программирования на языке Пролог: курс лекций. Лекция 1 / П. А. Шрайнер. - М. : Интернет - Ун-т Информ. Технологий, 2005. -С.26-28 ↑
-
Братко И.А. Алгоритмы искусственного интеллекта на языке PROLOG / И.А. Братко / И.А. Братко. – М.: Вильямс, 2004 . – С.289. стр.28-30 ↑
-
Цуканова Н.И., Дмитриева Т.А.. Теория и практика логического программирования на языке Visual Prolog 7. Учебное пособие для вузов. / Н.И. Цуканова, Т.А. Дмитриева. — М.: РиС, 2015. — С.44-46. ↑
-
Симонович С.В. Информатика: Базовый курс / С.В. Симонович. – Спб.: Питер, 2014. – С.62. ↑
-
Жарков В. А. Основы программирования игр и приложений на Visual Basic и DirectX 10 / В.А. Жарков, - М.: Уч.пос., 2017. – С.34-35. ↑
-
Гринчишин Я. Т., Ефимов В. И., Ломакович А. Н. Алгоритмы и программы на бейсике. / Я.Т. Гринчишин, В.И. Ефимов, А.Н. Ломакович. – М.: Уч. Пос., 2014. – С.54. ↑
-
Симонович С.В. Информатика: Базовый курс / С.В. Симонович. – Спб.: 2014. – С.28. ↑
-
Зиборов В.Т. Visual Basic на примерах / В.Т Зиборов. – Спб.: БХВ-Петербург, 2017. – С.64. ↑
-
Климов А.В. Занимательное программирование на Visual Basic / А.В. Климов - Спб.: БХВ-Петербург, 2016. – С.232-233. ↑
-
Гринчишин Я. Т., Ефимов В. И., Ломакович А. Н. Алгоритмы и программы на бейсике. / Я.Т. Гринчишин, В.И. Ефимов, А.Н. Ломакович – М.: Уч. Пос., 2014. – С.56-57. ↑
-
Зиборов В.Т. Visual Basic на примерах / В.Т Зиборов. – Спб.: БХВ-Петербург, 2017. – С.36. ↑
-
https://www.tiobe.com/tiobe-index/ Статистические данные с известного сайта для программистов и аналитиков. ↑
- Процессы принятия решений на предприятии
- Сущность, задачи, функции и потери систем управления материальными потоками
- Комплексное изучение средств и методов защиты информации от несанкционированного доступа на примере организации ТЭК
- Теоретические основы анализа внешней и внутренней среды
- Необходимая оборона: понятия и условия правомерности действий
- Теоретические основы планирования потребности в материально-технических ресурсах
- Комплект мебели в стиле поп-арт для детской комнаты.
- Косвенные налоги, их место в налоговой системе Российской Федерации
- Теоретические аспекты товарного ассортимента
- Адаптационный потенциал сотрудников организаций.
- Учетная политика как инструмент формирования финансового результата
- Теоретические основы формирования качества продовольственных товаров