Pull to refresh
7
0
Send message
А Вы не хотите подумать об интеллектуализации системы? Например, дать полную свободу в заказе отчетов пользователю. Насколько я знаю, в большинстве корпораций в отчетную пору пользователям требуется помощь программистов.
Может Вам это и не надо — у Вас есть привычный набор инструментов. Предложите что-нибудь конструктивное.
Там все в тексте. Можно копипастом скопировать в файл. запустить предикат s.
Тенденция, конечно не так заметна на отрезке за 10 лет, надо смотреть дальше. То что корпорации выбрасывают на рынок все новые и новые специализированные инструменты — это стремление решить принципиальные проблемы программирования экстенсивным путем.
По поводу декларативности списка — это конечно неявно, список — более абстрактное понятие, чем массив или файл, поскольку его размерность и структура не регламентируется, а рекурсивность понятия список тоже более абстрактная, чем массив.
Вряд ли Вы со мной согласитесь — это мои оценки.
[H|T] — одно из ключевых выражений в языке ПРОЛОГ.
Дело в том, что в нем усложнены такие вещи как переменная и присваивание.
Вместо присваивания применяется унификация — аналог подстановки параметров при вызове процедуры.
В ПРОЛОГе Вы можете использовать вместо «обычной» переменной некую конструкцию из нескольких переменных, по сути — это паттерн, задающий ограничения на фактический параметр.
[H|T] — это две переменные, из которых первая — Н не имеет ограничений, а вторая -Т должна быть списком.
Если в режиме интерпретации Вы введете, например такое выражение:
[a,b,c,d] = [H|T]
то система выдаст:
H=a,
T=[b,c,d]

Применение [H|T] означает следующее:
— в данную позицию можно подставить только непустой список (содержащий не менее одного элемента);
— после выполнения унификации со списком H будет ссылаться на головной элемент подставленного списка, а T — на хвост этого списка.
Я буду продолжать. Следующая статья будет о применении ПРОЛОГа в искусственном интеллекте.
А Вы задавайте больше конкретных вопросов по тексту, пожалуйста.
Очень много любителей глобальных тем.
Мой тезис в том, что все системы парсинга основаны на использовании заготовленных библиотек соответствующих процедур, т.е. это просто парсеры с параметрами. Пользователь задает параметры и наслаждается результатом. Суть, природу языка демонстрируем, а не спорим, какой инструмент разработки лучше. Я показываю двигатель, а Вы мне — автомобиль.
Зачем эти спекуляции на тему декларативности? Если Вы внимательно прочитали текст — моя цель показать две вещи:
— в ПРОЛОГе нет ничего сверхсложного и всякий программист может его применять:
— есть задачи задачи, которые на ПРОЛОГе делать лучше, чем в императивном языке.
Я написал лозунг, тенденцию развития. Конечно, нынешний ПРОЛОГ не обеспечивает декларативность и его логическая семантика работает только на простых примерах.
Как раз я показываю его явную императивность.
То, что во все модные языки вставляют средства работы со списками, говорит о неизбежности декларативного подхода, а не то что сейчас он доступен.
Появление языка Хаскел демонстрирует стремление обеспечить хотя бы декларативность на уровне статического контроля типов.
Так никто и не ответил мне — какие практические задачи по работе со списками приходится решать в повседневной работе программиста.
Сдача позиций в том, что в императивные языки вставляют парадигмы функционального и логического программирования.
QuickSort, 2-SAT — тема для отдельных публикаций. Если Вы убедите меня, что это актуально для Вас и широких масс программистов, можно этим заняться.
Ровно об этом я и пишу. Моя цель была — показать ПРОЛОГ без розовых очков, без утверждений о его теоретических возможностях, показать только его практически работающие свойства.
Основное преимущество ПРОЛОГа — в его простоте.
А переворот в программировании произойдет на основе искусственного интеллекта.
Что я могу ответить, если не знаком с этой системой? Да и какая разница — ведь таких систем генерации полезных программ множество.
Язык F#, как я понял по синтаксису Вашего примера — микрософтовская реализация языка HASKELL.
Почему-то многие, встречая что-то новое, включают защитный рефлекс.
Мне хотелось просто показать естественность и простоту там, где обычно читателя смущают новой непонятной терминологией.
firesshadow дал хорошее описание в стиле «смотри как бывает!». Моя цель — «смотри как ты можешь сделать!»
А под словом «фича» я понимаю специализированные процедуры, встраиваемые в язык.
Какие расчеты? Пролог — для символьных вычислений, не для численных!
В начале есть ключевая фраза: «Представьте программу, которая состоит только из вызовов процедур, а каждая процедура имеет несколько реализаций»
В первой части как раз и приведен пример работающей программы решения головоломок.
А мое утверждение основано на десятилетнем опыте обучения студентов мехмата, которые на этом ПРОЛОГе делали курсовые и дипломные работы.
Всякое утверждение должно быть обосновано. Свое утверждение о ненужности дизъюнктов и понятия клауз Хорна я обосновываю этой публикацией.
А Вы чем обосновываете свое утверждение? Тем что все учебники по ПРОЛОГу забиты этой терминологией, не так ли?

Information

Rating
Does not participate
Registered
Activity