Existem muitos tipos de linguagens de programação. A maioria das linguagens de programação não seguem um só tipo, por isso é difícil atribuir um tipo para cada linguagem. Os exemplos de cada tipo são dados em cada secção abaixo porque são os melhores exemplos bem conhecidos desse tipo.
Alto nível vs. baixo nível
| ![[icon]](https://www.alegsaonline.com/image/20px-Wiki_letter_w_cropped.svg.png) | Esta secção necessita de mais informações. (Agosto de 2018) |
As linguagens de programação de alto nível requerem menos conhecimentos sobre o hardware em comparação com as linguagens de programação de baixo nível. As linguagens de programação de alto nível requerem um intérprete para converter o código fonte em linguagens de programação de baixo nível.
Programação declarativa vs. Imperativa
As linguagens de programação declarativas descrevem um "problema" mas normalmente não dizem como o problema deve ser resolvido. A descrição do problema utiliza a lógica, e "resolver" o problema parece muitas vezes provar automaticamente um sistema de axiomas lógicos. Exemplos de tais linguagens de programação são Prolog, XSLT, LISP e SQL.
Linguagens de programação imperativas descrevem um sistema de mudanças de estado. No início, o programa está num determinado estado, e o computador recebe os passos a seguir, a fim de executar uma acção. Seguir os passos faz com que o programa "mude de estado".
Em geral, as linguagens de programação declarativas são mais seguras e mais curtas. Linguagens de programação impositivas são mais comuns, porque são mais fáceis de utilizar.
Funcional vs. Procedural
A programação funcional olha para a programação como uma função em matemática. O programa recebe entrada, juntamente com alguma informação, e utiliza esta informação para criar saída. Não terá um estado intermédio, e também não alterará coisas que não estejam relacionadas com o cálculo.
Os programas de procedimento especificam ou descrevem conjuntos de passos ou alterações de estado.
Baseado em pilha
As línguas baseadas em pilhas olham para algumas das memórias do programa como uma pilha de cartas. Há muito poucas coisas que podem ser feitas com uma pilha. Um item de dados pode ser colocado na parte superior da pilha. Esta operação é geralmente chamada "push". Um item de dados pode ser removido do topo da pilha. A isto chama-se um "pop". Pode-se olhar para o item no topo da pilha sem o remover. A isto chama-se uma "espreitadela".
Se um programa for escrito como "empurrar 5; empurrar 3; adicionar; pop;" irá colocar 5 no topo da pilha, colocar 3 no topo dos 5, adicionar os dois valores do topo (3 + 5 = 8), substituir os 3 e 5 pelos 8, e imprimir o topo (8). Exemplos de linguagens de programação baseadas na pilha são as linguagens Postscript e Forth.
Orientado para objectos
Linguagens de programação orientadas a objectos colocam dados e funções que alteram os dados numa única unidade. Esta unidade é denominada "objecto". Os objectos podem interagir uns com os outros e alterar os dados de outro objecto. A isto chama-se normalmente encapsulamento ou ocultação de informação. A maioria das linguagens de programação modernas são orientadas para objectos, ou pelo menos permitem este estilo de programação. Exemplos disto são Java, Python, Ruby, C++, C# e outras linguagens C.
Orientado para o fluxo
A programação orientada para o fluxo vê a programação como a ligação de diferentes componentes. Estes componentes enviam mensagens para a frente e para trás. Um único componente pode ser parte de diferentes "programas", sem necessidade de ser alterado internamente.