2016-01-11, N_Ikhsanov, Парсинг на языке Prolog
2016-01-06, N_Ikhsanov, PROLOG для программистов
Из комментариев:
«пролог нужен только и исключительно для решения загадки Эйнштейна»
«Ну объясните мне, чем first order logic хорошее средство для описания процессов, идущих во времени: сначала происходит то-то, потом то-то, а потом то-то.»
«если почитать старые книги по Прологу, там объясняют, что вот ты тут декларируешь условия, цели и допустимые операции, а компьютер потом «думает сам», но потом оказывается, что реальность скромнее. Нельзя сказать, что сортированный список удовлетворяет таким-то критериям, а потом получить на выходе quicksort. Придётся программировать сортировку почти что явно, почти что как на любом императивном языке.»
«Чтобы написать ту же злосчастную сортировку списка, надо прыгнуть через обруч задом наперёд, пытаясь вникнуть в логику этого языка (по сути борясь с декларативностью и обеспечивая неявную императивность)»
«на Прологе легко объявить «морковь сын зайца» вместо «морковь корм для зайца» (ну бывает, копипастил, опечатался)»
«у Братко был пример, где обезьяна должна сначала придвинуть ящик к банану, а потом залезть на него и достать банан. И там же объяснялось, что сначала надо пробовать достать банан, а потом уже двигать, иначе система будет бесконечно двигать ящик (я могу ошибаться в деталях, но суть примерно такова).»
«надо думать, как бы логический вывод не улетел в бесконечную рекурсию, а это куда сложнее, чем придерживаться какого-нибудь простого правила типа "выделил память — не забудь освободить" (а с автоматической сборкой мусора и этой проблемы нет)»
«рекурсия — основа алгоритмического подхода "разделяй и властвуй", вполне себе универсального (работающего что в императивной, что в декларативной парадигмах)»
«списки и рекурсия есть везде, хоть в том же упомянутом Питоне. Равно как и отсутствие проблем с динамической памятью»
«для работы со списками рекурсия не обязательна, она обязательна для работы с деревьями»
Отредактировано Лис (2019-11-24 09:29:59)