- 9. Языки программирования
- 9.1. Основные понятия и элементы языков программирования
- 2.1. Основные понятия языков программирования.
- 2.2. Структуры и типы данных языка программирования
- 2.3. Ада Лавлейс – первый в мире программист
- 2.3.1. Краткая историческая справка
- Лекция 8. Языки программирования
- Понятие о языках программирования
9. Языки программирования
9.1. Основные понятия и элементы языков программирования
Язык программирования – это набор букв, слов, чисел и мнемонических сокращений, используемых при записи компьютерной программы, а также правила записи программы из элементов языка (его синтаксис).
Обычный разговорный (естественный) язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Компьютерный (формальный) язык программирования содержит подобные же элементы, только слова называют элементарными конструкциями, словосочетания – выражениями, предложения – операторами. Язык программирования (как и любой другой язык), образуют три его составляющие: алфавит, синтаксис и семантика.
Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т. д.), которые могут быть использованы при написании программы.
Синтаксис – правила построения из символов алфавита специальных конструкций, с помощью которых составляется команда. Множество правил порождения элементов языка программирования, выражений и предложений называют грамматикой формального языка или формальной грамматикой.
Семантика – система правил толкования конструкций языка. Таким образом, программа составляется с помощью соединения символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики.
У формального языка много общего с естественным языком, предложения которого также строятся в соответствии с грамматическими правилами. Однако грамматика естественного языка, подобно наукам о природе с известной степенью достоверности описывает и обобщает результаты наблюдений за естественным языком как за явлением окружающего мира. Характерные для грамматики естественных языков исключения из правил свидетельствуют о том, что зафиксированная в грамматике языка система правил не может в точности описать все закономерности развития языка.
Формальные языки проще естественных языков. Они создаются одновременно с системой правил построения слов и предложений. Исключения из правил в формальном языке могут свидетельствовать лишь о противоречивости и некорректности системы грамматических правил.
Иными словами, язык программирования имеет жёсткую структуру. По русски (на естественном языке) мы можем одну и ту же мысль выразить по-разному: «завтра идти на работу», «на работу идти завтра» или «завтра на работу идти». Эмоциональные оттенки этих фраз будут немного отличаться благодаря смысловому ударению. Однако, в программах такие вольности не допускаются. Если в любой конструкции языка программирования изменить порядок следования элементов, конструкция станет ошибочной.
Грамматические правила можно записывать различными способами. Грамматика естественного языка традиционно описывается в виде грамматических правил на естественном языке. Грамматика формального языка также может быть описана в виде множества правил на естественном языке. Но обычно для этого используют специальные средства записи: формулы и схемы.
Для многих широко распространённых языков программирования созданы международные стандарты. Специальные организации проводят регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.
Основными элементами (понятиями) языков программирования являются следующие.
Имена (идентификаторы) – последовательность символов для обозначения объектов программы (переменных, массивов, функций и дp.).
Операции. Существуют следующие типы операций:
- арифметические операции: сложение, обозначается символом “+”; вычитание, обозначается символом “–”; умножение, обозначается символом “*”; деление, обозначается символом “/” и дp.;
- логические операции: операции “логическое и”, “логическое или”, “логическое не” и др.;
- операции отношения: меньше, обозначается символом “”; меньше или равно, обозначается символами “=”; равно, обозначается символом “=”; не равно, обозначается символами “<>”.
- операция конкатенации символьных значений дpуг с другом, изображается знаком «+».
- числовые: (7.5, 12;)
- логические: (true(истина), false(ложь));
- символьные: («А», «+»; и т.п.)
- строковые: (например «abcde», «информатика»).
- целые,
- вещественные,
- логические,
- символьные
- строковые.
- арифметические;
- логические;
- строковые.
2.1. Основные понятия языков программирования.
Любой язык программирования должен включать следующие понятия:
алфавит– множество символов, с помощь которых записывается текст программы;
оператор – синтаксическая конструкция, предназначенная как для записи алгоритмических действий по преобразованию данных, так и для задания порядка выполнения других действий;
идентификатор (имя) – специальная неделимая группа символов из алфавита языка, используемая при записи операторов и ряда других элементов программы;
константа – идентификатор, имеющий постоянное значение, которое может быть в дальнейшем использовано в программе; изменять значение констант запрещается;
метка – элемент программы, предназначенный для указания в программе места, на которое затем можно передать управление.
переменная – элемент данных, с которыми производятся действия; переменная обозначается идентификатором; любая переменная характеризуется таким важным понятием, как
тип – множество значений переменной и, как следствие, множество допустимых операций над этой переменной;
подпрограмма – часть программы в виде отдельной синтаксической единицы, в которой описываются определенные действия; каждая подпрограмма имеет свое имя; подпрограммы, как правило, подразделяются на процедуры и функции;
выражение – элемент программы, содержащий последовательность констант и (или) переменных, соединенных знаками операций, либо включающий одну или несколько функций, аргументом которых может быть другое выражение; константы, переменные и выражения часто называют операндами.
2.2. Структуры и типы данных языка программирования
Любая программа на процедурном языке программирования, как правило, оперирует с числовыми данными, поэтому любой язык программирования содержит числовые типы, которые подразделяются на целые и вещественные типы. Ряд языков обладает по одному или двум представителям целых и вещественных типов (например, в Фортране-77 насчитывается три целых и два вещественных типа – с обычной и одинарной точностью, а в языке Object Pascal – 9 целых и 7 вещественных типов). Каждый тип характеризуется объемом занимаемой памяти и множеством допустимых значений операндов для данного типа.
Современные языки программирования содержат, кроме того, логический, символьный и строковый (текстовый) типы. Практически ни один язык программирования не обходится без массивов. Язык Pascal весьма богат множеством стандартных типов и позволяет программистам создавать свои, пользовательские, типы.
2.3. Ада Лавлейс – первый в мире программист
2.3.1. Краткая историческая справка
Августа Ада Кинг Лавлейс (англ. Augusta Ada King Byron, Countess of Lovelace), английский математик.
Род деятельности: математика
Дата рождения: 10 декабря 1815 г.
Место рождения: Лондон, Великобритания.
Дата смерти: 27 ноября 1852 г.
Авгу́ста А́да Кинг (урождённая Ба́йрон), графиня Ла́влейс (англ. Augusta Ada King Byron, Countess of Lovelace, обычно упоминается просто Ада Лавлейс; 10 декабря 1815, Лондон, Великобритания — 27 ноября 1852, там же) — английский математик. Известна прежде всего созданием описания вычислительной машины, проект которой был разработан Чарльзом Бэббиджем. Составила первую в мире программу (для этой машины). Ввела в употребление термины «цикл» и «рабочая ячейка».
Лекция 8. Языки программирования
Компьютерная программа представляет собой логически упорядоченную последовательность команд, предназначенных для управления компьютером. Процессор компьютера исполняет программы, написанные на машинным кодом. Писать программы в машинных кодах вручную очень сложно, причем с ростом размера программы эта задача усложняется. В компьютерах первого поколения использовались программы, написанные в машинных кодах, причем для каждого компьютера существовал свой собственный машинный код. В тот период (начало 50-х гг.) средства программирования и программное обеспечение только зарождались и были еще не развиты. Для того чтобы сделать программу читабельной и иметь возможность следить за ее смысловой структурой, разработали символический язык ассемблер, близкий к машинному (конец 50-х – начало 60-х гг.), в котором появилось понятие переменной. Ассемблер стал первым полноценным языком программирования. Благодаря этому заметно уменьшилось время разработки и возросла надежность программ. Для записи кодов операций и обрабатываемой информации в ассемблере используются стандартные обозначения, позволяющие записывать числа и текст в общепринятом виде, для кодов команд приняты мнемонические обозначения, например MOV AX, BX (переместить машинное слово из регистра AX в регистр BX), ADD AX, CX (сложить регистр AX c CX), JMP loop1 (безусловный переход не метку loop1) и др. Для обозначения величин, размещаемых в памяти, можно применять имена констант. После ввода программы ассемблер сам заменяет символические имена на адреса памяти, а символические коды команд на числовые. Использование ассемблера сделало процесс программирование более наглядным. Дальнейшее развитие этой идеи привело к созданию языков программирования высокого уровня, в которых длинные и сложные последовательности машинных кодов были заменены одним единственным обозначающим их словом – операторы.
Понятие о языках программирования
Языки программирования – это формальные языки, специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный» язык (русский, английский и т.д.), имеет алфавит, словарный запас свои грамматику и синтаксис, а также семантику.
Алфавит – фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.
Синтаксис – система правил, определяющих допустимые конструкции языка программирования из букв алфавита.
Семантика – система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных.
Взаимодействие синтаксических и семантических правил определяют те или иные понятия языка, например, операторы, идентификаторы, переменные, функции и процедуры, модули и т.д. В отличие от естественных языков правила грамматики и семантики для языков программирования’, как и для всех формальных языков, должны быть явно, однозначно и четко сформулированы.
Синтаксис – описывает структуру программ как наборов символов (обычно говорят — безотносительно к содержанию).
Пример синтаксической ошибки : употребление оператора цикла For без To или Next, или отсутствие знака равенства в приведенной на рисунке программе.
Синтаксические ошибки распознаются встроенным синтаксическим анализатором.
Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.
Семантика – определяет смысловое значение предложений алгоритмического языка.
Пример семантической ошибки :
1) For i As Integer = 1 To 10 Step -2
2) Если надо вычислить , то запись x = a / b * c содержит семантическую ошибку, т.к. приоритет операций деления и умножения одинаков, то вначале а делиться на b , а затем полученный результат умножает на с .
Поиск этих ошибок происходит с помощью логического анализа работы программы и ее тестирования.
Классы языков программирования
- Императивное
- Декларативное
- функциональное
- логическое
- Процедурное
- Объектно-ориентированное
- Неструктурное
- Структурное
- Языки низкого уровня
- Языки высокого уровня
- алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;
- набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
- конструкции операторов задаются в удобном для человека виде;
- поддерживается широкий набор типов данных.
- Фортран – старейший язык программирования, предназначен для решения математических задач.
- Кобол – для решения экономических задач
- Delphi – универсальный.
- Бейсик , Pascal – для обучения.
- Java (джава) – язык сетевого программирования.
- Для системного программирования наиболее подходят языки C, C++, C#. Cи – язык разработанный для написания операционной системы UNIX (обычно ядро операционных систем писали на Assembler ).