Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
для поступления в магистратуру.pdf
Скачиваний:
46
Добавлен:
04.08.2022
Размер:
2.68 Mб
Скачать

62

Языки и системы программирования. Модели языков программирования

Языки и системы программирования. Модели языков программирования.

Системы программирования - это комплекс инструментальных программных средств, предназначенный для работы с программами на одном из языков программирования. Системы программирования предоставляют сервисные возможности программистам для разработки их собственных компьютерных программ.

В настоящее время разработка любого системного и прикладного программного обеспечения осуществляется с помощью систем программирования, в состав которых входят

трансляторы с языков высокого уровня;

средства редактирования, компоновки и загрузки программ;

макроассемблеры (машинно-ориентированные языки);

отладчики машинных программ.

Системы программирования, как правило, включают в себя

текстовый редактор (Edit), осуществляющий функции записи и редактирования исходного текста программы;

•загрузчик программ (Load), позволяющий выбрать из директория нужный текстовый файл программы;

запускатель программ (Run), осуществляющий процесс выполнения программы;

компилятор (Compile), предназначенный для компиляции или интерпретации исходного текста программы в машинный код с диагностикой синтаксических и семантических (логических) ошибок;

отладчик (Debug), выполняющий сервисные функции по отладке и тестированию программы;

диспетчер файлов (File), предоставляющий возможность выполнять операции с файлами: сохранение, поиск, уничтожение и т.п.

Язык программирования - Формализованный язык, предназначенный для описания программ и алгоритмов решения задач на ЭВМ. Языки программирования являются искусственными. В них синтаксис и семантика строго определены. Поэтому они не допускают свободного толкования выражения, что характерно для естественного языка.

Существующие языки программирования можно разделить на две группы: процедурные и непроцедурные, рис. 2.9.

Декларативный (непроцедурный) язык - позволяет задавать связи и отношения между объектами и величинами, но не определяет последовательность выполнения действий (например, языки Пролог, QBE);

Процедурные (алгоритмические) программы представляют из себя систему предписаний для решения конкретной задачи. Роль компьютера сводится к механическому выполнению этих предписаний.

Процедурные языки разделяют на языки низкого и высокого уровня.

Языки низкого уровня (машинно-ориентированные) позволяют создавать программы из машинных кодов, обычно в шестнадцатиричной форме. С ними трудно работать, но созданные с их помощью высококвалифицированным программистом программы занимают меньше места в памяти иработаютбыстрее. С помощьюэтих языковудобнееразрабатывать системныепрограммы, драйверы (программы для управления устройствами компьютера), некоторые другие виды программ.

Язык высокого уровня средства которого обеспечивают описание задачи в наглядном, легко воспринимаемом виде, удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ любого типа, поэтому программы, написанные на языках высокого уровня, требуют перевода в машинные коды программами транслятора либо интерпретатора. К языкам высокого уровня относят Фортран, ПЛ/1, Бейсик, Паскаль, Си, Ада и др.

63

Рис. 2.9. Общая классификация языков программирован

Языки высокого уровня не зависят от архитектуры компьютера. Чем более язык ориентирован на человека, тем выше его уровень.

Модели языков программирования

Модульная модель языков программирования

Модульная модель:

Каждая подпрограмма (или функция) является самостоятельным модулем.

Определенные внутри модуля переменные локализованы в нём (не глобализованы)

Память на объекты (переменные) выделяется статически

Наличие областей памяти, разделяемых различными подпрограммами (common-блок) – имитация глобальной среды (Рис. 21.2)

Принцип модульности ляжет практически во все языки программирование. Нам хочется, чтобы модуль проявлялся как надклассовый объект. Сейчас понятие функции и модуля тождественно.

Блочная модель языков программирования

Центр разработки находился в Дубне. Сильно использовался в СССР. Теоретическая база – Алгол, но более практическая – Фортран. Си, Паскаль – «обглоданный» Алгол.

Рис 21.3

64

Дикая по сложности иерархия. Можно определять функцию в функции. Блоки имеют неограниченную глубину вложения. Вся программа представляет собой единый моноблок.

Существует единственный программный «модуль»

Вся программа представляет собой систему вложенных блоков

Процедуры (как и ранее обобщение функции и подпрограммы) и функции вкладываются в блоки, их тела являются полноценными блоками

Данные локализованы в блоках

Внутренний блок наследует данные объемлющих его блоков

Память под переменные выделяется при входе в блок и удаляется при выходе из него (т.е. полная динамика – статическая модель отсутствует)

На Алголе - ГДР написаны практически все ядерные исследования и исследования в квантовой химии. На Си, и более современных постАлгольных языкахтакие задачи реализованы не были.

Серьёзных методов агрегирования на Алголе и Фортране не были. Массивы были и только они, более сложных структур не было.

Блочно - модульная архитектура (Си)

Сюда приходит блочная структура, но сильно лимитированная. Блоки есть, но нельзя создавать операцию одну в другой.

Рис.22.1.

Все активные компоненты вкладываются внутрь модуля. Модулей уже не один.

Функцию в функции мы создать уже не можем, но блоки у нас уже есть.

Компиляторы и интерпретаторы

Основным модулем системы программирования всегда является компилятор. Именно технические характеристики компилятора, прежде всего, влияют на эффективность результирующих программ, порождаемых системой программирования.

Транслятор – это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке.

Близко по смыслу к этому понятию понятие компилятор.

Компилятор – это транслятор, который осуществляет перевод исходной программы в эквивалентную ей объектную программу на языке машинных команд или языке ассемблера (.exe файл). Таким образом, компилятор отличается от транслятора тем, что его результирующая программа написана обязательно на языке машинных команд или языке ассемблера. Результирующая программа транслятора в общем случае может быть написана на любом языке (например, транслятор с языка Pascal на язык С). Таким образом, компиляторы – это вид трансляторов.

Существует еще принципиально отличное понятие: интерпретатор.

65

Интерпретатор – это программа, которая воспринимает входную программу на исходном языке, переводит каждый оператор или строкув машинный языки выполняет их. Интерпретатор не порождает результирующую программу и никакого результирующего кода.

Ядро системы программирования составляет язык.

Объектно-ориентированное программирование

Принципиально иное направление в программировании связано с методологиями непроцедурного программирования. К ним можно отнести объектно-ориентированное программирование. Программы стали строиться не из процедур и функций, а из сравнительно простых кирпичиков-объектов, в которых были упрятаны данные и подпрограммы их обработки. Программирование рассматриваемого стиля заключается в выборе имеющихся или создании новых объектов и организации взаимодействия между ними.

Определения

Объект – это то, чем вы управляете с помощью программы (например в Excel - ячейка, диапазон, диаграмма и т.п. В БДэто таблицы, формы, запросы). Каждый объект имеет свой тип (класс). Класс представляет собой тип данных, имеющий в составе данный объект.

Свойства - Параметры объекта (конечно, не все, а только необходимые в программе). Методы - Действия, которые можно выполнять над объектом данного типа, или которые

сам объект может выполнять. Это процедуры и функции.

Инкапсуляция. Инкапсуляция — это объединение данных и действий над ними. Это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейс (от английского interface — внешнеелицо,т.е.списокдекларируемыхсвойствиметодов)классаиневникатьвеговнутреннюю реализацию.Этосвойствообъектов,заключающеесявсокрытииинформацииовнутренней"жизни" объекта. Т.е. внешний пользователь объекта может использовать его возможности посредством определенного интерфейса, а непосредственно работа с данными и детали ее реализации от него скрыты. Так, в примере с жестким диском, нам для работы с ним достаточно знать, что он может хранить информацию, и позволяет записывать и считывать ее. При этом вовсе необязательно разбираться в том, каким образом хранится информация и как протекают процессы ее записи и чтения. Свойство инкапсуляции облегчает написание программ, и, что самое главное, их модификацию.

Наследование. Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка и добавляя, при необходимости, новые свойства и методы. Наследование призвано отобразить такое свойство реального мира, как иерархичность.

Полиморфизм Полиморфизмом называют явление, при котором для различных родственных объектов можно задать одинаковое название функции, но действия функция будет выполнять разные, в зависимости от конкретного объекта. Например, надо нарисовать прямоугольник или круг, в зависимости от типов: «прямоугольник», «круг». Но в обоих случаях функция будет иметь имя «Нарисовать». Т.е. действия с одинаковым именем вызывает различное поведение, в зависимости от типа данных.

К наиболее современным объектно-ориентированным языкам программирования относятся C++ и Java.

Языки C++иJava. Заоснову языкаС++был взят языкС,дополненный элементами языков

BCPL,Simula-67 и Algol-68.

Новая интегрируемая в Internet версия языка, получила название Java. С января 1995 года Java получает распространение в Internet. Принципиальной разницей между Java и C++ является то, что первый из них является интерпретируемым, а второй — компилируемым. Синтаксис языков практически полностью совпадает. С точки зрения возможностей собственно объектноориентированных средствязык Javaобладает рядомпреимуществперед языкомC++. Так, язык Java демонстрирует более гибкую и мощную систему, кроме того, он проще и надежнее.

В силу своей конструктивности идеи объектно-ориентированного программирования используются во многих универсальных процедурных языках, в которые входит специальная

66

библиотека объектно-ориентированного программирования. Это системы программирования

TurboVision, VisualBasic, Delphi и др.

VisualBasicподходит для написаниянебольших и нетребовательных кресурсампрограмм. А так как он является языком создания приложений Microsoft Office, то он получил самое широкое распространение.

Delphi является очередным шагом в эволюции компиляторов Паскаля. Среда Delphi стала, посути,лучшимсредствомпрограммированиядляоперационнойсистемыWindows.УязыкаDelphi есть еще одно очень важное преимущество перед остальными коммерчески успешными языками — он великолепно подходит для обучения программированию. Поэтому его рекомендуют в качестве первого языка для всех учеников и студентов, собирающихся стать профессиональными программистами.

Delphi, Java применяются для создания программ , используемым в Интернете.