Возрождение логического программирования
Dec. 11th, 2009 12:00 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Когда-то давно японцы с большой помпой организовали проект "компьютеров 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
Date: 2009-12-11 09:38 am (UTC)Просто со времен создания пролога Computer Science ушла далеко вперед. Кстати, поэтому и не удается научить ребенка прологу. Ребенок просто не может понять "а нафига это?". Нужны библиотеки, которые позволяли бы легко и естественно взаимодействовать хотя бы с игровой реальностью. Попробуй make поучить. На примере каких-нибудь ценных для ребенка задач.
Вот написать стратегическую игру, в которой задачи юнитам можно будет описывать в теминах логического программирования, дети моментально начнут ему учиться.
no subject
Date: 2009-12-11 09:46 am (UTC)А мотивация для Prolog-а есть. На нем удобно и красиво логические задачки решать. Мы с дочкой числовые ребусы решали - за одно и умножение слолбиком повторили.
no subject
Date: 2009-12-11 09:52 am (UTC)Я об этом и написал. Для того, чтобы от логического программирования была польза, необходимо
1. Собрать исходные данные для принятия решения. Т.е. нужен интерфейс к тому, что эти данные предоставляет.
2. Суметь это решение реализовать. Т.е. нужен интерфейс к эффекторам.
Сферический пролог в вакууме - это примерно как C без не только POSIX, но и вообще без libc. Не то чтобы вещь совсем бесполезная (можно ядра ОС писать, например), но с очень ограниченным диапазоном применения.
no subject
Date: 2009-12-11 09:58 am (UTC)no subject
Date: 2009-12-11 10:01 am (UTC)no subject
Date: 2009-12-11 10:02 am (UTC)no subject
Date: 2009-12-11 09:52 am (UTC)no subject
Date: 2009-12-11 09:53 am (UTC)no subject
Date: 2009-12-11 10:11 am (UTC)no subject
Date: 2009-12-11 10:13 am (UTC)no subject
Date: 2009-12-11 10:18 am (UTC)no subject
Date: 2009-12-11 09:54 am (UTC)no subject
Date: 2009-12-11 10:14 am (UTC)no subject
Date: 2009-12-11 10:43 am (UTC)Даже заглядывал в исходники freecraft в надежде что руки дойдут реализовать. Но руки так и не дошли, да и исходники мне не понравились.
PS Есть игра Colobot, но там возможности роботов ограничены, некоторые операции может выполнять только человек. Да и винда требуется...
no subject
Date: 2009-12-11 11:24 am (UTC)Re: Colobot
Date: 2009-12-12 02:25 pm (UTC)И вообще это не только с ней проблема такая. Как я понимаю, и MindRover, и TORCS, и все эти "стотыщпицот" различных "войн роботов", подразумевают императивное программирование.
no subject
Date: 2009-12-11 12:03 pm (UTC)Там каждому неписю в команде можно повесить tactical clause - при наступлении таких-то ситуаций выполнять такие-то действия. Действия от самых грубых ("напасть", "встать в оборону") до, например, "зайти со спины и атаковать" или "догнать и перехватить атакующего на себя". Ситуации тоже разнообразны. В результате можно запрограммировать что-нибудь интересное.
Что интересно - количество таких clauses можно нарабатывать с экспой и со специализациями, в результате персонаж с опытом "умнеет".
no subject
Date: 2009-12-12 02:27 pm (UTC)