Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
425 Кб
Скачать
☆
    1. Контроль структуры программы.

Для контроля структуры программы можно использовать три метода:

статический контроль,

смежный контроль,

сквозной контроль.

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

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

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

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

  1. Лекция 5. Представление основных структур программы в языках высокого уровня

Вопросы :

1. Основные языки программирования и их характеристика

2. Структура данных в языках программирования высокого уровня

    1. Основные языки программирования и их характеристика.

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

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

Основными характеристиками свойств языков программирования. Позволяющими сравнивать языки программирования и выбирать наилучшие для решения той или иной задачи, являются: мощность, уровень и концептуальная целостность.

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

Уровень языка характеризуется сложностью решения задач с помощью этого языка. Чем проще записывается решение задач, чем более непосредственно реализуются сложные операции и понятия, чем меньше объем получаемых программ, тем выше уровень языка.

Концептуальная целостность языка характеризуется свойствами совокупности понятий, служащих для описания языка и включают три взаимосвязанных характеристики: экономию, ортогональность и единообразие понятий. Экономия понятий предполагает достижение максимальной мощности языка с помощью минимального числа понятий. Ортогональность понятий означает, что между понятиями не должно быть взаимного влияния. Так, если одно и то же понятие используется в разных контекстах, то правила использования должны быть одни и те же. Единообразие понятий требует согласованного, единого подхода к описанию и использованию всех понятий.

Обычно, чем меньше мощность языка, ( т.е. чем уже область его применения), тем выше его уровень. По этой причине наряду с универсальными языками разрабатываются и специализированные в некоторой конкретной предметной области языки программирования. Конечно, чем мощнее язык, тем труднее обеспечить концептуальную целостность; в то же время высокий уровень языка обладает высокой концептуальной целостностью.

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

Надежность языков обеспечивает минимум ошибок при написании программы. Для этого язык должен быть таким . чтобы трудно было сделать ошибку. Язык должен защищать программиста от него самого., сделать трудным или даже невозможным появление некоторых ошибок. Например, благодаря наличию в языке требования чтобы все переменные были объявлены до использования , ошибки, связанные с неправильным написанием имен, выявляются при компиляции. Так, плохо, если одно и тоже можно сделать более, чем одним способом; возможность выбора может привести к ошибке.

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

Во – первых, уменьшается сложность документирования, во- вторых удобочитаемость позволяет легче понимать программу и, следовательно, легче находить ошибки, в третьих - удобочитаемость позволяет легче сопровождать программу и ее дорабатывать и модифицировать. Очевидно, что реализация требований удобочитаемости зависит от самого программиста, который должен постараться четче структурировать программу и так расположить её текст, чтобы подчеркнуть эту структуру. Тем не менее важную роль играет и используемый язык. Программист не должен прибегать к искусственным построениям, вводя в язык такие ограничения, как длина идентификатора, или определённые фиксированные типы данных. Алгоритмические структуры должны выражаться в терминах легко понимаемых структур.

Полнота языка обеспечивает описание на языке решение задач в определенной предметной области , а также процесс отладки программы.

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

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

Пути развития и классификация языков программирования

Первый язык высокого уровня создан в 1959 году фирмой IBM . Это язык Фортран (FOFmula TRANslation - Преобразование формул). Язык является компилирующим языком. Он не только просуществовал до наших дней но и удерживает одно из первых мест в мире по распространенности. Среди причин такого долголетия можно отметить простую структуру конструкций языка, наличие большой, накопленной за долгие годы, библиотеки программ, простота транслятора. Фортран используется в сфере научных и инженерных расчетов.

В 1960 г. фирмой Internetional был разработан язык Algol-60. Он впервые предоставил для описания алгоритмов согласованное и единообразное множество конструкций, включающее явные операторы управления для представления последовательного выполнения операторов, выбора и итерации, а также мощный и удобный механизм подпрограмм, стало возможным разрабатывать программы сверху вниз с помощью последовательного уточнения абстрактных действий. Язык КОБОЛ ( 1959-1961г.) заслуживает внимания за развитие такой важной части языков программирования как средства описания и обработки файлов. Однако ни Фортран, ни Алгол , ни Кобол не были универсальными языками, первые два в основном были предназначены для решения расчетных задач , а Кобол – для экономических.

Первым действительно универсальным языком программирования был язык ПЛ/1 (1964-1966г.- фирма IBM), объединивший многие возможности и средства языков Фортран , Алгол и Кобол. Он представляет практически все необходимые средства описания алгоритмов, хотя и не столь сильно развитые, средства описания и обработки таких сложных типов данных как массивы и структуры.

Параллельно с развитием универсальных языков создавались и специализированные языки, в которых за счет сужения области их использования удавалось построить отдельные высокоуровневые механизмы для описания и данных и действий. Так в языке Лисп (1956 –1960 г.- автор John McCarthy ) допускается лишь один тип данных – список и один базовый механизм выполнения – рекурсивные функции. Программа на ЛИСП представляет собой вычисление функции аргументами, которой являются другие функции и т.д. Лисп является Функциональным языком программирования в отличие от большинства других языков, которые являются императивными, программы на них строятся в виде последовательности команд выполнения требуемых операций. Целью создания Лиспа было использование его в системах автоматического доказательства теорем. Поэтому его называют языком искусственного интеллекта. В 1964-1965г. на базе языка Фортран фирмой Dartmouth College был создан язык Бейсик - многоцелевой язык символических команд для начинающих. Первые версии языка являлись интерпретаторами, впоследствии стали использоваться оба вида трансляции: и компилятор и транслятор. Что позволяет в диалоговом режиме отлаживать программы и компилировать конечную программу. Современные версии языка позволяют решать сложные задачи на профессиональном уровне. Современный язык Visual Basic (1991г.) близок к объекто -ориентированным языкам, но по прежнему остается процедурным. Языком. Этот язык широко распространен, он интегрирован в пакеты Microsoft Office, СУБД MS Access, электронные таблицы MS Excel, текстовый редактор MS Word.

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

Язык Си (С и С++) – достаточно полно отражает возможности современных компьютеров, позволяя писать весьма эффективные программ, не прибегая к сложным языкам Ассемблера. Этот язык может использоваться при системном программировании. На нем разработана операционная система Unix.

Delphi – разработан фирмой Borland на базе языка Турбо- Паскаля, Чаще всего этот язык используется для работы с базами данных по технологии клиент – сервер. Основной упор в Дельфи делается на максимальное использование имеющихся программ. Это позволяет пользователям строить приложения из уже существующих объектов. А также дает им возможность разрабатывать собственные объекты.

Из других языков следует отметить язык гипертекстовой разметки HTML (и его развитие DHTML) используются в качестве основного компонента технологии системы Интернет. Язык Java, предназначен для составления программ, которые работают в сетях. Программы, написанные на Ява, часто используются для создания динамической рекламы в глобальной сети ( анимация, телетайпные ленты мерцающие надписи).

В таблице 5.1. приводятся наиболее распространенные языки программирования.

Таблица 5.1.

Язык

Годы разработки

Фирма разработчик

Тип и область применения

1

2

3

4

Ada

Ада

1979 – 1980

Cii – Honeywell Bull

(Франция)

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

Algol

Алгол

1960

International committee

Процедурно – ориентированный язык, используется для экономических расчетов

Apl

Апл

1961 – 1962

IBM

Процедурно – ориентированный язык

Delphi

Дельфи

1995

Borland

Объектно – ориентированный язык

Basic

Бейсик

1964 – 1965

Dartmouth College

Процедурно – ориентированный язык.

Visual Basic

Визуальный Бейсик

1971 –1995

Dartmouth College

Объектно – ориентированный язык

C

Си

1972 - 1973

Bell Laboratories

Процедурно – ориентированный язык, используется для системного программирования.

C++

Си + +

1980

Bell Laboratories

Объектно – ориентированный язык

Cobol

Кабол

1959 – 1961

Процедурно - ориентированный язык

Fort

Форт

1971

Процедурно - ориентированный язык

Fortran

Фортран

1950 –1958

IBM

Процедурно – ориентированный язык.

используется для технических расчетов

HTML

ХТМЛ

1989

CERN (Женева)

Язык гипертекстовой ссылки, используется для создания сайтов в Интернет

Lisp

Лисп

1956 – 1960

Функционально – ориентированный язык, используется для решения задач, относящихся к искусственному интелекту

Logo

Лого

1968 – 1970

Massachusetts Institute of Technology

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

Pascal

Паскаль

1967 – 1971

Federal Institute

of Technology

Структурно – ориентированный язык

Perl

Пёрл

1986

Расширение языка HTML, для создания динамических и движущихся объектов

PL/1

ПЛ/1

1964 – 1966

IBM

Структурно – ориентированный язык

Prolog

Пролог

1978

Функционально – ориентированный язык, используется для решения задач, относящихся к искусственному интелекту

SIMULA

Симула

1967

Норвежский ВЦ

Первый объектно – ориентированный язык

SmallTalk

1980

Чистый объектно – ориентированный язык

Java

Джава

1995

Sun Microsystems

объектно – ориентированный язык, для разработки программ, работающих в сетях