vitus_wagner (
vitus_wagner) wrote2009-12-11 12:00 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
Возрождение логического программирования
Когда-то давно японцы с большой помпой организовали проект "компьютеров 5-го поколения". С упором на логическую парадигму, в частности язык Prolog. Проект с треском провалился.
В начале 90-х использованрие Prolog воспринималось скорее как курьез, хотя по крайней мере одну геоинформационную систему в нашей лаборатории в Почвенном институте (еще до моего прихода туда) на Turbo Prolog написали.
Потом почти 20 лет в тех областях IT, с которыми мне приходилось иметь дело, единственным реально используемым языком логического программирования был make.
А вот сегодня
abbra пишет об использовании Prolog в системе управления энергопотреблением Nokia N900.
Я злобно ругаюсь у него в комментариях. Почему? Да точно так же я бы ругался если бы кто-то сегодня использовал Fortran IV для решения задачи которую стоит решать в каком-нибудь Matlab или использования gw-basic там, где под рукой есть интерпретатор Python.
Другое дело, что предложить инструмент логического программирования эквивалентный по зрелости Python или Matlab я, пожалуй, не возьмусь. Если проводить параллель между Prolog и Fortran (хотя может быть, разумее сравнивать Prolog с basic - уж больно до хрена диалектов и Turbo среда опять же существовала), то make - это аналог bourne shell. Причем даже gnu make - ни разу не bash, а в лучшем случае dash. На bash/zsh тянут разве что bras и ему подобные make replacements.
А вот языков которые были бы в области логического программирования тем, чем являются современные продвинутые скриптовые языки (включая и нелюбимый мной php) в области императивного программирования - мне что-то неизвестно.
Но вообще тенденция возвращения логического программирования интересна. Да, конечно, мы потеряли 20 лет. Но теперь, пусть из-за внутренних потребностей вычислительной техники - управления её собственным энергопотреблением, возвращаются технологии, которые пригодны для управления объектами реального мира. Вспомним, что Шумил описывает управление киберами именно как логическое программирование.
В начале 90-х использованрие Prolog воспринималось скорее как курьез, хотя по крайней мере одну геоинформационную систему в нашей лаборатории в Почвенном институте (еще до моего прихода туда) на Turbo Prolog написали.
Потом почти 20 лет в тех областях IT, с которыми мне приходилось иметь дело, единственным реально используемым языком логического программирования был make.
А вот сегодня
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Я злобно ругаюсь у него в комментариях. Почему? Да точно так же я бы ругался если бы кто-то сегодня использовал Fortran IV для решения задачи которую стоит решать в каком-нибудь Matlab или использования gw-basic там, где под рукой есть интерпретатор Python.
Другое дело, что предложить инструмент логического программирования эквивалентный по зрелости Python или Matlab я, пожалуй, не возьмусь. Если проводить параллель между Prolog и Fortran (хотя может быть, разумее сравнивать Prolog с basic - уж больно до хрена диалектов и Turbo среда опять же существовала), то make - это аналог bourne shell. Причем даже gnu make - ни разу не bash, а в лучшем случае dash. На bash/zsh тянут разве что bras и ему подобные make replacements.
А вот языков которые были бы в области логического программирования тем, чем являются современные продвинутые скриптовые языки (включая и нелюбимый мной php) в области императивного программирования - мне что-то неизвестно.
Но вообще тенденция возвращения логического программирования интересна. Да, конечно, мы потеряли 20 лет. Но теперь, пусть из-за внутренних потребностей вычислительной техники - управления её собственным энергопотреблением, возвращаются технологии, которые пригодны для управления объектами реального мира. Вспомним, что Шумил описывает управление киберами именно как логическое программирование.
no subject
Из интересных разработок в области ЛП отмечу Mercury и Curry. Первый очень эффективен, хоть и поддержка ЛП ограничена. Curry очень красив (синтаксис и многие фичи взяты из Haskell), но как-то вяло развивается.
Но сейчас более интересно обобщение ЛП - программирование в ограничениях.
no subject
А вот насчет Curry как современного языка ЛП надо посмотреть. Тем более что Haskell моден. Из этого может получиться "php от ЛП".
no subject
Да, эт надо бы. Обкатка технологии на массах - это полезно.
no subject
А серьезных ляпов в дизайне Prologа, которые давали бы повод сравнивать его с Fortranом, я не вижу. Кое-чего (например предикатов высших порядков) так не хватает, но в остальном - приличный язык.
По моему, хорошо подходит для обучения. Я, правда, дочку научить не смог - но мне вообще педагогических способностей не хватает.
no subject
Просто со времен создания пролога Computer Science ушла далеко вперед. Кстати, поэтому и не удается научить ребенка прологу. Ребенок просто не может понять "а нафига это?". Нужны библиотеки, которые позволяли бы легко и естественно взаимодействовать хотя бы с игровой реальностью. Попробуй make поучить. На примере каких-нибудь ценных для ребенка задач.
Вот написать стратегическую игру, в которой задачи юнитам можно будет описывать в теминах логического программирования, дети моментально начнут ему учиться.
no subject
А мотивация для Prolog-а есть. На нем удобно и красиво логические задачки решать. Мы с дочкой числовые ребусы решали - за одно и умножение слолбиком повторили.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
Re: Colobot
(no subject)
(no subject)
no subject
Извиняюсь, но что-то матлаб за альтернативу не держу. Особливо с учётом несвободности оного.
А более и считать-то нечем.
no subject
(no subject)
no subject
А вообще жалко что SISAL загнулся. Для расчетов он хорошо бы подошел.
(no subject)
(no subject)
no subject
no subject
(в качестве ракламы) А вообще близкие ссылка есть в юзеринфо
no subject
no subject
no subject
(no subject)
no subject
Тогда столкнулся с эффектом недостаточной производительности.
то бишь простенькую задачу пролог тянул, но такие простенькие я и в уме быстро решал.
а там где перебор был по-больше, то пролог просто "зависал", и для получения ответа пришлось переписать всю логику на C, который, как раз вполне справился.
После чего мои эксперементы с прологом закончились.
no subject
Насколько я помню, то что у меня в распоряжении было в 94, существенно уступает той доле ресурсов N900 которую
Собственно, провал проекта 5-го поколения в частности связан именно с тем, что тогдашние компьютеры были слабоваты. Сейчас мы с такой легкостью разбрасываемся гигагерцами и гигабайтами на кривые GUI, что prolog на этом фоне может оказаться вполне эффективным инструментом.
no subject
Тут никакого процессора не хватит.
Проще четко прописать алгоритм "как считать".
Хотя, если действительно прогресс есть и машина сама может построить оптимизированый алгоритм - то тогда дело другое.
(no subject)
(no subject)
no subject
no subject
В Mercury запретили многие фичи, которые снижают производительность. На нем можно писать очень эффективно.
no subject
Угу.
Что-то такое и вспоминается.
В Mercury запретили многие фичи, которые снижают производительность. На нем можно писать очень эффективно.
Будем знать.
no subject
Угу. Тут кто-то (вспомнить бы кто...) явным образом предлагал Oz (ах, да, "ссылки давать"... в общем, Mozart/Oz) как современный Питон. Он принципиально, по построению, мультипарадигменный, и программирование в ограничениях среди прочих парадигм там тоже есть. Единственное "но": на традиционно питоновских (перловых etc...) задачах -- обработке строк -- он тормознооой. Впрочем, Эрланг этим тоже отличается, и ничего, используют помаленьку. Да, кстати, весь Эрланг внутри Оз тоже есть. Разве что насчёт подмены модулей на лету не уверен, и то, кажется, видел в примерах реализацию.
... Если я правильно ошибаюсь ...
no subject
А для серьезной обработки строк (например в биоинформатике) интересно приспособить Рефал. Кстати, тоже во многом логический ;-).
no subject
(no subject)
no subject
... Защита от дурака на дур не рассчитана ...
no subject
... Разве только вот воробьи ...