Есть тут те, кто знает такой необычный язык програмирования как пролог? Стоит ли его изучать? Где найти годные книги для его изучения? Как перестроить мышление, которое привыкло к императивному и объекто ориентированному программированию на c, c++, java, php, python, javaScript, и понять суть логического программирования?
>>396951 Старьё. Если тебя интересует логическое программирование то бери сразу Mercury.
Меркурий охуенный язык, с навороченной системой типов, во многом пизже, чем у хаскеля и полной поддержкой логического программирования, включая экзистенциально типизированные предикаты, предикаты как методы тайпклассов, предикаты-лямба-выражения и предикаты-типы высшего порядка.
Можно конечно начать с пролога, чтобы осилить азы ЛП, но в результате всё равно придёшь к Меркурию если на забъёшь хуй по дороге. Есть ещё Curry, но это тот же хаскель, со сбоку прикрученной логической парадигмой, хуита, да и в отличие от Mercury - нихуя не развивается.
>>396951 У меня другой вопрос, может кто-то на пальцах объяснить суть пролога/его отличие от остальных языков? Например так:
1. Программа на лиспе это одна большая функция, вызывающая другие функции вместо последовательности операторов 2. Функции в лиспе вызываются как (f x y) вместо f(x, y)
Или: 1. В Forth'е нет переменных вместо них используется один глобальный стек 2. Программа на Forth'е это последовательность операций над стеком. 3. Операциям не передаются аргументы в коде программы, они используют значения на вершине стека
>>398547 Все функции логические. Например длина строки пишется как len(x, y) и len(3, 'huj') == true Все программы пишутся как логические выводы. Паттерн матчинг.
О, нихуя, пролог-тред. Меня ему учили в институте, при том что мы инженеры и нас никто никогда не учил серьёзным алгоритмам, современным фреймворкам и прочему. Программирование нам надо чисто чтобы свою работу автоматизировать, численный метод какой реализовать и т.п. Поначалу мы все охуевали и не знали, как на нём писать, потом меня осенило и я с удовольствием написал все задания за семестр. А на экзамене группа наиболее продвинутых студентов писала экспертную систему на этом деле. А потом мои одногруппники показали преподу выдачу хедхантера на запрос "пролог" и там было три вакансии, бухгалтер, охранник и водитель - в компанию ООО "ПроЛог".
Короче, это интересное развлечение может быть, но не уверен, что такой подход - вывод решения из правил мира - кто-то сейчас использует
Студент, запомни: твой научник тоже был романтичным студентом, и ему тоже не давали покоя «инновационные технологии» своего времени. Возможно, некоторые из них он полюбил на всю жизнь. На пике популярности Prolog позиционировался как универсальный silver bullet, после которого никаких других языков не нужно, чем заразил умы многих. Если профессор пытается загипнотизировать тебя бородой на написание диплома на Прологе — беги! Вполне вероятно, что у него тяжелая травма на этой почве, и каждый год он выбирает жертву, которая будет пытаться смыть его позор и доказать всем. Тебя ждёт неминуемый FAIL с необходимостью переписать весь код за два дня до защиты, его ждёт новая жертва. По словам приезжих членов комиссии из ДС, прецеденты всё ещё случаются по всей стране.
Вот кодишь ты на нормальном языке, все более или менее кодится, ок, норм. Кодишь на прологе — и блять словно ты накурился. Ты, вроде бы, тоже кодишь, но этой какой-то ад и пиздец невообразимый, где запах можно описать стулом, а время — фиолетовое.
Аноны, нид хелп! Есть тут люди разбирающиеся в ПРОЛОГЕ? Объясните на пальцах вот эту часть кода -
%3 - процедура разделения списка на 2:в первом - с первого до N-го, во втором - с N+1 до последнего. раздел_спис ( [ ] ,_ ,_ ,_ ). раздел_спис ( B, 0 ,[], B ) :-!. раздел_спис ( [H|T] ,N, [H|A] ,B) :-N1=N-1, раздел_спис (T,N1,A,B).
Ну прям вот что каждый оператор делает, надо зачет сдать по этой хуйне, а пролог какой то наркоманский язык. Полный код - http://codepad.org/oXCIxLV0
>>402718 Ты должен понять это сам. Когда ты сможешь без проблем читать и писать Прологовский код, ты достигнешь просветления. Тебе откроется совершенно новая точка зрения на программирование в целом, ты словно увидишь новое измерение. Твой разум никогда уже не станет прежним.
>>398654 >Возможно, некоторые из них он полюбил на всю жизнь. Прям как мой кент и Дельфи. Люто бешено ненавидит Си-подобные языки, люто фапает на Дельфи, пишет на бэйсике, лол. Ненависть к силайк языкам аргументирует следующим: Блять, ненавижу скобочки, сука, параша. Препод говорил что скобочки не нужны, а у него 40 лет стажа, а у тебя профильки нету, хули ты пиздишь тут вообще? Он нас так учил! Так учил, что мы могли ночью проснуться и все определения пересказать! Вот ты, ты, сука, сможешь мне сейчас сказать в точности, что такое алгоритм?! А я чё?! Я могу! делает глубокий вдох и на выдохе быстро произносит Алгори́тм это набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий. Вот! Видишь! Столько лет прошло, а я помню! И вообще у нас препод говорил, что Паскаль и Дельфи разработали для западных программистов онли, а Си и С++ разработали что бы запутать, иначе нахуя столько скобоче использовать и фигурные блять и квадратные, а Дельфи всё заебись begin и end и всё понятно.
>>402834 %3 - процедура разделения списка на 2:в первом - с первого до N-го, во втором - с N+1 до последнего. раздел_спис ( [ ] ,_ ,_ ,_ ). % пустые списки мы не раздеяем раздел_спис ( B, 0 ,[], B ) :-!. % список когда разделяется с 0-я получается пустой спитсок и наш список раздел_спис ( [H|T] ,N, [H|A] ,B) :-N1=N-1, раздел_спис (T,N1,A,B). % [H|T] уже раделен на [H|A] и B с позиции N если A,B яволяются разделением T с позиции N-1 -------- НО В PROLOG-Е ЕСТЬ ТАКАЯ ТОНКОСТЬ ЧТО НЕ ВСЯКАЯ ПРОГРАММА ВЕРНАЯ С ТОЧЬКИ ЗРЕНИЯ ЛГОГИКИ БУДЕТ РЕШЕНА МАШИНОЙ, БОЛЬШЕНСТВО ПРОГРАММ ЗАЦИКЛИВАЮТСЯ, ПОЕТОМУ В УЧЕБНИКЕ >>402775 МНОГО УДЕЛЯЕТСЯ ИЗУЧЕНИЮ ТОВО КАК ВЫПОЛНЯЕТСЯ ПРОГРАММА НА PROLOG МАШИНОЙ ЧТО И ФВЛЯЕТСЯ НАИБОЛЕЕ ПОЛЕЗНОЙ ЧАСТЬЮ КНИГИ ТОЕСТЬ КНИГА УЧИТ КАК ПИСАТЬ ПРОГРАММЫ ПО ТВОИМ РАЗЗУЖДЕНИЯМ
>>402845 >раздел_спис ( [H|T] ,N, [H|A] ,B) :-N1=N-1, раздел_спис (T,N1,A,B). >% [H|T] уже раделен на [H|A] и B с позиции N если A,B яволяются разделением T с позиции N-1 Спасибо анон, все понял кроме этого. Можешь как нибудь поподробней расписать момент "если A,B яволяются разделением T с позиции N-1"
Стоит ли его изучать? Где найти годные книги для его изучения?
Как перестроить мышление, которое привыкло к императивному и объекто ориентированному программированию на c, c++, java, php, python, javaScript, и понять суть логического программирования?