- •Введение
- •Тема 1.1.Лексические основы языка программирования Общие сведения о программах, лексемах и алфавите
- •Тема 1.2.Концепция типа данных Понятие переменной
- •Основные типы данных
- •Указатели
- •Перечисления (перечислимый тип)
- •Массивы
- •Тема 1.3.Основные управляющие структуры программирования Понятие алгоритма
- •Свойства алгоритма:
- •С помощью языка программирования. Управляющие структуры и основные конструкции языков программирования
- •Тема 1.4.Основы модульного программирования
- •Подпрограммы
- •Рекурсивные функции
- •Раздел 2.Технология создания программ Тема 2.1.Интегрированная среда программирования
- •Трансляторы
- •Тема 2.2.Жизненный цикл программного обеспечения (Этапы подготовки и решения задач на эвм)
- •Анализ требований (постановка задачи, обследование)
- •Определение спецификаций
- •Кодирование
- •Тестирование, отладка и оптимизация
- •Внедрение и сопровождение
- •Раздел 3.Основные парадигмы программирования Тема 3.1.Генезис языков программирования.
- •Основные вехи в истории развития языков программирования
- •Классификация языков программирования
- •Уровни языков программирования
- •Поколения языков программирования
- •Тема 3.2.Основные парадигмы (технологии) программирования
- •Структурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование (ооп)
- •Основные свойства ооп
- •Структуры (записи)
- •Объединения (запись с вариантами)
- •Как массив символов
- •Как указатель на строковую константу
Классификация языков программирования
Для ориентации в таком разнообразии языков программирования предлагалось и предлагается огромное количество классификаций языков программирования.
Раньше было очень популярно разделение языков на две категории: компилируемые в машинные (native) коды и интерпретируемые. Однако подобная классификация, к сожалению, в наши дни уже не очень актуальна. Как, например, быть с Java? С одной стороны, написанные на этом языке программы компилируются, но не в native-код, а в так называемый байт-код, с другой стороны, для выполнения требуется наличие виртуальной Java-машины, т.е. интерпретатора. Добавим к этому возможность ряда средств разработки компилировать Java-программы в машинный код, существование компиляторов времени исполнения и вспомним про так называемые Java-процессоры, для которых этот язык и должен быть машинным. Также обратим внимание на перекомпиляцию такого типично интерпретируемого языка, как Perl. С языком Visual Basic, по сути, точно такая же ситуация, как и с Java: вы компилируете программу в байт-код, в дальнейшем интерпретируемый, или, начиная с пятой версии, в родной код процессора.
Также что языки делят на объектно-ориентированные и обычные (императивные, функциональные, логические и т.п.). Такое разделение также не совсем актуально. Если Visual Basic — объектно-ориентированный язык, то где же в нем наследование и прочие черты, характерные для объектно-ориентированного программирования (ООП)? Возьмем JavaScript — чтобы как-то с ним определиться даже ввели термин: объектно-базируемый язык. А язык программирования Ada в классической работе Грэди Буча (Grady Booch) «Объектно-ориентированное программирование» назван просто объектным. Кстати, этот известный специалист использует множество переходных градаций при обсуждении ООП. А часто ли пользуются объектными расширениями того же Perl? Написать сотню-другую строк скрипта без ООП, пожалуй, легче. Так это объектно-ориентированный язык (соответствующие средства есть) или нет (так как их мало кто использует)?
Разделение языков на визуальные и «обычные» просто не имеет смысла, так как термин «визуальный» относится в основном к средствам разработки (сегодня модно понятие RAD — Rapid Application Development — быстрая разработка приложений), хотя и не для всех языков и технологий это верно. (Например, как невизуально работать с JavaBeans, да еще и на Macintosh?). И вообще, появление новых версий программного обеспечения всегда сопровождается введением новых возможностей, иногда серьезно затрагивающих «основу» языка (типичный пример — Visual Basic).
Кроме того, языки делят на универсальные (конечно, большинство современных языков программирования являются многоцелевыми, но их возможности нечасто используются в полной мере), языки работы с базами данных, ориентированные на Интернет-приложения, на написание клиентских частей, на математические вычисления и т. д. Эта классификация оказывается полезной при объяснении сложившегося многообразия языков.
Рассмотрим подробно две классификации языков, которые можно считать действительно обоснованными: деления в языков в соответствии с их уровнем, и в соответствии с историческим подходом.