7.2 Confiabilidade
Pelo fato de programas desenvolvidos no paradigma imperativo terem seu estado representado por variáveis, e essas poderem ser compartilhadas entre diferentes partes do programa (ou seja, podem ter efeitos colaterais) é possível que um método altere o estado do programa e, de forma não planejada, acabe corrompendo a integridade do sistema, o que muito provavelmente pode levar a um erro em tempo de execução. Esse é comum problema comum no paradigma imperativo, e pode ser contornado com o uso dos tratadores de exceção try-catch, presentes em linguagens imperativas mais recentes como C++, Java, C#, JavaScript, Python, etc.
No paradigma orientado a objetos, ainda pode ser usado o conceito de encapsulamento para tornar o programa mais modular, como uma caixa preta. Assim, é fácil desenvolver um módulo, testá-lo, e uma vez testado, usá-lo em outras partes do projeto com total confiabilidade, bem como em outros projetos. Dessa forma, é possível aumentar a produtividade sem perder confiabilidade.
Já no paradigma funcional o problema citado não existe, uma vez que o programa não tem estados, e todos os dados definidos são imutáveis. Propriedades como transparência referencial e ausência de efeitos colaterais tornam a programação funcional muito mais modular e fácil do seu código ser analisado e testado de forma isolada, sendo um enorme trunfo quanto à confiabilidade do programa. O mesmo também vale para programas desenvolvidos no paradigma lógico, que assim como o funcional, também tem transparência referencial e ausência de efeitos colaterais.
Por fim, programas desenvolvidos no paradigma declarativo têm clara correspondência com à lógica matemática , e por conta dessa característica muitos programas podem ser provados como livre de erros, o que é de extrema utilidade em um sistema para áreas médicas e aeroespaciais, por exemplo. Vale ressaltar também que pouca legibilidade ou pouca facilidade de escrita também tendem a gerar programas pouco confiáveis.