golosptic: (Default)
[personal profile] golosptic
А вот кто меня может просветить. Внятно. По возможности - ссылками на РУССКОЕ объяснение современных концепций,
принятых во функциональных языках программирования. А то я в своём развитии далее ЛИСПа и переводной книжки по ПЛЭННЕРУ не пошёл - а тут проект намечается, где, судя по всему в качестве инструмента будет уместен именно функциональный язычек какой-то.
From: [identity profile] volodymir-k.livejournal.com
Функциональные вообще довольно сложные для восприятия.

Основная идея -- что объекты неизменны. Напрочь. А изменение получается созданием нового из данных существующего.

Вторая идея -- что программы тоже есть объекты. В натуре. Так же, как есть неназванные объекты, могут существовать неназванные (и вообще толко что созданные) программы. И мы их можем применять к существующим данным (а можем и формально комбинировать - то есть создавать новые программы, комбинируя и анализируя существующие).

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

Тема очень глубока. Я читал и классический Лисп одного финна, и стогий компромисс ГайСтила, и полупроцедурный бред от Столмэна, и знаменитую по Прологу от Ивана Братко, и смежные, полуСмолтоковую, переводную с японского -- про смолток-процессор Катану, и работы японцев, особенно ?Джона, что ли, Шапиро 1985 года по параллельному Прологу, и борландовский ужас около Пролога, и полуалгебраический труд по лямбда-функциям, их замыкании, классах и замыкании классов. По плэннеру вроде припоминаю книжку 1978 вроде года, эдакий недолисп с загнутыми пальцами кортежей.

Обращайтесь. Здесь.
From: [identity profile] krf.livejournal.com
Я когда-то интересовался Прологом (не профессионально). Наколько я помню, он не причислялся к функциональным языкам, т.к. основывается не на лямбда-функциях, а на исчислении предикатов. По-моему он назывался просто логическим (и у Братко, и у Шапиро)
From: [identity profile] volodymir-k.livejournal.com
Пролог -- конечно! Предикаты, никаких лямбд!
В функциональных никакого сопоставления. Вообще, с точки зрения Вечного Пролога -- функциональные языки есть грязная проститутство.

Но. Идея набора (массива) как списка-структуры (ДВУХЧЛЕННОЙ) -- от Лиспа идёт. Забавно!
From: [identity profile] potan.livejournal.com
Есть функциональный язык Рефал, который так же не основан на лямбда-исчислении.
Функциональное программирование основанно на понятии функции - единственный результат которой содерится в возвращаемом значении, которое определено однозначно.
Пролог (и некоторые другие языки - Mercurry, Curry) основан на более общем понятии - отношения.
И функциональное, и реляционное программирование иногда называют декларативным, подчеркивая его отличие от императивного.
From: [identity profile] golosptic.livejournal.com
Да почти все перечисленные источники мне тоже знакомы, и концептуально со старым у меня проблем нет. Но дело в том, что последняя из перечисленных Вами книг появилась году так в 87, кажется (в оригинале) - т.е., есть у меня подозрение, всё это мохом уже поросло. А вот что нового было разработано на данном направлении в 90ые и 2000ые годы - я не знаю :(

Date: 2004-01-09 01:09 am (UTC)
From: [identity profile] potan.livejournal.com
Хорошей описание парадигмы есть здесь. Более узкое, но, наверно, более практичное - здесь. Как элементарное могу посоветовать мое введение в Haskell - оно для школьников писалось.
У меня на бумаге есть "Филд А., Харрисон П.", но на него уже очередь :-).

А что за задача, если не секрет?

Date: 2004-01-09 01:42 pm (UTC)
From: [identity profile] golosptic.livejournal.com
Спасибо за линки - буду изучать их.
А что такое Филд А., Харрисон П.?

Задача связана с дата-майнингом на базе данных чрезвычайно большого объёма и с очень развесистыми и разнообразными характеристиками объектов.
Т.е. нужно выносить суждения по принципу 'в озере Байкал в 2002 году уменьшилось поголовье омуля на 10%, Байкальский ЦБК внедрил новую технологию очистки воды в 2001, в окрестной тайге продолжают дохнуть лиственницы, роза ветров оттуда-то - значит, скорее всего гадит соседний металлургический комбинат, выпускающий сталь по устаревшей технологии'. Т.е. там предпологается громадное количество мелких частных правил и объём БД с фактами такой, что любой Пролог в ужасе прячется по углам.

Date: 2004-01-10 02:55 am (UTC)
From: [identity profile] krf.livejournal.com
А почему Пролог прячется по углам?
Если проблема в том, что в традиционных реализациях Пролога факты хранятся либо в тексте программы, либо в файлах особого формата, то, насколько я знаю, уже есть версии, позволяющие подключаться к любым реляционным БД и рассматривать хранящиеся в них данные как факты Пролога.
Я даже находил в интернете статью о реализации дата-майнинга именно на основе соединения не-прологовых БД и системы обработки на Прологе (к сожалению, было это давно и ссылка у меня не сохранилась).
Или это связано с особенностями работы интерпретатора?

Date: 2004-01-10 08:32 am (UTC)
From: [identity profile] golosptic.livejournal.com
Элементарная прикидка производительности не позволяет надеяться, что на базе данных такого объёма Прологовский перебор с возвратами что-то сможет сделать.
Да и большая часть правил сводится к сопоставлению двух списков - атрибутов задающих пару объектов. Мне кажется, такие вещи естественнее делать на чём-то типа лиспа.

Date: 2004-01-12 01:28 am (UTC)
From: [identity profile] potan.livejournal.com
Филд А., Харрисон П. Функциональное программирование. М., Мир, 1993. Неплохая книжка переведенная на русский.

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

А Пролог вполне может оказаться хорошим. Методов ограничения перебора в нем достаточно. Mercury (прологоподобный, но более сложный язык) показывает очень хорошую производительность.

Date: 2004-01-12 12:35 pm (UTC)
From: [identity profile] golosptic.livejournal.com
На самом деле у проекта имеется определённая парадигма - как этот самый фреймоврк должен работать. Но имеющаяся реализация на C/C++ меня не удовлетворяет. Насчёт методов ограничения производительности - не знаю, т.к. (см. выше) с последними разработками не знаком. Всё прологообразное о чём прочёл в умных переводных книжках на базе с несколькими милиардами фактов должно по моим понятиям гибнуть мучительной смертью. Тут скорее на мой взгляд подходит модель семантической сети/фреймов. Но готовые реализации такой модели обладающие примелемыми эксплуатационными характеристиками мне неизвестно.
Page generated Jun. 18th, 2025 02:53 pm
Powered by Dreamwidth Studios