Главная » Просмотр файлов » В.Ш. Кауфман - Языки программирования - концепции и принципы (1990)

В.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (1160787), страница 5

Файл №1160787 В.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (В.Ш. Кауфман - Языки программирования - концепции и принципы (1990)) 5 страницаВ.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (1160787) страница 52019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

миллиарды долларов).

Итак, в качестве второго источника сложности в современном

программировании следует назвать незнание компьютером реального мира.

Лишенный необходимых знаний, компьютер не может не только скорректировать

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

от направления на цель работы. Традиционное для компьютеров управление

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

всех обстоятельств, в которых может оказаться исполнитель в процессе

предоставления нужной услуги. Это резко увеличивает число объектов, с

которыми приходится иметь дело при создании программ. Отсюда повышение

сложности программирования, увеличение размера программ, понижение их

надежности и робастности.

Со вторым источником сложности борются развивая методы

представления в компьютерах знаний о реальном мире и эффективном учете этих

знаний при создании и исполнении "дружественных" программ.

1.14. Два основных средства борьбы со сложностью. Основной критерий

качества ЯП

Рассмотренные источники сложности оказывают определяющее влияние на

теорию и практику в области ЯП. Важнейшим средством борьбы с семантическим

разрывом служит аппарат абстракции-конкретизации, имеющийся в том или ином

виде в любом ЯП. Именно этот аппарат служит основой для проблемной

ориентации языковых выразительных средств.

Например, в Фортране характерным средством абстракции служит

подпрограмма, а соответствующим средством конкретизации - обращение к ней с

фактическими параметрами. Поэтому естественный ПОЯ, создаваемый посредством

Фортрана - набор (пакет) проблемно-ориентированных подпрограмм. В более

современных ЯП применяют более развитые средства абстракции (абстрактные

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

которых мы еще поговорим). Становятся более богатыми и возможности строить

ПОЯ.

Важнейшим средством борьбы с незнанием реального мира служит аппарат

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

отсутствует (Апл, Форт, Лисп) или очень слаб (любой ассемблер). Однако

именно этот аппарат служит основой для повышения надежности и робастности

программ. Последнее не означает, что "дружественные" программы невозможно

писать на ЯП со слабым прогнозированием-контролем. Просто в этом случае

создание подходящего аппарата полностью возлагается на программиста.

Например, в Фортране характерным средством прогнозирования служат

встроенные (предопределенные) типы данных. Соответствующий контроль

предусмотрен семантикой языка, но средств управления таким контролем нет

(новые типы данных вводить нельзя). В таких ЯП, как Паскаль или Ада, этот

аппарат более развит, а в так называемых языках искусственного интеллекта

этот аппарат прямо предназначен для представления достаточно полных знаний о

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

пользователя.

Упражнение. Приведите примеры средств абстракции-конкретизации и

прогнозирования-контроля в известных вам ЯП. Постарайтесь подобрать

симметричные, взаимно дополнительные средства. Убедитесь, что эта

дополнительность обеспечена не всегда.

Теперь мы готовы сформулировать следующий основной критерий качества ЯП

(как инструмента, т.е. c технологической позиции): язык тем лучше, чем менее

сложно построенное на его основе производство программных услуг.

На этом оставим пока технологическую позицию и займемся семиотической.

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

Продолжим уточнение понятия "язык программирования". Наше новое

интенсиональное определение ЯП таково:

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

поведения компьютеров.

Итак, не любой "инструмент", а "знаковая система" и не для произвольных

"исполнителей", а только для компьютеров. К ограничению класса исполнителей

в этом определении мы подготовились заранее, а вот о знаковых системах еще

подробно не говорили.

Знаковая система - это совокупность соглашений (явных или неявных),

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

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

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

знак и денотат. Говорят, что знак обозначает денотат (знак называют также

обозначением или именем, а денотат - обозначаемым или значением). Так, в

модели передачи сообщения само сообщение служит знаком, его смысл -

денотатом.

Вот еще знаковые ситуации (первым укажем знак, вторым - денотат): буква

и соответствующий звук, дорожный знак ("кирпич") и соответствующее

ограничение ("въезд запрещен"), слово и соответствующее ему понятие. Каждый

без затруднений пополнит этот список.

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

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

денотатом, говорят, что эти соглашения образуют знаковую систему (или язык).

При этом правила, определяющие структуру допустимых знаков, называются

синтаксисом языка, а правила, определяющие соответствующие допустимым знакам

денотаты, называются семантикой языка. (Науку о синтаксисах языков называют

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

правил некоторого языка, так и для обозначения общей науки о таких

правилах).

Одним из примеров знаковой системы служит позиционная система счисления

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

допустимое расположение (например, справа налево без разделителей) - это

синтаксис. Правила вычисления обозначаемого числа - семантика. При этом

запись числа в позиционной системе - знак, а само обозначаемое число -

денотат. Известные вам ЯП - также знаковые системы.

Упражнение. Приведите пример синтаксического и семантического правила

из таких знаковых систем, как Фортран, Бейсик, Паскаль, Ассемблер.

В общем случае в ЯП знаки - это элементы программ (в том числе полные

программы), а денотаты - элементы и свойства поведения исполнителя (атрибуты

его поведения), в частности, данные, операции, управление, их структура, их

связи и атрибуты. Например, знаку, составленному из шести букв "arctan"

(элементу программы на Фортране), использованному в этой программе в

подходящем контексте, соответствует в качестве денотата такой элемент

поведения исполнителя, как вычисление арктангенса.

Знаку, составленному из двух букв "DO" (элементу программы на Фортране)

в одном контексте в качестве денотата может соответствовать такой элемент

поведения, как вход в цикл, а в другом - переменная вещественного типа, в

третьем - массив целого типа.

Упражнение. Выпишите подходящие контексты.

Итак, знаковая система - это правила образования знаков (синтаксис) и

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

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

(т.е. прагматика) обычно не включаются в знаковую систему. Например, в

Фортране нет каких-либо правил, ограничивающих применение соответствующих

вычислительных процессов для неблаговидных целей.

Теперь уточненное определение ЯП как знаковой системы для планирования

поведения компьютеров должно быть полностью понятным.

1.19. Разновидности программирования

Чтобы создать себе более удобную основу для формирования оценок,

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

рассмотрений.

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

развлечения и обучения ("игровое" программирование, его характерное свойство

- интересен не столько программа-результат, сколько сам процесс

программирования); для отработки идей, приемов, инструментов, методов,

критериев, моделей ("экспериментальное" программирование, его характерное

свойство - созданная программа не предназначена для применения без участия

автора, т.е. результат такого программирования неотчуждаем). В дальнейшем

будем рассматривать только "индустриальное" программирование, цель которого

- создание программных изделий (программных продуктов) на заказ или на

продажу. Характерное свойство - отчуждаемость результата.

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

программ. По этому критерию различают по крайней мере три разновидности

программирования:

сборочное - программа составляется из заранее заготовленных модулей

(так обычно сейчас работают пакеты прикладных программ);

конкретизирующее - программа получается в результате преобразования

универсальных модулей-заготовок (в результате их специализации) в расчете на

конкретные условия применения; цель специализации - повышение эффективности

(снижение ресурсоемкости) универсальной программы;

синтезирующее - роль заготовок относительно невелика.

В дальнейшем нас, как правило, будет интересовать лишь синтезирующее

индустриальное программирование, а также элементы сборочного

программирования (когда речь пойдет о модульности).

В-третьих, на различных стадиях жизненного цикла программного изделия

(из которого мы выделим стадии проектирования, эксплуатации и сопровождения)

предъявляют различные, иногда противоречивые, требования к ЯП. Например,

сложность программирования не столь существенна на стадии эксплуатации

программы, как ее ресурсоемкость. На стадии проектирования важно удобство

написания программ, а на стадии сопровождения - удобство их чтения. В первую

очередь будем интересоваться стадией проектирования изделия, так как на ней

в той или иной форме следует учитывать и требования всех остальных стадий

жизненного цикла.

Итак, мы в сущности определили основной стержень нашего интереса,

сформулировали основной критерий отбора аспектов ЯП, которым будем уделять в

этой книге основное внимание. Нет серьезных оснований претендовать на то,

что именно такой стержень обладает какими-то особенными преимуществами.

Вдумчивый читатель сможет применить полученные навыки анализа ЯП и при иных

исходных соглашениях.

1.20. Понятие о базовом языке

Два выделенных источника сложности - семантический разрыв и незнание

мира полезно трактовать как два различных аспекта единого источника -

рассогласования моделей проблемной области (ПО) - области услуг, задач,

операций, у пользователей и исполнителей.

При таком взгляде создаваемая программа выступает как средство

согласования этих моделей. Чем ближе исходные модели, тем проще программа.

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

на одну из заранее заготовленных услуг (например, "распечатать файл", "взять

производную", "выдать железнодорожный билет"). Мера рассогласованности

моделей положена в основу известной "науки о программах" Холстеда.

Мы уже говорили об исключительном разнообразии моделей даже одного-

единственного объекта, рассматриваемого с различных точек зрения. Поэтому

невозможно построить исполнитель, непосредственно пригодный для выполнения

любой услуги. Однако удается строить специализированные исполнители и

ориентировать их на фиксированный класс услуг - ПО. Для управления такими

специализированными исполнителями создаются (ПОЯ). В качестве хорошо

известных примеров укажем язык управления заданиями в операционной системе,

язык управления текстовым редактором, язык запросов к базе данных и т.п.

Итак, ПОЯ опирается на определенную модель соответствующей ПО (иногда

говорят, что эта модель встроена в такой язык; точнее говоря, ПОЯ - это

знаковая система, для которой модель соответствующей ПО служит областью

денотатов).

Итак, безнадежно строить ЯП с моделями, заготовленными "на все случаи

Характеристики

Тип файла
Документ
Размер
1,26 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее