135
Язык программирования – язык, позволяющий выразить человеческие
мысли и образы в формальном виде, однозначно воспринимаемом
вычислительным устройством в рамках конкретной модели вычислений.
К составным частям языка можно отнести: лексику, синтаксис и
семантику.
Лексика
–
описание элементов языка (его элементарных конструкций).
Например, лексемами языка Си являются: for, if, int, char, while,+, -,...
Синтаксис – совокупность правил написания языковых элементов
(лексем).
Семантика – смысловое наполнение языковых конструкций, связь между
элементами языка и их значением.
Существуют языки, в которых лексемы и синтаксис очень близки, а
семантика – различна. Обычно так происходит, если в основе языков лежат
различные модели вычислений.
Существует несколько подходов к определению семантики языков
программирования. Наиболее широко распространены разновидности
следующих трёх: операционного, денотационного (математического) и
деривационного (аксиоматического). При описании семантики в рамках
операционного
подхода
обычно
исполнение
конструкций
языка
программирования интерпретируется с помощью некоторой воображаемой
(абстрактной) ЭВМ. Деривационная семантика описывает последствия
выполнения конструкций языка с помощью языка логики и задания пред- и
постусловий. Денотационная семантика оперирует понятиями, типичными для
математики – множества, соответствия, а также суждения, утверждения и др.
Статическая типизация – приём, широко используемый в языках
программирования, при котором переменная, параметр подпрограммы,
возвращаемое значение
функции связывается с типом в момент объявления и
тип не может быть изменён позже (переменная или параметр будут принимать,
а функция – возвращать значения только этого типа). Примеры статически
типизированных языков – Ада, Си++, Паскаль.
Динамическая типизация – приём, широко используемый в языках
программирования и языках спецификации, при котором переменная
связывается с типом в момент присваивания значения, а не в момент
объявления переменной. Таким образом, в различных участках программы одна
и та же переменная может принимать значения разных типов. Примеры языков,
где есть динамическая типизация –
Smalltalk Python, Ruby, PHP, Perl,
JavaScript,
Object Pascal, Lisp, xBase.