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

Традиционные языки программирования

Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений

Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений

Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений

В эту группу инструментальных средств входят традиционные языки программирования (С, C++, Basic, SmallTalk, Fortran и т.д.), ориентированные в основном на численные алгоритмы и слабо подходящие для работы с символьными и логическими данными. Поэтому создание систем искусственного интеллекта на основе этих языков требует большой работы программистов. Однако большим достоинством этих языков является высокая эффективность, связанная с их близостью к традиционной машинной архитектуре. Кроме того, использование традиционных языков программирования позволяет включать интеллектуальные подсистемы (например, интегрированные экспертные системы) в крупные программные комплексы общего назначения. Среди традиционных языков наиболее удобными считаются объектно-ориентированные (SmallTalk, C++). Это связано с тем, что парадигма объектно-ориентированного программирования тесно связана с фреймовой моделью представления знаний. Кроме того, традиционные языки программирования используются для создания других классов инструментальных средств искусственного интеллекта.

Языки искусственного интеллекта

Это прежде всего Лисп (LISP) и Пролог (Prolog) [8] – наиболее распространенные языки, предназначенные для решения задач искусственного интеллекта. Есть и менее распространенные языки искусственного интеллекта, например РЕФАЛ, разработанный в России. Универсальность этих языков меньшая, нежели традиционных языков, но ее потерю языки искусственного интеллекта компенсируют богатыми возможностями по работе с символьными и логическими данными, что крайне важно для задач искусственного интеллекта. На основе языков искусственного интеллекта создаются специализированные компьютеры (например, Лисп-машины), предназначенные для решения задач искусственного интеллекта. Недостаток этих языков – неприменимость для создания гибридных экспертных систем.

Источник

Модели вычислений

Традиционная модель

В этой архитектуре вычислительной системы имеются следующие три элемента:

Эти элементы обладают следующими особенностями.

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

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

Такую архитектуру будем называть традиционной.

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

На рис. 2.1 показано взаимодействие устройств традиционной машины.

Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений

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

На эти принципиально непреодолимые ограничения классической модели вычислений указал Бэкус еще в середине семидесятых годов (Тьюринговская лекция Бэкуса [ 35 ] ), назвав канал связи памяти с процессором узким местом (буквально bottleneck ) традиционной модели.

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

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

Источник

Традиционные языки

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

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

Отметим, что успеха разработчики языка добились благодаря акценту на концептуальную целостность — именно это выделяло Green среди конкурентов. Заметим, что в ходе последующего развития в язык Ada стали включать новые средства в угоду появившимся пользователям. В результате к концу девяностых годов Ada по стилю построения стала подобна PL/1 : в ней есть средства поддержки всего, что можно найти в работе программистов в конце XX века. Как отмечал известный советский программист В. Ш. Кауфман, язык Ada 9х можно рассматривать как добротную энциклопедию программистского знания и опыта, но никак не в качестве инструмента, ориентированного на пользователя.

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

Заметными объектными языками стали Turbo Pascal версий с 5.5 до 7.0 и Object Pascal системы Delphi.

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

Источник

Традиционные языки

Примеры традиционных языков

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

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

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

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

Хотя понятие структурного программирования еще не было осознано, в Algol 60 появилась вся необходимая база для него.

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

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

4. PL/1. Этот язык разрабатывался как попытка объединения всего, что в принципе может потребоваться программисту. Неизвестно, так это или нет, но вполне правдоподобно, что число «1» в названии языка есть амбициозное «единственный», т. е. способный сделать бессмысленными любые другие языки программирования. Совсем не заботясь о чистоте объединения всех известных программистских средств, разработчики языка предложили изначально эклектичную коллекцию, которая лишь с натяжкой может быть названа системой. Непознаваемость языка отмечается многими критиками. По выражению Э. Дейкстры, PL/1 — это «рождественская елка», а не инструмент, который можно эффективно использовать. Разрозненность и несводимость к единым концепциям создает большие трудности и для реализации: системы программирования для PL/1 всегда выделяли некоторый диалект, по существу, определяя соответствующее подмножество средств, зависящее от транслятора.

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

Источник

Модели вычислений

Традиционная модель

В этой архитектуре вычислительной системы имеются следующие три элемента:

Эти элементы обладают следующими особенностями.

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

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

Такую архитектуру будем называть традиционной.

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

На рис. 2.1 показано взаимодействие устройств традиционной машины.

Традиционные языки управление порядком вычислений. Смотреть фото Традиционные языки управление порядком вычислений. Смотреть картинку Традиционные языки управление порядком вычислений. Картинка про Традиционные языки управление порядком вычислений. Фото Традиционные языки управление порядком вычислений

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

На эти принципиально непреодолимые ограничения классической модели вычислений указал Бэкус еще в середине семидесятых годов (Тьюринговская лекция Бэкуса [ 35 ] ), назвав канал связи памяти с процессором узким местом (буквально bottleneck ) традиционной модели.

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *