Парадигма программирования — это совокупность методов, подходов, стратегий, идей и понятий, которая определяет стиль написания программ. В настоящее время парадигма часто включает набор инструментов программиста.
Обычно под программой понимается последовательность операторов или команд, которые выполняются компьютером. Такое понимание соответствует императивному стилю программирования. При написании программы в императивном стиле, программист должен «объяснить» компьютеру, как нужно решать задачу, затем компьютер решает задачу по заданному алгоритму.
Другой стиль, противоположный императивному, — это декларативное программирование, в котором программа выглядит как последовательность утверждений, описывающих фрагмент предметной области или какую-либо ситуацию. Составляю программу в декларативном стиле, программист должен «объяснить» компьютеру, что нужно делать (решать).
Соответственно существуют декларативные языки программирования и императивные.
Императивные языки в своей основе содержат фон неймановскую модель вычислений компьютера. При решении задачи в императивном стиле сначала создается модель в некоторой формальной системе, после чего решение переписывается на императивный язык в терминах компьютера. Однако рассуждать в компьютерных терминах неестественно и неудобно. И, кроме того, последующее переписывание полученного решения на язык программирования по сути дела уже не имеет отношения к решению исходной задачи.
Довольно часто эти две задачи разделяются между двумя специалистами: один из них, постановщик задач, занимается непосредственным решением задачи, а другой, кодировщик, переводит это решение в коды готовых программ. По сути, второй специалист – это и есть императивный программист.
Декларативные языки программирования в своей основе содержат формализованную человеческую логику. В задачи программиста входит лишь описание решаемой задачи, а поиском решения занимается императивная система.
В результате получаем следующие преимущества декларативного программирования:
- значительно большая скорость написания приложений,
- значительно меньший размер исходного кода,
- простота записи знаний в декларативном стиле,
- более понятные (читабельные), по сравнению с императивным стилем, программные коды.
Существует также классификация по близости либо к машинному языку, либо к естественному человеческому мышлению. Языки низкого уровня ближе к машинному, тогда как высокого уровня — ближе к человеку. Согласно данной классификации декларативные языки относятся к сверхвысокому (наивысшему) уровню, поскольку они наиболее близки к человеческому мышлению.
Декларативные или неалгоритмические языки в свою очередь делятся на языки логического программирования и функционального. Язык логического программирования Prolog является наиболее ярким представителем своей области. В функциональном программировании наиболее известен Lisp.
В рамках уроков данного сайта рассмотрены основы логического программирования, подробно рассмотрены примеры и логические задачи с решением.