Что такое семантика языка программирования
Синтаксис и семантика языка программирования
Любой язык, в том числе и язык программирования, подчиняется ряду правил. Их принято разделять на правила, определяющие синтаксис языка, и правила, определяющие его семантику.
Синтаксис языка — совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму.
Семантика языка — совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содержание.
Языки программирования относятся к группе формальных языков, для которых в отличие от естественных языков однозначно определены синтаксис и семантика. Описание синтаксиса языка включает определение алфавита и правил построения различных конструкций языка из символов алфавита и более простых конструкций. Для этого обычно используют форму Бэкуса-Наура (БНФ) или синтаксические диаграммы. Описание конструкции в БНФ состоит из символов алфавита языка, названий более простых конструкций и двух специальных знаков:
· «::=»— читается как «может быть заменено на»,
При этом символы алфавита языка, которые часто называют терминальными символами или терминалами, записывают в неизменном виде. Названия конструкций языка (нетерминальные символы или нетерминалы), определяемых через некоторые другие символы, при записи заключают в угловые скобки (« »).
Пример БНФ
БНФ, могут выглядеть следующим образом:
::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Для отображения того, что конструкция может включать неограниченное количество цифр, использовано правило с левосторонней рекурсией. Многократное применение этого правила позволяет построить целое число с любым количеством цифр.
Для описания синтаксических конструкций своего языка Н. Вирт использовал именно синтаксические диаграммы, поэтому в тех случаях, когда словесное описание синтаксиса конструкции длинно и нечетко, мы будем использовать синтаксические диаграммы.
Алфавит языка программирования Borland Pascal 7.0 включает:
1. строчные, прописные буквы латинского алфавита (a..z, A..Z) и знак подчеркивания ( _ ), который также во многих случаях считается буквой (строчные и прописные буквы не различаются);
3. специальные знаки, состоящие из одного и двух символов:
4. служебные слова (эти сочетания считаются единым целым и их нельзя использовать в программе в другом качестве): (примеры)
Эта конструкция используется во многих более сложных конструкциях для обозначения имен программных объектов (полей данных, процедур, функций и т. п.).
В Borland Pascal идентификатор представляет собой последовательность букв латинского алфавита (включая символ подчеркивания) и цифр, которая обязательно начинается с буквы.
Синтаксическая диаграмма идентификатора приведена на рис. 2.2. Остальные конструкции будут рассмотрены в последующих разделах. Семантику языка программирования закладывают в его компилятор. Таким образом, синтаксически корректная программа, написанная на языке программирования, после преобразования ее в последовательность машинных команд обеспечит выполнение компьютером требуемых операций.
Структура программы
Программа на Borland Pascal состоит из трех частей: заголовка, раздела описаний и раздела операторов.
Пример программа, которая реализует алгоритм Евклида для определения наибольшего общего делителя двух натуральных чисел.
Write (‘Введите два натуральных числа:’);
if a>b then a:=a-b <если a>b, тогда a:=a-b>
Writeln(‘Hauбoльшuй общий делитель равен ’,a);
Программа названа «example». Раздел описаний в данном случае включает только описание переменных (см. параграф 2.3). Раздел операторов содержит операторы ввода исходных данных, вычислений и вывода результатов. Начнем рассмотрение особенностей программирования на языке Borland Pascal с проблемы описания данных.
Семантика (программирование)
Сема́нтика в программировании — дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей. В качестве инструментов построения таких моделей могут использоваться различные средства, например, математическая логика, λ-исчисление, теория множеств, теория категорий, теория моделей, универсальная алгебра. Формализация семантики языка программирования может использоваться как для описания языка, определения свойств языка, так и для целей формальной верификации программ на этом языке программирования.
Подходы
См. также
Литература
Смотреть что такое «Семантика (программирование)» в других словарях:
Семантика вычислений — Семантика вычислений это определение процесса вычисления в виде последовательности правил перезаписи, которое вместе с представлением о сходимости впервые были использованы в контексте исчисления. Сходимость важна также в системах… … Википедия
Семантика (значения) — Семантика (от др. греч. σημαντικός обозначающий): В Викисловаре есть статья « … Википедия
ПРОГРАММИРОВАНИЕ ТЕОРЕТИЧЕСКОЕ — математическая дисциплина, изучающая математич. абстракции программ, трактуемых как объекты, выраженные на формальном языке, обладающие определенной информационной и логич. структурой и подлежащие исполнению на автоматич. устройствах. П. т.… … Математическая энциклопедия
Нейро-лингвистическое программирование — Нейролингвистическое программирование (НЛП) (англ. Neuro linguistic programming) (также встречается вариант «нейро лингвистическое программирование») комплекс моделей, техник и операционных принципов (контекстуально зависимых убеждений),… … Википедия
Доказательное программирование — использовавшаяся в 1980 х годах в академических кругах технология разработки программ для ЭВМ с доказательствами правильности доказательствами отсутствия ошибок в программах (понимая, в рамках данной теории, ошибки как несоответствия между… … Википедия
Нейролингвистическое программирование — Запрос «НЛП» перенаправляется сюда; см. также другие значения. Не следует путать с нейролингвистикой. Возможно, эта статья содержит оригинальное исследование. Добавьте ссылки … Википедия
Общая семантика — Для термина «Семантика» см. другие значения. Общая семантика (англ. General Semantics, фр. sémantique от греч. σημαντικός обозначающий) эмпирическая дисциплина, представляющая собой систематическую методологию по… … Википедия
Присваивание (программирование) — Содержание 1 Определение присваивания 1.1 Алгоритм работы оператора присваивания … Википедия
Присвоение (программирование) — Содержание 1 Определение присваивания 1.1 Алгоритм работы оператора присваивания … Википедия
Нейролингвистическое программирование: Библиография — Одна из статей на тему Нейролингвистическое программирование (НЛП) Основные статьи НЛП · Принципы · НЛП психотерапия · История Новый код · НЛП и наука · Библиография · Словарь Принципы и методы Моделирование · Метамодель · Милтон модель Позиции… … Википедия
Что такое семантика языка программирования
Понятие семантики в информатике — это формализация значений структур программных языков через их формальные математические модели.
Введение
Термин семантика происходит из языка Древней Греции, где sēmantikos означало «значительный». В современный обиход его ввёл французский учёный Мишель Бреаль.
Под семантикой понимается наука, изучающая смысловое значение слов (семантика лексики) и предложений, то есть семантические текстовые структуры и фразы.
Семантика сродни таким дисциплинам, как семиология, основы логики и другие. Комплект терминов, который имеет общий фактор семантики, является семантическим полем. Семантика, как наука, занимается изучением лингвистических и философских смыслов языков, в том числе языков программирования. Она взаимосвязана со словами, фразами, символикой и всем тем, что они обозначают. Задачами трактовки языкового смысла обычно относились к сферам психологии, а не лингвистики. Но именно лингвистика занимается изучением трактовки различной символики и знаков, применяемых в разных общественных сферах при конкретных условиях и контексте. В письменности такие параметры как пунктуация, абзацы и общая структура, обладают семантическим содержанием. Формализованное представление анализа семантики тесно взаимосвязано с некоторыми другими научными сферами, такими как лексикология, синтаксис, прагматика, этимология и тому подобными.
Готовые работы на аналогичную тему
Понятие семантики в информатике
Семантические основы программных и других языков считаются одной из важнейших задач и сферой деятельности информатики. Информатика сформировала разные методы, описывающие с формальной стороны языки программирования, которые базируются на математической логике. Под семантикой в программировании понимается направление, которое изучает формальные значения структурных построений языков программирования при помощи выстраивания их формализованных математических моделей. Инструментом создания этих моделей служат математическая логика и другие разделы математики. Формальное описание семантики языка программирования возможно применять как для создания инструкций по применению языка, его свойствах, так и для формальной проверки правильности написания программ на данном программном языке. Под семантикой языка понимается смысл, который несут слова этого языка. Применительно к программированию это изначальный смысловой посыл операторов, базовых языковых конструкций и тому подобное. Например:
Рисунок 1. Пример. Автор24 — интернет-биржа студенческих работ
С логической точки зрения эти программные коды выполняют одинаковые действия и итоги их работы аналогичны. Но одновременно следует отметить, что по семантике это пара различных циклов. И ещё пример тегов:
Рисунок 2. Пример. Автор24 — интернет-биржа студенческих работ
Их запись смотрится абсолютно схожей, а по семантике значение первого тега — это письмо курсивом, а второй означает логическое выделение.
Операционная семантика применяется для синтаксических терминов языка. Она изучает текстовую правильность определения функций, которые обеспечивают применение к аргументу, а не в математической трактовке понимания термина функции. Можно выделить следующие типы операционной семантики:
Семантика аксиоматическая. Семантику всех синтаксических языковых построений возможно представить как некоторый комплект аксиом или законов вывода, который применяется, чтобы вывести итоги работы таких построений. Для понимания смысла написанной программы, эти законы вывода и аксиомы нужно применять точно так, как при попытках доказать стандартные математические теоремы. Если предположить, что параметры входных переменных связаны определёнными ограничениями, то аксиомы и законы вывода, возможно использовать, чтобы получить ограничения на величины других переменных после окончания действия программного оператора. После выполнения программы, можно получить доказательства правильности итоговых результатов и того, что они входят в диапазон заявленных ограничений на них по отношению к входным данным. Другими словами, подтверждено, что выходные параметры являются значениями требуемой функции, которые определены исходя из значений входных параметров.
Семантика денотации. Она находит соответствие между выражениями в программе и действительными математическими объектами. Это означает, что выражения являются обозначением математических объектов. Очень важные, можно сказать пионерские итоги формирования денотационных семантик сделаны в публикациях Д. Скотта и К. Страчей в начале семидесятых годов прошлого века. Скотт впервые выстроил модель λ-исчисления, которая основана на представлениях об общем отчасти упорядоченном множестве. Чтобы реализовать такую модель, он применил функции, которые являются непрерывными на этом множестве.
Семантика интерпретаций. Это выражение операционной семантики конструкций в обозначениях языков программирования низкого уровня (вплоть до машинных кодов). Эта методика даёт возможность определять фрагменты программы, которые исполняются замедленно, и часто применяются в требуемых участках программных систем, чтобы оптимизировать программный код.
Семантика трансляций. Это выражение операционной семантики конструкций в обозначениях программных языков высокого уровня. Эта методика позволяет осуществлять изучение языка, на основании уже известных программисту и похожих языков.
Семантика трансформации. Это выражение операционной семантики языковых конструкций в обозначениях самого этого языка. Этот тип семантики выступает главной составляющей метапрограммирования.
Сегодняшние исследования в области семантики направлены главным образом на выстраивание систем, позволяющих доказать корректность и оптимальность работы создаваемых программных продуктов.
Имена или семантика классов в программировании
1. При программировании на придумывание имен может уходить ощутимо много времени. Казалось бы, такая маловажная вещь, как имя. И вот только сегодня я осознал, почему я трачу на это время, и почему, в итоге, это не напрасная трата времени.
Придумывание имени для модели, класса (предметной области) — важно и при проектировании, и при кодировании. Ведь имя несет с собой огромное облако ассоциаций из реальной жизни, из других областей.
Выбор имени — это один из этапов проектирования, когда какие-то сложные вещи — операции, объекты, отношения, скрываются уровнем абстракции. То есть скрываются за назначенным именем.
Если имя выбрано неудачно и оно с искажениями отражает то, чем является модель, оно будет мешать не только тем, кто в будущем будет читать код и документацию. Оно мешает непосредственно сейчас при проектировании, сбивает с толку. Неудачное имя мешает детализировать модель, мешает продумывать отношения этой модели с другими моделями или с пользователем.
Как вы яхту назовете, так она и поплывет.
2. Свежий личный пример. Пишу код для запуска предустановленных виртуальных машин у различных облачных провайдеров. Сначала у меня получилось, что моделью, то есть объектом, который юзер настраивает и создает пошаговой формой, в которой потом хранятся результаты установки, и с которой пользователь потом может выполнять другие действия, сначала стала Instance — экземпляр виртуальной машины. Такое название тянуло за собой лишние для этой задачи свойства — хранить историю изменения состояний, отслеживать актуальное состояние инстанса у провайдера и показывать его в юзерской панели. Их можно было не реализовывать, но они все-время маячат на фоне, т.к. это общепринятое поведение инстансов. В то время как исходная задача очень простая и минимальная — запустить инстанс, установить и настроить на нем софт, и выдать пользователю результат.
Название не нравится, модель сужена до LaunchedInstance, то есть «запущенный сейчас экземпляр виртуальной машины». Такое ограничение отсекает лишние понятия, но у этого имени все еще много ассоциаций, отвлекающих от основной короткой задачи.
В итоге правильное имя для модели стало Launch, т.е. непосредственно операция запуска. Методы и атрибуты класса остались остались прежними, изменилось только название. Но оно теперь содержит в себе только необходимый минимум и не несет избыточной смысловой нагрузки. После этого стало проще развивать логику работы класси и организовывать взаимодействие с другими компонентами проекта.
3. Продумывание имени — это непосредственная часть проектирования. И если вы не можете подобрать удачное слово и чувствуете неудовлетворенность, то скорее всего вы либо плохо продумали модель и она не реализует то, чем вы ее назвали, либо плохо продумали эту часть проекта и нужна вообще другая модель.
Время, потраченное на выбор имени, тратится не зря. Его можно воспринимать как самое ранее тестирование модели — некий интеграционный тест, проверяющий, правильно ли разработчик представляет задачу.
Семантика в программировании
Сема́нтика — в программировании — система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений алгоритмического языка.
См. также
* Семантическая паутина
* Семантика вычислений
Смотреть что такое «Семантика в программировании» в других словарях:
Семантика — в программировании система правил истолкования отдельных языковых конструкций. Семантика определяет смысловое значение предложений алгоритмического языка. По английски: Semantics См. также: Языки программирования Финансовый словарь Финам.… … Финансовый словарь
семантика — Раздел языкознания, исследующий с семиотических (семиотика – наука о знаках и знаковых системах) позиций смыслы и значения единиц языка (слов, предложений и др.), его выражений и логических форм, участвующих в его порождении, построении и… … Справочник технического переводчика
Семантика (программирование) — Для термина «Семантика» см. другие значения. Семантика в программировании дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей. В качестве инструментов… … Википедия
Семантика функции — Интерфейс прикладного программирования (англ. Application Programming Interface, API [эй пи ай]; по русски чаще произносят [апи]) набор готовых констант, структур и функций, используемых при программировании пользовательских приложений и… … Википедия
Присваивание — Присваивание механизм в программировании, позволяющий динамически изменять связи объектов данных (как правило, переменных) с их значениями. Строго говоря, изменение значений является побочным эффектом операции присвоения, и во многих… … Википедия
Присваивание (программирование) — Содержание 1 Определение присваивания 1.1 Алгоритм работы оператора присваивания … Википедия
Присвоение (программирование) — Содержание 1 Определение присваивания 1.1 Алгоритм работы оператора присваивания … Википедия
НЛП — Нейролингвистическое программирование (НЛП) (англ. Neuro linguistic programming) (также встречается вариант «нейро лингвистическое программирование») комплекс моделей, техник и операционных принципов (контекстуально зависимых убеждений),… … Википедия
Нейро-лингвистическое программирование — Нейролингвистическое программирование (НЛП) (англ. Neuro linguistic programming) (также встречается вариант «нейро лингвистическое программирование») комплекс моделей, техник и операционных принципов (контекстуально зависимых убеждений),… … Википедия
Нлп — Нейролингвистическое программирование (НЛП) (англ. Neuro linguistic programming) (также встречается вариант «нейро лингвистическое программирование») комплекс моделей, техник и операционных принципов (контекстуально зависимых убеждений),… … Википедия