Le style applicatif est entièrement fondé sur l'évaluation d'expressions satisfaisant la propriété : la valeur d'une expression ne dépend que des valeurs des sous-expressions et de l'opération qui les combine. Ce style conduit souvent à des programmes concis et faciles à comprendre, et que certains langages, comme CAML, savent exécuter efficacement. Pour écrire des algorithmes quelconques dans le style applicatif, il faut recourir à la récursivité, c'est-à-dire à la capacité d'une fonction de s'appeler elle-même. Les définitions récursives sont souvent très naturelles et résultent de techniques générales de résolution de problèmes. Par contre, les programmes ainsi construits ne peuvent pas toujours être utilisés si l'on doit respecter des exigences d'efficacité.
Le style impératif est fondé sur la transformation de la mémoire, au moyen d'instructions, et notamment de l'affectation ; dans ce cas, la valeur d'une expression dépend non seulement de l'opération et des valeurs des sous-expressions, mais aussi de l'état courant de la mémoire. À la notion de valeur se substitue dès lors celle d'objet, à la notion d'expression celle d'instruction. Des objets sont construits, des objets sont modifiés, des objets sont détruits. Le style applicatif accorde toute son attention aux modifications des objets ; l'instruction typique de ce style de programmation est l'affectation. Comme Fortran et Pascal, le langage C a été conçu pour la programmation impérative : c'est dans ce style qu'on écrira les programmes les plus efficaces, que les compilateurs sauront le mieux optimiser. Pour écrire des algorithmes quelconques dans ce style, il faut recourir à des structures itératives qui modifient les objets, par exemple les << boucles >> for et while de C. Ces structures, qui sont souvent plus difficiles à maîtriser que celles du style applicatif, conduisent à des programmes plus difficiles à prouver, mais qui forment la majeure partie de ce que produisent les programmeurs C.
Le style objet s'est développé avec le triple objectif d'améliorer la capacité des programmes à modéliser les objets physiques, à organiser le logiciel et à gérer les ressources mises en uvre. Il se caractérise par l'accent mis sur les structures de données, avec la notion de classe. Comme en programmation impérative, des objets sont créés, modifiés, détruits. Plus que les modifications, ce sont les créations et destructions des objets qui constituent la trame des programmes écrits dans ce style. C++ et, plus récemment, Java et Objective CAML, sont des langages représentatifs de ce style de programmation.