Почему логическое программирование не завоевало популярность? [закрытый]

Конкретная ошибка, которую вы получаете, указывает на то, что bash недоступно. Теперь bash является оболочкой для Unix и Unix-подобных сред, обычно она не устанавливается в Windows по умолчанию. (Хотя он доступен и для Windows через MinGW.)

Вы работаете в Windows, вам не нужно использовать bash с react-scripts. Попробуйте обновить npm до npm install -g npm@latest, чтобы узнать, не вызвано ли это старой и сломанной версией npm в вашей системе.

РЕДАКТИРОВАТЬ: Кроме того, вы, возможно, ранее настроили npm для использования bash. Смотрите: как установить shell для npm run-scripts в windows и обратите внимание, что вы в значительной степени пытаетесь сделать обратное, поэтому, если у вас есть пользовательская конфигурация, вы можете попробовать удалить ее (также объяснено в связанный принятый ответ).

24
задан Community 23 May 2017 в 12:00
поделиться

12 ответов

Когда Вы узнаете о логическом программировании в занятиях по Информатике с помощью Пролога, основной момент не должен делать Вас опытным программистом Пролога, а скорее открывать Ваш ум для чередования форм методов программирования (структуры данных/алгоритмы), которые Вы не рассмотрели бы прежде.

, Чтобы проиллюстрировать мой тезис, когда я начал изучать Информатику, мой технический институт раньше требовал, чтобы все студенты записали свои программы в Паскале, но так как я получил высшее образование, я никогда не использовал Паскаля даже однажды. Но навыки, которые я освоил путем выбора правильных структур данных и алгоритмов, я все еще использую каждый день.

Паскаль не обнаруживается на моем резюме как язык, который я знаю, но это способствовало моему обучению как разработчик программного обеспечения. Его полноценность может не только в настоящее время измеряться количеством строки кода Паскаля в производстве.

при разработке программного обеспечения, Вы поймете, что, даже при том, что Вы не пишете одну строку кода Пролога, Вы во времена, снова используя методы, что Вы, возможно, сначала изучили в них "бесполезный" Пролог или классы AI, которые Вы посетили.

Оценка полноценности технологии (определенный язык программирования, определенный программный инструмент / приложение) не является просто вопросом оценки его фактического уровня использования, а скорее его влияния.

, Если Вы смотрите на логическое программирование влияния, имел в области экспертных систем, компьютерных игр AI, управления воздушным движением и вероятно множества других полей (предложения кто-либо?) Я не думаю, что это может быть, сказал, что логическое программирование не завоевало популярность...

30
ответ дан Laurent 28 November 2019 в 22:16
поделиться

Я провел приблизительно 4 года своей карьеры программирования, работающей над основанной на правиле "Экспертной системой" для настройки и конфигурирования аппаратных средств для телефонных станций на основе потребительских требований.

Это было очень успешно, и насколько я знаю, все еще в обиходе больше чем 10 лет спустя. Но нахождение программистов, которые могли понять, как оно работало, было большей задачей, чем разработка самой системы.

я думаю, что это - то, почему подход не взлетел, потому что у немногих людей есть необходимое мышление для основанного на логике программирования по сравнению с числом людей, которые могут понять понятие процедурного и функционального программирования.

языки Логического программирования обеспечивают механизм для питания фактов и правил вывода в "механизм логического вывода", который тогда приведен в движение для применения правил к данным фактам для создания новых фактов. Конкретный логический язык стоит или падает на основании, он - конкретный механизм логического вывода.

механизм логического вывода Пролога имеет очень наивную реализацию и очень неэффективен. Та же проблема могла быть решена более эффективно на большинстве процедурных языков только путем записи большого количества из если операторы в цикле.

языком, который мы выбрали для нашего "Конфигуратора", был RuleWorks DEC, который является улучшением более широко известного языка OPS5. Это имеет механизм логического вывода на основе Алгоритм Сети , который делает его намного более эффективным, чем процедурный подход.

, Так как DEC глотал Compaq, который глотал HP, RuleWorks стал открытым исходным кодом и быть полученным из этой веб-страницы .

Это - позор нет большего интереса к таким методам, потому что они могут быть очень эффективными для решения множества в других отношениях тяжелых проблем.

10
ответ дан Noel Walters 28 November 2019 в 22:16
поделиться

Мое впечатление от простого Пролога - то, что это - игрушечный язык. Но это вовсе не значит то логическое программирование не может быть полезным. Например, в Twelf возможно объявить семантику для простого языка программирования довольно легко и иметь действие объявлений как интерпретатор. Я также услышал некоторые хорошие вещи приблизительно О» Пролог .

проблема я думаю в попытке использовать язык логического программирования, как язык общего назначения - то, что некоторые задачи просто не соответствуют понятию очень хорошо. Я думаю, что функции логического программирования должны быть включены на язык, который также имеет обязательные и функциональные конструкции. Существует по крайней мере один такой язык: Oz, но я должен все же испытать его.

Редактирование: существует одна идея, которую я хотел попробовать в течение некоторого времени: Подайте реляционную базу данных к Прологу как атомы и используйте его, чтобы сделать запросы вместо SQL. У меня есть чувство, что это было бы большое улучшение по сравнению с SQL.

8
ответ дан Hendy Irawan 28 November 2019 в 22:16
поделиться

Когда мы изучили пролог (только несколько недель в классе языков программирования, таким образом, я - едва эксперт), преподаватель также указал, что в зависимости от Ваших определений, логическое программирование не может на самом деле программировать вообще.

, Когда мы говорим, что программирование, обычно обращаемся к чему-то как 'издание серии задач или инструкций к компьютеру'. Это - то, что делают языки императивного или функционального программирования. Это - то, что делает каждый "реальный" язык программирования. Пролог или логическое программирование, действительно не делает этого. Это больше похоже на SQL. Вы добираетесь, чтобы задать компьютеру много вопросов в значительной степени. Это ответит, в меру его способности, на основе данных, Вы подали его ранее, но в отличие от других парадигм программирования, Вы действительно не говорите компьютер, что сделать.

Это является просто очень специализированным, и не удовлетворенное для программирования общего назначения. И вещи, это специализировано для , не часто необходимы.

Функциональное программирование, с другой стороны, является программированием определенно общего назначения и может использоваться для чего-либо без основных проблем. Который является, почему последний улавливает смысл, и логическое программирование не. Я думаю...:)

7
ответ дан jalf 28 November 2019 в 22:16
поделиться

Первая проблема, которую я имел с Прологом, состоит в том, что это не язык логического программирования. Это испытывает недостаток в трехзначной стандартной логике "истинных", "ложные", и "не знают", объединяя два последних. Другими словами, эти два значения истинности на самом деле, "может быть показан", и "не может быть показан". Это дает настоящие проблемы Пролога с идеей "не", который является довольно основным к логическому обоснованию.

В нормальной логике, совершенно разумно доказать суждение путем опровержения его отрицания, это называемое "доведением до абсурда". (Да, существуют люди, которые попытались восстановить математику, не используя его, но это становится немного тайным.) Это просто не работает в Прологе, так как нет никакого различия между доказанной ложью и не ничего не доказало.

Поэтому, когда я сделал проект класса в Прологе, я попал в беду каждый раз, когда я думал о нем как о логике программирования. Я всегда волновал бы выполнение чего-то, что потребовало фактического отрицания. Возможно, другие люди не делают этого, но я волновал размышление о нем как язык сопоставления с образцом и затем испытал мало затруднений при окончании проекта.

не возможно иметь истинный основанный на логике язык, где программист может записать вещи и действительно полагаться на результаты. Исчисление предикатов первого порядка (т.е. логика с переменными, истинными или ложными функциями, "и", "или", "не", "для всех", и "там существует") положительно неразрешимо. (Существуют причины, почему мы продолжаем проливать кофе в математиков, а не генерируем все возможные теоремы механически, в конце концов.) Нет никакого способа для программиста знать априорно, будет ли данное суждение доказано или нет, даже если программист уже знает, что это TRUE или FALSE.

Редактирование: Я также забыл критическую необходимость относительно упорядочивания пунктов правильно. В логике это не имеет значения, в каком порядке Вы записываете вещи. В Прологе я продолжал входить в бесконечные циклы, пока я не прекратил рассматривать его как основанный на логике язык. Снова, это имеет некоторые хорошие функции как язык сопоставления с образцом, но это не логика, и это казалось мне как пони с одним приемом языка. YMMV, но некоторые другие люди, кажется, соглашаются со мной.

7
ответ дан Community 28 November 2019 в 22:16
поделиться

Функциональное программирование становится более популярным, потому что оно обладает некоторыми важными преимуществами при применении к многопоточному программированию, и поскольку мы перемещаемся все больше к многоядерным процессорам multi-theaded, программирование станет все более важным.

4
ответ дан Joel Coehoorn 28 November 2019 в 22:16
поделиться

На основе моего собственного опыта с Прологом это очень хорошо для определенных задач, но как язык программирования общего назначения это просто не столь гибко как много других языков, по-моему.

3
ответ дан Brian Rasmussen 28 November 2019 в 22:16
поделиться

Я нашел, что Пролог был абсолютно захватывающим, когда я взял его в своих классах AI в колледже, но я могу только думать о горстке ситуаций, где я использовал бы его за пределами AI сегодня. И даже в тех ситуациях, я не использовал бы его. Мне потребовалось долгое время для окончательного "получения" Пролога, и когда я сделал, я думал, что это было большим, но я сразу видел, что это - ограниченный диапазон полноценности.

однако, я настоятельно рекомендую изучение его, если ни по какой другой причине, чем учиться приближаться к программированию другим другим способом. Способность посмотреть на проблему от многих различных точек наблюдения абсолютно делает Вас лучшим программистом.

3
ответ дан Rob 28 November 2019 в 22:16
поделиться

Это - то, что Пролог очень хорош для определенных задач, но за мои 11 лет опыта работы у меня никогда не было проблемы, где Пролог был бы лучшим решением. Это - просто вопрос, что вид проблем, где Пролог был бы идеален, очень редок.

2
ответ дан Michael 28 November 2019 в 22:16
поделиться

Это - стандартный случай использования правильного инструмента для задания. Вы действительно видите логическое программирование в определенных ситуациях: их обычно называют чем-то как основанные на правилах или экспертные системы.

В Вашем курс теории вычислимости , Вы обсудите то, что все эти языки общего назначения эффективно эквивалентны (с математической точки зрения). Однако разработка прототипа и долгосрочная разработка является совсем другими доменами. Так, совершенно возможно, что в основанной на правилах системе Вы могли бы разработать свой ruleset использование чего-то как Пролог (если это работает хорошо на Вас), и затем более поздняя реализация заключительная система на Вашей платформе доставки (например, Java).

BTW, я всегда любил способ, которым ответ Пролога почти на все является "нет".

2
ответ дан Bob Cross 28 November 2019 в 22:16
поделиться

То, что Вы запускаете на Прологе в Вашем класс AI , должно быть подсказкой. AI не завоевал популярность слишком хорошо, также.

я помню назад в '80 оспаривании преподавателю продемонстрировать значительное использование для AI (хорошо, "насмешка' была бы более точным термином, но я был моложе тогда). Он не мог сделать этого тогда, и сегодня, я подозреваю, что он учит 1/10-му приложения для AI, что бредил о тогда.

, Возможно, то же относится к Прологу. Я не помню прошлый раз, когда я видел, что компания ищет опыт Пролога. Возможно, никогда, или возможно я не видел его и проигнорировал его.

1
ответ дан John Saunders 28 November 2019 в 22:16
поделиться

Я недавно использовал кучу логического программирования в исследовательском проекте по созданию игрового дизайна AI ( тизерное видео !), Но по крайней мере половина моего логичного проекта была функциональным или обязательным кодом Scala, реализующим базовый игровой движок. Смысл программирования , если можно так сказать, состоит в том, чтобы привести понимание машиной того, что вы хотите, в синхронизацию с вашим собственным - и большая часть синхронизации - требует предоставления императивных подробностей, на каком-то уровне, о том, как вы хотите что-то сделать. Эти глупые машины всегда такие буквальные ...

Логическое программирование, будь то традиционные, дедуктивные, в стиле пролога, или более экзотические разновидности программирования с использованием индуктивной логики или наборов ответов, дает огромный рычаг для решения некоторых проблем за счет возможности легко передавать необходимые знания (что всегда необходимо) где-то в реальных приложениях). Иногда проблемы, связанные с интерактивным приложением, делают неприемлемыми даже малейшие потери вашей производительности в выражении императивных знаний. Написание всего игрового движка в стиле логического программирования всегда будет плохой идеей (аналогично тому, чтобы попробовать его, используя совместимые с perl регулярные выражения, которые имеют одинаковую вычислительную мощность). На гибридном языке (или на том, который позволяет легко встраивать логический интерпретатор) вы можете получить лучшее из обоих миров (я использовал jTrolog для встраивания Prolog в мой движок Scala, формируя многопарадигматический вольтрон сортирует).

Я думаю, что логическое программирование, безусловно, может быть более популярным и понятным, но, в некотором смысле, чисто логическое программирование не может быть намного лучше, чем SQL или регулярные выражения с точки зрения «зацепления», потому что его магия заключается в том, чтобы избавиться от вашей императивной выразительности (в идеале не дать вам потеряться в неважных деталях). Это объяснение почти в равной степени относится к функциональному программированию. Я люблю логическое программирование, но только потому, что у меня есть выбор, когда его использовать. Наилучшим способом продвижения вперед, кажется, являются гибридные языки, которые представляют этот выбор в последовательной, хорошо продуманной манере.

формирование многопарадигмального вольтрона своего рода).

Я думаю, что логическое программирование, безусловно, может быть более популярным и понятным, но, в некотором смысле, чисто логическое программирование не может быть намного лучше, чем SQL или регулярные выражения в терминах «завоевать популярность», потому что его магия заключается в том, что вы убираете вашу императивную выразительность (в идеале не позволяете вам заблудиться в неважных деталях). Это объяснение почти в равной степени относится к функциональному программированию. Я люблю логическое программирование, но только потому, что у меня есть выбор, когда его использовать. Наилучшим способом продвижения вперед, кажется, являются гибридные языки, которые представляют этот выбор в последовательной, хорошо продуманной манере.

формирование многопарадигмального вольтрона своего рода).

Я думаю, что логическое программирование, безусловно, может быть более популярным и понятным, но, в некотором смысле, чисто логическое программирование не может быть намного лучше, чем SQL или регулярные выражения в терминах «завоевать популярность», потому что его магия заключается в том, что вы убираете вашу императивную выразительность (в идеале удерживает вас от потери мелочей). Это объяснение почти в равной степени относится к функциональному программированию. Я люблю логическое программирование, но только потому, что у меня есть выбор, когда его использовать. Наилучшим способом продвижения вперед, кажется, являются гибридные языки, которые представляют этот выбор в последовательной, хорошо продуманной манере.

не намного лучше, чем SQL или регулярные выражения с точки зрения «зацепления», потому что его магия заключается в том, что вы убираете вашу императивную выразительность (в идеале не позволяющую вам потеряться в неважных деталях). Это объяснение почти в равной степени относится к функциональному программированию. Я люблю логическое программирование, но только потому, что у меня есть выбор, когда его использовать. Наилучшим способом продвижения вперед, кажется, являются гибридные языки, которые представляют этот выбор в последовательной, хорошо продуманной манере.

не намного лучше, чем SQL или регулярные выражения с точки зрения «зацепления», потому что его магия заключается в том, что вы убираете вашу императивную выразительность (в идеале не позволяющую вам потеряться в неважных деталях). Это объяснение почти в равной степени относится к функциональному программированию. Я люблю логическое программирование, но только потому, что у меня есть выбор, когда его использовать. Наилучшим способом продвижения вперед, кажется, являются гибридные языки, которые представляют этот выбор в последовательной, хорошо продуманной манере.

8
ответ дан 28 November 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: