Uma linguagem de programação é uma notação projetada para passar instruções para uma máquina. Por essa definição, C ++ e HTML são linguagens de programação, como foi a notação que Joseph Marie Jacquard usou em 1801 para programar seus teares .
No entanto, com a proliferação de linguagens usadas para estruturar e / ou descrever dados, a definição de uma linguagem de programação mudou para incluir apenas linguagens capazes de expressar algoritmos. Essa é a definição mais comum hoje em dia e exclui idiomas como HTML ou XML.
No coração da definição atual está o conceito de perfeição de Turing . A maioria das linguagens de programação é Turing completa, e a integridade de Turing é frequentemente citada como a característica crítica que separa uma linguagem de programação de qualquer outra linguagem de computador. Como regra geral, isso é bom o suficiente, mas não totalmente preciso:
- Algumas linguagens completas não Turing são consideradas linguagens de programação, por exemplo, Charity .
- Algumas linguagens que geralmente não são consideradas linguagens de programação são completas de Turing, por exemplo, XSLT .
- Completar Turing por si só não diz muito sobre a utilidade de uma linguagem .
Dependendo do contexto, você pode escolher qualquer definição que desejar.
Editar:
Que se saiba ainda mais, a implementação de uma linguagem não confere características à própria linguagem, por exemplo: as especificações de uma linguagem podem definir uma linguagem completa de navegação, alguém pode implementá-la ao acaso, deixando de lado a integridade da navegação. No entanto, essa implementação não é completa, mas o idioma em si não está completo (provavelmente significa que a implementação não é conforme). Os detalhes de uma linguagem e os detalhes de uma implementação específica de uma linguagem devem ser reconhecidos como coisas separadas; é por isso que é impreciso chamar uma linguagem interpretada ou compilada etc.