Логическое программирование

Парадигма программирования — это совокупность методов, подходов, стратегий, идей и понятий, которая определяет стиль написания программ. В настоящее время парадигма часто включает набор инструментов программиста.

Обычно под программой понимается последовательность операторов  или команд, которые выполняются компьютером. Такое понимание соответствует императивному стилю программирования. При написании программы в императивном стиле, программист должен «объяснить» компьютеру, как нужно решать задачу, затем компьютер решает задачу по заданному алгоритму.

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

Соответственно существуют декларативные языки программирования и императивные.

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

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

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

В результате получаем следующие преимущества декларативного  программирования:

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

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

Декларативные или неалгоритмические языки в свою очередь делятся на  языки логического программирования и функционального. Язык логического программирования Prolog является наиболее ярким представителем своей области. В функциональном программировании наиболее известен Lisp.

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