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
А вот насчет Curry как современного языка ЛП надо посмотреть. Тем более что Haskell моден. Из этого может получиться "php от ЛП".
no subject
Да, эт надо бы. Обкатка технологии на массах - это полезно.
no subject
А серьезных ляпов в дизайне Prologа, которые давали бы повод сравнивать его с Fortranом, я не вижу. Кое-чего (например предикатов высших порядков) так не хватает, но в остальном - приличный язык.
По моему, хорошо подходит для обучения. Я, правда, дочку научить не смог - но мне вообще педагогических способностей не хватает.
no subject
Просто со времен создания пролога Computer Science ушла далеко вперед. Кстати, поэтому и не удается научить ребенка прологу. Ребенок просто не может понять "а нафига это?". Нужны библиотеки, которые позволяли бы легко и естественно взаимодействовать хотя бы с игровой реальностью. Попробуй make поучить. На примере каких-нибудь ценных для ребенка задач.
Вот написать стратегическую игру, в которой задачи юнитам можно будет описывать в теминах логического программирования, дети моментально начнут ему учиться.
no subject
А мотивация для Prolog-а есть. На нем удобно и красиво логические задачки решать. Мы с дочкой числовые ребусы решали - за одно и умножение слолбиком повторили.
no subject
Я об этом и написал. Для того, чтобы от логического программирования была польза, необходимо
1. Собрать исходные данные для принятия решения. Т.е. нужен интерфейс к тому, что эти данные предоставляет.
2. Суметь это решение реализовать. Т.е. нужен интерфейс к эффекторам.
Сферический пролог в вакууме - это примерно как C без не только POSIX, но и вообще без libc. Не то чтобы вещь совсем бесполезная (можно ядра ОС писать, например), но с очень ограниченным диапазоном применения.
no subject
no subject
(no subject)
no subject
no subject
no subject
no subject
(no subject)
no subject
no subject
no subject
Даже заглядывал в исходники freecraft в надежде что руки дойдут реализовать. Но руки так и не дошли, да и исходники мне не понравились.
PS Есть игра Colobot, но там возможности роботов ограничены, некоторые операции может выполнять только человек. Да и винда требуется...
no subject
Re: Colobot
И вообще это не только с ней проблема такая. Как я понимаю, и MindRover, и TORCS, и все эти "стотыщпицот" различных "войн роботов", подразумевают императивное программирование.
no subject
Там каждому неписю в команде можно повесить tactical clause - при наступлении таких-то ситуаций выполнять такие-то действия. Действия от самых грубых ("напасть", "встать в оборону") до, например, "зайти со спины и атаковать" или "догнать и перехватить атакующего на себя". Ситуации тоже разнообразны. В результате можно запрограммировать что-нибудь интересное.
Что интересно - количество таких clauses можно нарабатывать с экспой и со специализациями, в результате персонаж с опытом "умнеет".
no subject
no subject
Извиняюсь, но что-то матлаб за альтернативу не держу. Особливо с учётом несвободности оного.
А более и считать-то нечем.
no subject
no subject
no subject
А вообще жалко что SISAL загнулся. Для расчетов он хорошо бы подошел.
no subject
MPI как? OpenMP могут?
no subject
На K написана СУБД, которая поддерживает кластера. Правда не MPI, а свой протокол.