Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция 6. Алгоритмический язык - это язык, используемый для формальной записи алгоритмов

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

В программировании используется несколько типов алгоритмических языков, что определяется особенностями тех универсальных логических алгоритмических языков, которые были использованы при создании конкретного языка программирования. Например, язык ЛИСП опирается на идею реализации алгоритмов как последовательностей вычислений рекурсивных функций. Другой язык программирования - РЕФАЛ использует «универсальный» алгоритмический язык в виде схем нормальных алгоритмов Маркова, а в основе языка ПРОЛОГ лежит модель, заимствованная из логики предикатов первого порядка.

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

Язык большинства современных ЭВМ достаточно беден и состоит из команд типа «выделить память определенного размера»; «выбрать из определенного места в памяти информацию»; «запомнить информацию в определенном месте памяти»; «сложить два числа»; «перейти к выполнению очередной команды, выбрав ее из определенного места в памяти» и т. п.

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

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

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

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

Алгоритмический язык ПАСКАЛЬ назван в честь английского ученого Б. Паскаля. По своей идее это алголоподобный (от названия АЛГОЛ) язык, вобравший в себя все лучшие проектные решения предшественника. Но вместе с тем это качественно новый шаг, связанный, прежде всего, с тем, что здесь впервые была воплощена концепция абстрактных типов данных. Если раньше все данные, преобразования которых описывались в программе, относились к одному из заранее определенных типов (целые, действительные и т.п.), то в ПАСКАЛе были введены средства конструирования новых типов данных. Были в языке и другие важные нововведения, среди которых следует отметить интервальные типы данных, средства работы с множествами и некоторые другие.

Благодаря этим свойствам ПАСКАЛЬ стал не только интересным и мощным средством программирования широкого круга прикладных задач, но и языком, пригодным для обучения программированию как систематической дисциплине, основанной на фундаментальных понятиях, ясно и естественно отраженных в самом языке ПАСКАЛЬ.

Почти одновременно с ПАСКАЛем, в начале 70-х гг., был разработан и язык программирования СИ. Но если ПАСКАЛЬ шел больше от теории программирования, то язык СИ - типичный пример влияния практических потребностей системного программирования на разработку новых языков. Изначально он создавался как инструментальное средство для реализации операционной системы UNIX на ЭВМ фирмы DEC, но популярность его быстро переросла рамки конкретной машины, операционной системы и задач системного программирования. И сейчас язык СИ можно по праву назвать одним из универсальных языков программирования. С одной стороны, в нем имеются средства определения новых типов данных, широкий набор операторов, характерных для языков высокого уровня, модульность и структурность, а с другой - в язык СИ включены средства программирования почти на уровне ассемблера (например, побитовые операции и работа с указателями). СИ-программы компактны и эффективны, но практическое использование языка требует от программиста осторожности, аккуратности и знания преимуществ и недостатков тех или иных конструкций.

Практически каждый из языков программирования фиксировал достижения самой дисциплины программирования и открывал в ней новые пути развития. Так, ФОРТРАН показал возможность «отрыва» от конкретной ЭВМ с ее фиксированной системой команд; АЛГОЛ - использование строгого и элегантного математического стиля для реализации сложных алгоритмов; ПАСКАЛЬ - конструирование новых типов данных, а СИ - интеграцию языка программирования с операционной обстановкой, в которой этот язык функционирует.

Если же говорить о языках обработки символьной информации, то следует отметить уже упоминавшиеся нами ЛИСП (List Processing Language), ПРОЛОГ (Programming in Logic) и РЕФАЛ (Алгоритмический язык рекурсивных функций).

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

Современные пользователи наиболее часто используют язык объектно-ориентированного программирования Visual Basic. Это связано с широким распространением пакета программ Microsoft Office под Windows и предоставляемыми возможностями создания собственных приложений.

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

Отметим, что существует также «прикладная» классификация языков программирования, согласно которой все они делятся на группы по областям применения.

6.3. ИНФОРМАЦИЯ И УПРАВЛЕНИЕ. УПРАВЛЯЮЩИЕ АЛГОРИТМЫ

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

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

1) орган управления получает информацию о цели управления и о состоянии (поведении) объекта управления;

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

3) совершается управляющее воздействие над объектом;

4) анализируется состояние объекта;

5) совершается процедура выбора из двух возможностей:

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

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

6) дается сигнал об окончании процесса управления.

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

С позиции теории систем к понятиям управления и управляющего алгоритма можно подойти следующим образом.

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

Систему с выделенным управлением называют управляющей системой. Для сложных систем характерно явное выделение состояний, в которых может находиться управление системы. Например, состояниями электронных часов являются «тройки»: час, минута, секунда. Такая система имеет 24´ 60´60 – 86400 состояний. Если часы показывают дату и месяц, число состояний — около 31 млн. Для того чтобы проектировать сложные системы, используют принцип укрупнения состояний на разных уровнях детализации и другие приемы проектирования.

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

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

Управляющее устройство работает по определенному, управляющему, алгоритму. Другими словами, можно сказать, что взаимодействие управления и доступной информации задает алгоритм (рис. 10).

Рис.10. Схема алгоритма управления

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

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

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

Важно, что определение управляющего алгоритма в виде взаимодействующей схемы «управление + информация» дает «энергетическое» толкование понятия информации. В физике энергия означает способность совершить работу. Информация означает способность совершить, управляемую работу. Чем больше накоплено энергии, тем проще что-то сделать. Аналогично, чем больше информации, тем проще может функционировать управление. Управление относительно информации выступает в роли силы, прикладываемой к объекту. При вычислении совершается «работа». Аналогично тому, как делается в физике, эту «работу» можно вычислить, если известна «сила» каждой команды управления и мера «отрезка пути» – изменения порции информации при применении оператора управления. Отметим, что способы измерения информации, учитывающие функцию цели системы, все еще находятся в стадии изучения и разработки

 

<== предыдущая лекция | следующая лекция ==>
Лекция 6 | Государство и рынок
Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 1219; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.