vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2009-12-11 12:00 pm

Возрождение логического программирования

Когда-то давно японцы с большой помпой организовали проект "компьютеров 5-го поколения". С упором на логическую парадигму, в частности язык Prolog. Проект с треском провалился.

В начале 90-х использованрие Prolog воспринималось скорее как курьез, хотя по крайней мере одну геоинформационную систему в нашей лаборатории в Почвенном институте (еще до моего прихода туда) на Turbo Prolog написали.

Потом почти 20 лет в тех областях IT, с которыми мне приходилось иметь дело, единственным реально используемым языком логического программирования был make.

А вот сегодня [livejournal.com profile] 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 лет. Но теперь, пусть из-за внутренних потребностей вычислительной техники - управления её собственным энергопотреблением, возвращаются технологии, которые пригодны для управления объектами реального мира. Вспомним, что Шумил описывает управление киберами именно как логическое программирование.

[identity profile] permea-kra.livejournal.com 2009-12-11 09:51 am (UTC)(link)
Витус, а посмотрите на языки, которые term rewriting. типа Pure.

[identity profile] slobin.livejournal.com 2009-12-11 10:37 am (UTC)(link)
Часа два, наверное, смотрел. За это время вынес два соображения:
  1. Для начала можно вообще не думать о нём как о "языке", а думать как о замене bc. Как об ОЧЕНЬ мощном калькуляторе. Витус, помнишь задачку от Белявского про 9^9^9? Pure на ней всех порвал, как Тузик грелку. Собственно, насколько я понял, автор языка сам им пользуется, чтобы видео и звук обсчитывать. Ну то есть считают, естественно, библиотеки, а язык -- просто удобный к ним интерфейс.
  2. Семантика переписывания термов поначалу вводит в ступор при мелких ошибках. Например, если 3%6 вычислился обратно в 3%6 -- это потому что дробь не сокращается, или потому что я use math; сказать забыл? Пример нарочно тривиальный, но возможны и более реалистичные.

Но вообще да, интересная чем-то штука. Правда, совсем не Пролог. ;-) P.S. ссылка

... Я тут посчитал немного ...

[identity profile] permea-kra.livejournal.com 2009-12-11 12:39 pm (UTC)(link)
term rewriting == переписыватели выражений. prolog внутри себя, как я понял из вики, делает именно это . Т. е. Pure вываливает свои потроха наружу. Плюс мне попадалась пара статей, где на term rewriting перекладывали type theory. Ну и выглядит он не столь негуманоидно, как лиспы, хаскелы и прологи. Поэтому, кмк, весчь интересная...

[identity profile] beldmit.livejournal.com 2009-12-11 05:57 pm (UTC)(link)
О! Я это тогда не просек...