Главная » Просмотр файлов » Языки программирования. Прошлое и будущее. С.Бобровский

Языки программирования. Прошлое и будущее. С.Бобровский (1012869), страница 9

Файл №1012869 Языки программирования. Прошлое и будущее. С.Бобровский (Языки программирования. Прошлое и будущее. С.Бобровский) 9 страницаЯзыки программирования. Прошлое и будущее. С.Бобровский (1012869) страница 92017-06-17СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Все! На этом описание языка почти заканчивается. Конечно, есть еще переменные и возможность работы с адресами. Однако без наличия структур, позволяющих вычленять управляющие последовательности команд в отдельные модули, например в подпрограммы, язык програм­мирования существовать не может. Форт содержит оригинальные сред­ства, позволяющие гибко и наглядно описывать структуру решаемой задачи.

Любой последовательности команд можно поставить в соответствие «слово» — обычный идентификатор. Например, вышеприведенные команды можно «обозвать» СЛОЖ_ДЕЛ с помощью такой строки:

: СЛОЖ_ДЕЛ + / ;

Слово СЛОЖ_ДЕЛ записывается в специальный словарь Форт-системы и становится доступным для дальнейшего использования наряду с обыч­ными командами. Для достижения большей эффективности это «сло­во» может быть откомпилировано. Так можно легко описывать доволь­но сложные процессы вычислений, группировать их в слова и затем работать уже только с ними, зная, какие действия со стеком они выпол­няют. Например, управляющие команды для процессора микроволно­вой печи можно задать в таком виде:

температура 200 объект курица жарить

Форт-системы обычно очень компактны. Ядро занимает 10-15 Кбайт (!), а получающийся код по объему и эффективности не уступает ассем­блеру.

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

Сегодня Форт используется преимущественно для программирования микропроцессоров, где его качества проявляются наиболее выгодно. Такая ниша довольно объемна, и Форт уверенно чувствует себя в ней. Этот факт, в частности, подтверждают несколько стандартов языка, обновляемых с завидной регулярностью. Скорость обновления диктуется самой идеологией Форт-системы, как переносимого и не завися­щего от платформы продукта. Американский национальный стандарт описывает версию ANS Forth, такие компании, как IBM, HP, Sun, Apple и другие, поддерживают стандарт IEEE 1275 от 1994 года.

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

Как это бывает практически со всеми необъектными языками, родив­шимися достаточно давно, рано или поздно в них пытаются добавить понятие объекта. Но если в одни языки это понятие вписывается орга­нично, как, например, в Аду, то в Форте эти попытки привели к потере гибкости и не получили большого распространения.

Бесплатных версий Форта в мире довольно много. Информацию о них можно найти на сайте www.forth.org. Из коммерческих версий Форта можно выделить кросс-платформный вариант SwiftForth (www.forth.com). Вообще, множество версий языка Форт практически для всех мыслимых платформ объясняется максимальной простотой языка. Вы можете найти Форт для Windows и OS/2, для компьютеров Amiga и Macintosh, для систем Sun и так далее. И стоят они недорого — от 100 до 300 дол­ларов.

Для ряда задач, где требуется действительно быстрая переработка и анализ числовой информации, Форт пока незаменим, так как относи­тельная простота языка в сочетании с его гибкостью и широкой рас­пространенностью позволяют решать эти задачи очень эффективно, не прибегая к ассемблеру.

Пропел ли Пролог свою «лебединую песню»?

Пролог по праву считается одним из наиболее ярких языков програм­мирования. Заложенная в него концепция логического программиро­вания с годами только набирает популярность.

В отличие от подавляющего большинства других языков Пролог (Prolog) обычно рассматривается в одном контексте с понятием «логи­ческое программирование». Сторонники этого направления считают. Что человек должен не задавать компьютеру последовательность команд на некоем ориентированном на компьютер языке, а описывать саму задачу в абстрактных логических терминах, не оперирующих определениями «байт» или «указатель». Иными словами, надо создать своего рода модель анализируемой проблемы и попытаться получить положительные или отрицательные результаты этого анализа.

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

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

Фактически Пролог является не процедурным, а декларативным язы­ком. Человек лишь описывает структуру задачи, а «внутренний мотор» Пролога сам ищет решение. Более того, в языке вообще не существует понятия последовательности команд — она скрыта в математической модели языка. Хотя, конечно, небольшой список «линейных» опера­торов типа repeat присутствует, но он ограничен возможностями исполь­зования лишь для конкретных случаев.

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

Автор языка Пролог Алан Колмероэ начал работу над полноценной компьютерной реализацией трудов Ковальского в 1972 году во фран­цузском университете Марсель-Экс. Он составил алгоритм формаль­ной интерпретации процесса логического вывода и разработал систему автоматического доказательства теорем, которая была написана на Фортране. Она-то и послужила прообразом Пролога. Название языка произошло от Programmation en Logique — ЛОГическое Программи­рование. Говорят, что придумала это название жена Алана. В первое время, в начале 70-х годов, Пролог был не очень популярен. Как и Лисп, он пребывал в забвении, вызванном отсутствием хороших реализаций. Но вскоре появились первые компиляторы с этого языка. В частности, прекрасная реализация Дэвида Уоррена для компьютера DEC-W в Эдинбурге стала своего рода стандартом, сохранившимся до сегодняшнего дня. Эффективность этой версии заставила специалистов по искусственному интеллекту по-новому взглянуть на Пролог. В неко­торых приложениях, типичных для Лиспа, таких как обработка спис­ков, Пролог уже не уступал своему конкуренту. В дальнейшем это сти­мулировало ряд специалистов по логическому программированию к переходу на использование Пролога.

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

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

Сразу после появления эдинбургской версии Пролога было успешно осуществлено несколько проектов, которые ранее казались очень слож­ными для реализации. Появилась возможность создания интеллекту­альных нереляционных баз знаний с иерархической структурой на основе стандартного механизма с гибкой организацией очень сложных запросов. Были написаны эффективные программы для решения пере­борных задач, в частности из области молекулярной биологии и проек­тирования СБИС, где требовалось учитывать либо сложные внутренние структуры, либо большое число правил, описывающих организацию объекта. Хорошо зарекомендовал себя Пролог в качестве экспертной оболочки. А задачи грамматического разбора прямо-таки просились быть решенными на Прологе. Что весьма характерно, первый высоко­производительный компилятор этого языка (эдинбургская версия) был написан на самом Прологе! И немудрено, ведь все формальные синтак­сические описания грамматик в форме Бэкуса прекрасно записываются в терминах Пролога.

Но в силу своей специфичности и сильной ориентированности на встро­енные алгоритмы поиска доказательств Прологу не суждено было воплотиться в конкретном стандарте, который получил бы массовое признание. На сегодня имеется стандарт ISO/IEC 13211-1:1995, но он поддерживается далеко не всеми коммерческими системами, имеющими различные принципы реализации и цели, для которых планируется использовать эти системы. Фактически первым и единственным стандартом осталась версия языка, созданная в Эдинбурге для PDP в 70-е годы! И хотя ее поддерживают не все сегодняшние системы, их разработчики обычно прилагают к своим продуктам препроцессор, пе­реводящий программу данного диалекта к эдинбургскому виду.

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

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

В целях получения высокоэффективных исполняемых модулей были предприняты попытки написания компиляторов, транслирующих текст Пролог-программ в код на языке С. Однако, в отличие от проце­дурных языков сверхвысокого уровня, для Пролога хорошего резуль­тата добиться не удалось. Структура декларативной «программы» с большим количеством базовых фактов приводила к появлению крайне неуклюжих конструкций. Например, появлялись операторы switch языка С с более чем 15000 (!) условиями выбора case. Такие синтаксически корректные выражения многие компиляторы считали ошибкой или выдавали неэффективный код.

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

Имеются бесплатные версии Пролога для реализаций на параллельных компьютерах, но они либо усечены до возможности исполнения не более чем на двух процессорах, либо неэффективны. Да и коммерческих парал­лельных версий не так много. Это, например, Paralogic и Densitron CS Prolog для транспьютеров. Информации по этим версиям очень мало. Впрочем, неплохие общедоступные альтернативы параллельному Про­логу предлагаются японцами в рамках проекта вычислительных сис­тем пятого поколения (см. далее).

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

Для примера приведем систему SWI-Prolog (ftp://swi.psy.uva.nl), содержа­щую быстрый компилятор, профилировщик, набор библиотек и удоб­ный интерфейс для подключения модулей на языке С. Она реализо­вана для ряда С/шя-платформ, таких как HP и Linux, а также для Windows, NeXT, OS/2, Sun и SPARC.

Несколько лет назад в Пролог было введено понятие объекта. Появился ряд объектных диалектов, таких как freeware-версия OL(P) Objec: Layer for Prolog. Это простой компилятор объектного кода в обычный Пролог, поддерживающий все принципы объектно-ориентированного программирования, вплоть до множественного наследования. Не обо­шлось, конечно, и без коммерческих объектных версий, не получив­ших, впрочем, большого успеха из-за появления нового полудеклара­тивного языка с мощными средствами объектно-ориентированног программирования — Smalltalk.

Из коммерческих реализаций Пролога надо упомянуть бывшую одно время весьма популярной систему Arity Prolog 6.1. Вариант Delphin: Prolog, работающий на ряде Unix-платформ, включает в себя высокс производительные компилятор и интерпретатор, интерфейсные библи I теки и поддерживает эдинбургский стандарт. Для системы Windoi имеется прекрасная 32-разрядная версия LPA-Prolog как со «стандарт­ным», так и с расширенным объектным синтаксисом, с набором бис лиотек для работы с оконным интерфейсом, с поддержкой DDE и пр токола ODBC и с возможностью создания библиотек DLL.

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

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

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

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