КАТЕГОРИИ: Архитектура-(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) |
Лекция 2. Область применения языков функционального и логического программирования
Закономерны вопросы, чем объясняется интерес к ФП и ЛП, дает ли их применение какие‑либо преимущества по сравнению с применением императивных или ООП языков, в чем состоят эти преимущества и какова сфера применения ФП и ЛП (если такие преимущества есть). Для ответа на эти вопросы нужно рассмотреть теоретические и практические аспекты. В практическом плане данные языки как языки программирования особенно удобны для реализации обработки типов данных, которые сами имеют рекурсивную природу: списков, деревьев, графов и сводящихся к ним структур. Такого рода задачи характерны для обработки символьной информации, т. е. для создания трансляторов и решения задач искусственного интеллекта: обработки естественного языка, трансформации и автоматического синтеза программ, аналитического преобразования формальных текстов и др. В этих случаях программы, написанные на ФП (ЛП), обычно в 5—10 раз короче программ, написанных в императивном стиле. При этом, что не менее важно, эти программы гораздо понятнее, их легче писать и отлаживать. Более того, существуют специальные технологии, с помощью которых написание программ из полуинтуитивного процесса превращается в науку (при условии, что известно описание обрабатываемых типов данных). Бытует мнение, что функциональное или логическое программирование ведет к потере производительности. Это утверждение справедливо только в той степени, в какой можно сказать, что за возможность писать на языке высокого уровня надо платить. Действительно, за счет сокращения времени написания программы (из‑за значительного сокращения размеров текста) определение многих вычислений, которые пришлось бы описывать на языках более низкого уровня, можно осуществить, используя механизмы генерации кода транслятором. Будучи универсальными, эти механизмы генерируют программы, которые потенциально могут быть оптимизированы в каждом конкретном случае путем написания кода вручную. В то же время, если при написании программы тщательно следить за эффективностью кода (например, максимально использовать в ФП так называемую «хвостовую рекурсию»), то такая программа после компиляции не уступит в эффективности программам, написанным на императивных языках. Более того, в некоторых случаях этот процесс оптимизации может быть автоматизирован за счет использования механизмов программных трансформаций. Кроме того, увеличение мощностей вычислительной техники сводит на нет возможную потерю производительности в общем случае. По данным для некоторых задач, реализуемых на языке Haskell, наблюдалось увеличение производительности до 2 раз по сравнению с языком С. Подтверждением возможности использования языков функционального программирования для создания коммерческих продуктов может служить реализация известного пакета Autocad с использованием языка Лисп. Появились также сообщения о реализации Канадской национальной системы бронирования авиабилетов на языке Python, поддерживающем функциональную парадигму. Многие идеи ФП нашли свое отражение в развиваемой компанией Microsoft технологии.NET. Разработчики.NET все‑таки решили добавить в C# и другие языки платформы.NET проблемно‑ориентированное расширение LINQ, поддерживающее интегрированный язык запросов. В LINQ можно использовать функции, которые представляются в виде деревьев выражений. В C# в определенной степени поддерживаются также идеи «ленивых вычислений». Последнее время интерес к языкам ФП и ЛП заметно растет в связи со свойственной им возможностью естественного распараллеливания вычислений, что делает их гораздо более перспективными в условиях появления многоядерных вычислительных комплексов. Наконец, данные языки обладают еще одним аспектом, делающим их обязательным объектом теоретического программирования (Computer Science). Дело в том, что благодаря присущей им декларативной семантике программы на этих языках представляют собой уже готовые математические объекты, которые реально могут исследоваться и обрабатываться с использованием математических методов. Это особенно важно в связи с тем, что программы, написанные на императивных или ОО‑языках, практически не поддаются исследованию такими методами. Хотя эта область исследований находится еще в начальной стадии, именно она обещает прорыв в будущем.
1. Искусственный интеллект: предмет, история развития, направления исследований.
Дата добавления: 2014-01-05; Просмотров: 3091; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |