Хм, во-первых Пролог сам по себе большая БД, с очень удобным языком запросов!
Во-вторых что вы понимаете под объемами? Да не переживайте в последних Пролог системах, давно уже сняли ограничения на 2 Mb объем памяти :)
Да и есть примочки к базам данным, используя odbc, все таблицы в этом случае представляются как базы фактов и бэктрекинг поддерживается, изнутри SQL.
Вот вы и пришли ко второй ошибке :)
Y is X + 1. Зафейлится на любом Прологе, потому что у оператора is справа не должно быть переменны, а X переменная.
Я обязательно расскажу в статье в каких случаях можно использовать Пролог коммерческих, государственных и opensource проектах. Ссылку на один приводил ниже, а кратко используйте для чего он предназначен, для декларативного описания задач.
Насчет интеграции не поворотлив, это отговорки ленивых, которые уже забыли как компилировать C код, того же XSB, и подключать нативные библиотеки. И тем более отговорки, потому как есть библиотеки, которые например обычный ассемблерный (конечно не любой), переводят в Java байткод.
Просто Пролог — не мейнстрим. А куда ему развиваться? Вы про какой Пролог? Мне кажется SWI-Prolog и XSB очень даже активно развиваются.
ИМХО, Visual Prolog не долюбливаю (извращенцы, писать UI на Прологе и операции присваивания).
SQL не язык программирования, вот об этом я пытался сказать. То что он интерпретируется некоторой машиной не делает его языком программирования, напишите на SQL вычисление факториала хотя бы :)
Условная конструкция (; ->) легко выражается и на чистом Прологе с использованием отсечения.
В принципе конструкции not достаточно, для того, чтобы полностью избавиться от отсечения. Но отсечение дает возможность управлять программисту обратный бэктрекингом, что чаще всего плохо :)
Да, под «чистым» Прологом, я понимаю Пролог без отсечения, хотя в реальности чистый Пролог практически не применим, но с него обязательно надо начинать. А потом уже ISO Prolog, Mercury.
Я писал выше использовать лучше всего Prolog в связке с другими языками, так я и поступаю. Особенно мне нравится возможность создания в Прологе DomainSpecificLanguage, об этом я обязательно хотел бы рассказать.
Вот пример проекта использующий Пролог для маленькой специфичной задачи: голосовые инструкции
В написании программ на Прологе сегодня, абсолютно нет необходимости, хотя для многих задач он подходит гораздо лучше.
Пролог — может и не современный, зато абсолютно чистый :) И чем больше я пишу на нем, тем меньше я хочу чтобы в нем вообще что-то менялось. Я даже готов убрать все предикаты по чтению файлов, сокетов, все эти императивные штуки, отсечение хочется отрезать, оставив только not — предикат.
Для меня будущее Пролога в связке с другими языками
Назовите еще языки этой парадигмы? Mercury я бы не брал в счет, по сути дела, такой же Пролог, просто с разными фишками из функционального программирования. Возможно Рефал можно назвать другим языком.
Пролог не печален :) Просто порог вхождения крайне высок, я периодически слежу за обновлениями XSB и SWI-Prolog и поверьте они развиваются. Среду разработки можно взять Eclipse с плагином.
Проблема Пролога в том, что его одного нельзя использовать исключительно для написания программы, так как времена консольных приложений прошли (все уже написаны). А для того, чтобы его использовать в связке не все берутся.
Хотя могу привести пример: я использую сейчас Пролог для настройки голосовой помощи на разных языках, так как числа читаются абсолютно по-разному в разных языках, то файлы конфигураций в виде правил Пролога идеально подходят :), обычные property файлы просто не дают гибкости. И между прочим много пользователей прекрасно справилось с локализацией своего языка при помощи Пролога.
Как писал Joshua Bloch: на втором курсе у нас отсеивалась большая половина, потому что не понимала как работать с указателями; я бы перефразировал на 4-м курсе можно отсеивать всех, кто не может перевернуть список на Прологе :)
Эх, а я бы Widgets не сменил, по крайней мере сейчас :)
Да мне тоже нравится сборка IPhone выглядят монолитно, размер нормальный. Может туда можно Android поставить? ;)
Серьезно Apple и все вокруг нее берет кучу денег со всех и с каждого (одни шнуры сколько стоят, а еще подставки, пленки и т.п.), насаждает свои продукты, как религию. А сколько людей ходят с Iphone и говорят — я самый «крутой перец», хотя даже не могут громкость отрегулировать музыкальном плеере.
В общем в этой всей ситуации добивает нерациональность использования и нецелесообразное трата средств. Большинству людей вполне достаточно будет и обычного телефона вместо iphone (звонить, музыку слушать и интернет), да и у половины бы пользователей Android отобрал за ненадобностью.
Так привязка же осуществляется при помощи легальных GPX треков.
Да и про справочники писали, что они охраняются авторским правом в США, а не в Европе. По такому принципу можно взять и скопировать векторные данные прямо с Navteq карт.
Ну а то, что обрисовка спутниковых карт — это процесс творческий, тут я думаю никто спорить не будет :)
Кстати у WikiMaps, что с Гуглом соглашение какое-то специальное?
Во-вторых что вы понимаете под объемами? Да не переживайте в последних Пролог системах, давно уже сняли ограничения на 2 Mb объем памяти :)
Да и есть примочки к базам данным, используя odbc, все таблицы в этом случае представляются как базы фактов и бэктрекинг поддерживается, изнутри SQL.
good(s(s(s(0)))).
Y is X + 1. Зафейлится на любом Прологе, потому что у оператора is справа не должно быть переменны, а X переменная.
Просто Пролог — не мейнстрим. А куда ему развиваться? Вы про какой Пролог? Мне кажется SWI-Prolog и XSB очень даже активно развиваются.
ИМХО, Visual Prolog не долюбливаю (извращенцы, писать UI на Прологе и операции присваивания).
В принципе конструкции not достаточно, для того, чтобы полностью избавиться от отсечения. Но отсечение дает возможность управлять программисту обратный бэктрекингом, что чаще всего плохо :)
Да, под «чистым» Прологом, я понимаю Пролог без отсечения, хотя в реальности чистый Пролог практически не применим, но с него обязательно надо начинать. А потом уже ISO Prolog, Mercury.
good(y is x + 1) :- good (x).
В первую очередь не понятно, x, y — переменные? Тогда должны быть с большой буквы.
Если переписать в безоператорный вид, ваша программы выглядит так:
good(3).
good(is(Y, '+'(X, 1)) :- good(X).
Надеюсь можете представить, что программа будет выводить на запрос :- good(X). ;)
Вот пример проекта использующий Пролог для маленькой специфичной задачи: голосовые инструкции
В написании программ на Прологе сегодня, абсолютно нет необходимости, хотя для многих задач он подходит гораздо лучше.
Для меня будущее Пролога в связке с другими языками
Пролог не печален :) Просто порог вхождения крайне высок, я периодически слежу за обновлениями XSB и SWI-Prolog и поверьте они развиваются. Среду разработки можно взять Eclipse с плагином.
Проблема Пролога в том, что его одного нельзя использовать исключительно для написания программы, так как времена консольных приложений прошли (все уже написаны). А для того, чтобы его использовать в связке не все берутся.
Хотя могу привести пример: я использую сейчас Пролог для настройки голосовой помощи на разных языках, так как числа читаются абсолютно по-разному в разных языках, то файлы конфигураций в виде правил Пролога идеально подходят :), обычные property файлы просто не дают гибкости. И между прочим много пользователей прекрасно справилось с локализацией своего языка при помощи Пролога.
Да мне тоже нравится сборка IPhone выглядят монолитно, размер нормальный. Может туда можно Android поставить? ;)
Серьезно Apple и все вокруг нее берет кучу денег со всех и с каждого (одни шнуры сколько стоят, а еще подставки, пленки и т.п.), насаждает свои продукты, как религию. А сколько людей ходят с Iphone и говорят — я самый «крутой перец», хотя даже не могут громкость отрегулировать музыкальном плеере.
В общем в этой всей ситуации добивает нерациональность использования и нецелесообразное трата средств. Большинству людей вполне достаточно будет и обычного телефона вместо iphone (звонить, музыку слушать и интернет), да и у половины бы пользователей Android отобрал за ненадобностью.
Да и про справочники писали, что они охраняются авторским правом в США, а не в Европе. По такому принципу можно взять и скопировать векторные данные прямо с Navteq карт.
Ну а то, что обрисовка спутниковых карт — это процесс творческий, тут я думаю никто спорить не будет :)
Кстати у WikiMaps, что с Гуглом соглашение какое-то специальное?