Тут такая тема... столкнулся с Прологом (возможно кто - то знает. Означает что -то типа "Программирование в терминах логики" ).
Если упрощенно - то он схож с SQL, не считая того, что в SQL нет багов(основа - логика предикатов и кванторов, отлично реализованная в SQL. И главное правильно.).
Если кто сталкивался.
1) Мнение о этом "чуде".
2) Почему его до сих пор преподают?
Что меня поразило больше всего.
В языке не выполняются основные законы логики - коммутативность, отрицание(двойное отрицание)... остальное даже не проверял.
И при чем это прописано в стандарте!
Если вкратце - история его проста. В 80 -ых, прошлого века пытались создать новый тип компа. И многое ставили на Пролог.
Но не вышло, про него забыли. Не считая кучки энтузиастов и студентов.
Ваше мнение. Потому что после общения с фанами, понял что Пролог форева! :)
Тут такая тема... столкнулся с Ассемблером (возможно кто - то знает. Означает что -то типа "Системное программирование" ).
Если упрощенно - то он схож с IL, не считая того, что в IL нет прямой адресации(основа - инстукции, стек, отлично реализованные в IL. И главное правильно.).
Если кто сталкивался.
1) Мнение о этом "чуде".
2) Почему его до сих пор преподают?
Что меня поразило больше всего.
В языке нет основных синтаксических конструкций - циклы, методы(замыкания)... остальное даже не проверял.
И при чем это прописано в стандарте!
Если вкратце - история его проста. В 50 -ых, прошлого века задолбались писать в машинных кодах. И многое ставили на ассемблер.
Но не вышло, про него забыли. Не считая кучки энтузиастов и студентов.
Ваше мнение. Потому что после общения с фанами, понял что Ассемблер форева!
Тут такая тема... столкнулся с F# (возможно кто - то знает. Означает что -то типа "Функциональное программирование" ).
Если упрощенно - то он схож с C#, не считая того, что в C# нет поддержки асинхронности(основа - классы, методы, отлично реализованные в C#. И главное правильно.).
Если кто сталкивался.
1) Мнение о этом "чуде".
2) Почему его до сих пор преподают?
Что меня поразило больше всего.
В языке нельзя ничего менать - переменные, поля... остальное даже не проверял.
И при чем это прописано в стандарте!
Если вкратце - история его проста. В 2000 -ых, не было нормального функционального языка программирвоания под дотнет. И многое ставили на F#.
Но не вышло, про него забыли. Не считая кучки энтузиастов и студентов.
Ваше мнение. Потому что после общения с фанами, понял что F# форева!
Я изучал пролог в университете, означает что-то типа "Основы искуственного интеллекта".
Вобщем интересная вещь. Сейчас был бы не против использовать, если бы у него была подходящая инфраструктура.
Спасибо. Подходящая инфраструктура – это как мне понятно что – то вроде IDE?
Сейчас в основном используется SWI – Prolog. Проект открытый, поэтому конечно глючит. Но есть и плюсы: один из главных – поддержка стандарта.
Visual Prolog, он отошел от стандартов, в процессе развития … так что много спорного.
--------
Что касается ИИ. Именно по этой теме с ним и пересекся.
Сейчас в основном работаю с нейросетями, но там есть свои проблемы.
Если интересно, то можно посмотреть этакое сравнение в подходах к ИИ в небольшой статейке (писал для себя).
Пролог и нейронные сети(Prolog and Neural Network).
http://softvito.narod2.ru/prolog_and_neural_network/PrologAndNeuralNetwork1.html
Проблема в том, что с фанами Пролога, довольно сложно общаться – начинается обычный холливар.
Тем не менее, возникает много вопросов…
На вопрос почему в Прологе не выполняется коммутативность относительно and, а в SQL выполняется (как и все остальные законы логики), самым лучшим ответом было «так надо», «могу на прологе ОС написать».
Хотя оба языка носят декларативный характер и опираются на логику предикатов.
Вот поэтому интересно мнение опытных кодеров, которые сталкивались с прологом, и могут судить о нем имея большой опыт в других языках.
На мой взгляд, Пролог не получил распространения (в отличие от SQL) именно из – за игнорирования законов логики.
Хотя идея была кончно интересная.
IDE, простая возможность интеграции с другими платформами и т.п.
vito пишет:
Проблема в том, что с фанами Пролога, довольно сложно общаться – начинается обычный холливар.
фаны пролога? гыгыгыгы
vito пишет:
На вопрос почему в Прологе не выполняется коммутативность относительно and, а в SQL выполняется (как и все остальные законы логики), самым лучшим ответом было «так надо», «могу на прологе ОС написать».
Хотя оба языка носят декларативный характер и опираются на логику предикатов.
Я не помню уже что там с отрицанием и прочим, но если это описано в стандарте, то это явно не баги, а именно "так надо". Его же не на коленке нубы делали, этот проект, насколько я помню, был даже частью чьей-то госпрограммы (по-моему даже этой страны).
vito пишет:
На мой взгляд, Пролог не получил распространения (в отличие от SQL) именно из – за игнорирования законов логики.
Никакой язык программирования не получит распространение без хороших инструментов. Посмотри на Visual Studio. Если б ее не было, рядом с прологом стояли бы C# и VB .NET
IDE, простая возможность интеграции с другими платформами и т.п.
IDE, библиотеки. С интеграцией насколько понял, полный облом.
Он сам по себе.
фаны пролога? гыгыгыгы
Есть такие. Да и кто бы развивал SWI – Prolog?
Я не помню уже что там с отрицанием и прочим, но если это описано в стандарте, то это явно не баги, а именно "так надо". Его же не на коленке нубы делали, этот проект, насколько я помню, был даже частью чьей-то госпрограммы (по-моему даже этой страны).
Если не ошибаюсь, сначала Япония решила "догнать и перегнать". Потом подхватил СССР.
Что в общем понятно. Отставание в кибернетике у СССР было крайне серьезным, а тут появился шанс вырваться вперед.
Нет, не на коленке конечно. Но всем свойственно ошибаться. За 20 век было создано сотни языков. Выжили десятки.
Т.е. можно предположить
1) Просто ошибку.
2) Что гораздо хуже – СССР намеренно направили в неверном направлении.
А на Пролог в СССР ставили очень много.
Именно поэтому, мне думается, его преподают у нас. Это последний «инновационный» проект СССР.
В США тоже им увлеклись, но ненадолго.
«Так надо» - это понятно. Но если обратите внимание, для самого экзотического языка, должны выполняться операции and, or, not (из них вытекают все остальные) и для них должны выполняться законы коммутативности, ассоциативности, дистрибутивности (если задумаетесь все «рабочие» языки этим условиям отвечают, просто это стало настолько естественным, что на это уже мало кто обращает внимание).
С прологом совершенно непонятно. Там допустим not and B <> B and not.
И т.д.
В результате получается этакая интересная рекламная картинка – легкий старт, а дальше … в общем даже японцы не выдержали.
Механизм работы основан на так называемом «бектрекинге» или простом (дешевом) поиске.
Это примерно можно представить как блуждание в лабиринте в поисках выхода(цели), когда после попадания в тупик, мы откатываемся на прежнюю позицию и начинаем поиск вновь.
Вроде бы похоже на ИИ, кроме одного НО. Не происходит запоминания пути (обучения). То есть после декларации, программа каждый раз будет начинать с нуля. Именно этот «недостаток» был исправлен в нейросетях.
Про производительность подобного подхода в Прологе говорить излишне.
И кстати именно на основе нейросетей, проектируются прототипы новых процессоров. Они не производят вычислений, просто «помнят» допустим сложение чисел например до миллиона (как мы помним таблицу умножения).
Излишне говорить, какой скачок в производительности это дает.
Никакой язык программирования не получит распространение без хороших инструментов. Посмотри на Visual Studio. Если б ее не было, рядом с прологом стояли бы C# и VB .NET
Это врят – ли.
Как многие заметили, и вначале не приняли, дот нет крайне требователен к типам данных и правилам. «Свободы» стало гораздо меньше. Но именно это сделало их рабочими инструментами.
Да и MS не дураки. Fram 1.1, насколько помню, вначале вышел вообще без поддержки IDE, но уже тогда получил крайне высокую оценку(думаю, что если бы это было не так, MS еще бы над ними поработад).
Или например С/С++. Студия конечно стала стандартом IDE, но сами языки стали стандартами до появления студии.
.NET Framework 1.0 вышел вместе с Visual Studio 2002. Да в прочем и не было смысла выпускать платформу без IDE, и народ в 2000 был уже не тот, который готов компилировать в коммандной строке и писать без IntelySense.