Несколько причин, по которым декларативные языки программирования не получили такого распространения, как императивные:
- Сложности с поддержкой работы с состоянием. 2 Декларативные языки, в основном функциональные, плохо поддерживают работу с состоянием, что может быть неудобно для некоторых программистов, которым нужно моделировать в программах реальные процессы с состоянием. 2
- Ограничения в решении задач, для которых нужен доступ к состоянию программы. 4 На декларативном языке нельзя работать с задачами, для решения которых нужен доступ к состоянию программы. 4
- Сложности с совмещением императивного и декларативного стилей программирования. 3 Это связано с необходимостью разделять описываемые сущности на «данные» и «управляющие конструкции». 3
Однако у декларативных языков есть свои преимущества: они позволяют писать более безопасный и поддерживаемый код, который легко параллелится, а компиляторы декларативных языков имеют больше возможностей при оптимизации программ. 1