Каково лучшее использование Логического программирования?

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

25
задан false 19 March 2013 в 15:51
поделиться

5 ответов

Разработка прототипа .

Пролог является динамичным и был в течение 50 лет. Компилятор либерален, минималист синтаксиса, и "выполнение материала" легки, забавны и эффективны. SWI-пролог имеет встроенное трассировщик (отладчик!) , и даже графический трассировщик . Можно изменить код на лету, с помощью make/0, Вы можете динамично загрузочные модули, добавить несколько строк кода, не оставляя интерпретатор или отредактировать файл, который Вы в настоящее время выполняете на лету с edit(1). Вы думаете, что нашли проблему с foobar/2 предикат?

?- edit(foobar).

И как только Вы оставляете редактора, та вещь будет перекомпилированной. Несомненно, Eclipse делает то же самое для Java, но Java не является точно языком разработки прототипа.

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

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

Пролог , использовал много в обработке естественного языка, особенно в синтаксисе и вычислительной семантике .

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

18
ответ дан OmG 28 November 2019 в 20:43
поделиться

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

5
ответ дан Vincent Ramdhanie 28 November 2019 в 20:43
поделиться

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

Эти две вещи я видел, что это быть способным являются математические доказательства и понимание естественного языка.

4
ответ дан Lou Franco 28 November 2019 в 20:43
поделиться

Пролог силен в решении загадок и т.п.. Однако в домене решения загадки это делает легкую/среднюю решающую загадку более легкую и сложную загадку, решающую тяжелее. Однако, запись решателей для сетки озадачивает и т.п., такие как Hexiom, Судоку, или Nurikabe не особенно жесток.

4
ответ дан Brian 28 November 2019 в 20:43
поделиться

Один простой ответ является "системами сборки". Язык, используемый для создания Make-файлов (по крайней мере, часть для описания зависимостей), является по существу языком логического программирования, хотя не действительно "чистый" язык логического программирования.

2
ответ дан mipadi 28 November 2019 в 20:43
поделиться
Другие вопросы по тегам:

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