- •Системное программное обеспечение
- •II. Трансляторы
- •1. Общие сведения о трансляторах
- •1.2. Синтаксис языка.
- •1.3. Семантика.
- •1.4. Лексический анализ.
- •1.5. Синтаксический анализ.
- •2.2. Общие характеристики и параметры языков программирования.
- •2. Общие особенности языков программирования и трансляторов
- •5. Различия формальных грамматик языков.
- •2.3. Особенности трансляторов.
- •III. Структуры, организация, хранение и поиск данных
- •1. Структуры данных
- •1.1. Статические структуры данных.
- •Массив как статическая структура данных
- •Линейный поиск в массивах данных
- •Способы сортировки в массивах данных
- •1. Пузырьковая сортировка (попарные перестановки).
- •2. Сортировка выбором.
- •3. Сортировка простыми вставками.
- •Некоторые рекомендации при работе с массивом
- •Запись как статическая структура данных
- •Статическая структура данных – множество
2. Общие особенности языков программирования и трансляторов
2.1. Различия языков программирования.
Языки программирования достаточно сильно отличаются друг от друга по назначению, структуре, семантической сложности, методам реализации, что накладывает свои специфические особенности на разработку конкретных трансляторов; они являются инструментами для решения задач в разных предметных областях, что определяет специфику их организации и различия по назначению.
1. Различия в организации языков.
Каждая из предметных областей предъявляет свои требования к организации самого языка, поэтому можно отметить разнообразие форм представления операторов и выражений, различие в наборе базовых операций, снижение эффективности программирования при решении задач, не связанных с предметной областью. Языковые различия отражаются и в структуре трансляторов.
2. Различие в структуре языков.
Структура языка характеризует иерархические отношения между его понятиями, которые описываются синтаксическими правилами. Языки программирования могут сильно отличаться друг от друга по организации отдельных понятий и по отношениям между ними.
3. Различия в семантике языков.
Семантика языков программирования отличается не только особенностями реализации отдельных операций, но и парадигмами программирования, которые определяют принципиальные различия в методах разработки программ. Специфика реализации операций может касаться как структуры обрабатываемых данных, так и правил обработки одних и тех же типов данных.
4. Различия в парадигмах программирования языков.
Наряду с традиционным процедурным (императивным) программированием, существуют такие парадигмы, как функциональное (модульное) программирование, логическое программирование и объектно-ориентированное программирование. Структура понятий и объектов языков в большой степени зависит от выбранной парадигмы, что также влияет на реализацию транслятора.
5. Различия формальных грамматик языков.
Грамматикой языка называется система правил, описывающих язык программирования.
Один и тот же язык может быть реализован нескольким способами, поскольку теория формальных грамматик допускает различные методы разбора одних и тех же предложений. В соответствии с этим трансляторы разными способами могут получать один и тот же результат (объектную программу) по первоначальному исходному тексту.
2.2. Общие характеристики и параметры языков программирования.
Языки программирования предназначены для облегчения программирования, поэтому их операторы и структуры данных являются более мощными, чем в машинных языках.
Для повышения наглядности программ вместо числовых кодов используются символические или графические представления конструкций языка, более удобные для восприятия их человеком.
Для любого языка определяется:
множество символов, которые можно использовать для записи правильных программ (алфавит), основные элементы;
множество правильных программ (синтаксис);
смысл каждой правильной программы (семантика).
Язык программирования, как любая сложная система, определяется через иерархию понятий, задающую взаимосвязи между его элементами. Эти понятия связаны между собой в соответствии с синтаксическими правилами. Каждая из программ, построенная по этим правилам, имеет соответствующую иерархическую структуру.
В связи с этим для всех языков и их программ можно дополнительно выделить следующие общие черты: каждый язык должен содержать правила, позволяющие порождать программы, соответствующие этому языку, или распознавать соответствие между написанными программами и заданным языком.
Связь структуры программы с языком программирования называется синтаксическим отображением.
