miniatura|O código fonte dun programa de computador en C. As liñas grises son comentarios que explican o programa aos humanos. Cando se compila e executa, dará a saída «Ola mundo». Unha linguaxe de programación é un sistema de notación para escribir programas informáticos. que consiste nun conxunto de instrucións nun código concreto que ten como obxectivo facilitar a comunicación entre o programador e o sistema informático, permitindo que os primeiros poidan comunicarse cos segundos que empregan o código máquina (unha combinación de 0 e 1) mediante un sistema semellante á linguaxe humana.

As linguaxes de programación descríbense en termos da súa sintaxe (forma) e semántica (significado), normalmente definidos por un linguaxe formal. As linguaxes adoitan proporcionar características como un sistema de tipos, variables, e mecanismos para manexo de erros. Para executar programas requírese unha implementación dunha linguaxe de programación, a saber, un intérprete ou un compilador. Un intérprete executa directamente o código fonte, mentres que un compilador produce un programa executable.

A arquitectura de computadores influíu moito no deseño das linguaxes de programación, e o tipo máis común (linguaxes imperativas-que implementan operacións nunha orde especificada) desenvolveuse para funcionar ben na popular arquitectura de Von Neumann. Mentres que as primeiras linguaxes de programación estaban estreitamente ligados ao hardware, co tempo desenvolveron máis abstracción para ocultar os detalles de implementación para unha maior simplicidade.

Miles de linguaxes de programación -a miúdo clasificados como imperativos, funcional, lóxica, ou orientada a obxectos- desenvolvéronse para unha ampla variedade de usos. Moitos aspectos do deseño de linguaxes de programación implican concesións; por exemplo, o manexo de excepcións simplifica a xestión de erros, pero a costa do rendemento.

Deste xeito, posibilítase que os humanos poidan expresar dunha forma precisa algoritmos para estes seren executados polos ordenadores, sen ter que compor manualmente as instrucións de baixo nivel nunha linguaxe de máquina.

Estas linguaxes artificiais non permiten unha liberdade de expresión tan ampla como as naturais. A súa sintaxe e semántica están definidas previamente. Pódese distinguir entre a linguaxe da máquina e a orientada ó problema. A primeira non é transferible a outro ordenador, pero posúe a vantaxe da abreviación considerable de tempo ó realizar as operacións. Se se emprega unha linguaxe orientada ó problema, pode resolverse en calquera ordenador compatible, directamente ou tras lixeiras adaptacións, e non é preciso un coñecemento detallado do ordenador; non obstante, ten como inconvenientes o prolongado tempo requirido e a dificultade de enumerar unha serie de problemas non numéricos.

A teoría das linguaxes de programación é o subcampo da Informática que estuda o deseño, a implementación, a análise, a caracterización e a clasificación das linguaxes de programación.

Definicións As linguaxes de programación diferéncianse das linguaxes naturais en que as primeiras utilízanse para a interacción entre persoas, mentres que as segundas están deseñados para que os humanos poidan comunicar instrucións ás máquinas.

O termo linguaxe informática ás veces utilízase indistintamente con «linguaxe de programación».Robert A. Edmunds, The Prentice-Hall standard glossary of computer terminology, Prentice-Hall, 1985, p. 91 Con todo, o uso destes termos varía segundo os autores.

Nun caso, as linguaxes de programación descríbense como un subconxunto das linguaxes informáticas.Pascal Lando, Anne Lapujade, Gilles Kassel, and Frédéric Fürst, Towards a General Ontology of Computer Programs , ICSOFT 2007 , pp. 163–170 Do mesmo xeito, o termo «linguaxe informática» pode utilizarse en contraposición ao termo «linguaxe de programación» para describir linguaxes utilizadas en informática pero que non se consideran linguaxes de programación. – por exemplo, linguaxes de marcado.XML in 10 points W3C, 1999, "XML is not a programming language." Algúns autores restrinxen o termo «linguaxe de programación» ás linguaxes Turing completo.En termos matemáticos, isto significa que a linguaxe de programación é Turing completo. A maioría das linguaxes de programación prácticas son Turing completos, e, como talles, son equivalentes en canto aos programas que poden calcular.

Outro uso considera as linguaxes de programación como construcións teóricas para programar máquinas abstractas e as linguaxes informáticas como o subconxunto destas que se executa en computadores físicos, que dispoñen de recursos de hardware finitos.R. Narasimhan, Programming Languages and Computers: A Unified Metatheory, pp. 189—247 in Franz Alt, Morris Rubinoff (eds.) Advances in computers, Volume 8, Academic Press, 1994, , p.215: "[...]o modelo [...] para as linguaxes informáticas difire do [...] para as linguaxes de programación só en dous aspectos. Nunha linguaxe informática, só hai un número finito de nomes -ou rexistros- que poden asumir só un número finito de valores -ou estados- e estes estados non se distinguen en termos de ningún outro atributo. [Isto pode parecer unha perogrullada, pero as súas implicacións son de grande alcance. Por exemplo, implicaría que calquera modelo para linguaxes de programación, fixando algúns dos seus parámetros ou características, debería ser reducible de forma natural a un modelo para linguaxes informáticas.»John C. Reynolds subliña que as linguaxes de especificación formal son tan linguaxes de programación como as linguaxes destinadas á execución. Tamén argumenta que os formatos de entrada textuais e mesmo gráficos que afectan o comportamento dun computador son linguaxes de programación, a pesar do feito de que normalmente non son Turing-completos, e sinala que a ignorancia dos conceptos de linguaxe de programación é a razón de moitos fallos nos formatos de entrada.John C. Reynolds, "Some thoughts on teaching programming and programming languages", SIGPLAN Notices, Volume 43, Issue 11 de novembro de 2008, p.109

Concepto miniatura|Varios libros sobre diversas linguaxes de programación. Unha linguaxe de programación é unha linguaxe que pode ser utilizado para controlar o comportamento dunha máquina, particularmente unha computadora. Consiste nun conxunto de símbolos e regras sintácticas e semánticas que definen a súa estrutura e o significado dos seus elementos e expresións.

Aínda que moitas veces úsase linguaxe de programación e linguaxe informática coma se fosen sinónimos, non ten por que ser así, xa que as linguaxes informáticas engloban ás linguaxes de programación e a outros máis, como, por exemplo, o HTML (linguaxe para o marcado de páxinas web).

Unha linguaxe de programación permite a un ou máis programadores especificar de xeito preciso: sobre que datos unha computadora debe operar, como deben ser estes almacenados e transmitidos e que accións debe tomar baixo unha variada gama de circunstancias. Todo isto, a través dunha linguaxe que intenta estar relativamente próximo á linguaxe humana ou natural, tal como sucede coa linguaxe Lexico. Unha característica relevante das linguaxes de programación é precisamente que máis dun programador poidan ter un conxunto común de instrucións que poidan ser comprendidas entre eles para realizar a construción do programa de forma colaborativa.

Os procesadores usados nas computadoras son capaces de entender e actuar segundo indícano programas escritos nunha linguaxe fixa chamado linguaxe de máquina. Todo programa escrito noutra linguaxe pode ser executado de dous xeitos:

Mediante un programa que vai adaptando as instrucións conforme son atopadas. A este proceso chámallo interpretar e aos programas que o fan coñécellos como intérpretes. Traducindo este programa ao programa equivalente escrito en linguaxe de máquina. A ese proceso chámallo compilar e ao tradutor coñécello como compilador. Orixe Coa chegada das computadoras aparecen as secuencias de posicións de chaves eléctricas que debían conectarse para obter unha acción determinada, unha chave conectada era un 1 e unha chave desconectada era un 0. Unha sucesión de chaves en calquera das súas dúas posicións definía unha secuencia de ceros e uns (por exemplo: 0100011010011101...) que viña representar unha instrución ou un conxunto de instrucións (Programa informático) para o computador (ou computador) no que se estaba traballando. A esta primeira forma de especificar programas para unha computadora denomínalla linguaxe máquina ou código máquina.

A necesidade de recordar secuencias de programación para as accións usuais levou a denominalas con nomes fáciles de memorizar e asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (executar subrutina) etc. A esta secuencia de posicións denominóuselle "instrucións", e a este conxunto de instrucións chamóuselle linguaxe ensambladora.

Posteriormente apareceron diferentes linguaxes de programación, os cales reciben a súa denominación porque teñen unha estrutura sintáctica similar ás linguaxes escritas polos humanos. Historia Desenvolvementos iniciais Os primeiros computadores programables inventáronse a finais dos anos 40, e con eles, as primeiras linguaxes de programación. Os primeiros computadores programábanse en linguaxes de programación de primeira xeración (1GL), linguaxe máquina (instrucións sinxelas que o procesador podía executar directamente). Este código era moi difícil de depurar e non era portable entre distintos sistemas informáticos. Co fin de mellorar a facilidade de programación, inventáronse as linguaxes ensambladoras (ou linguaxes de programación de segunda xeracións-2GLs), que diverxían da linguaxe máquina para facer os programas máis fáciles de entender para os humanos, aínda que non aumentaban a portabilidade. miniatura|Un home e unha muller traballando coa máquina de procesamento de datos IBM 704, utilizada para facer cálculos na área a investigación aeronáutica. A IBM 704 foi a primeira computadora producida en masa con hardware baseado na chamada aritmética de coma flotante (ou aritmética de punto flotante), e introducida por IBM en abril de 1954 Fortran deseñouse para esta máquina. Ao principio, os recursos de hardware eran escasos e caros, mentres que os recursos humanos eran máis baratos. Por tanto, favorecéronse as linguaxes complexas que consumían moito tempo de uso, pero que estaban máis preto do hardware para unha maior eficiencia. A introdución de linguaxes de programación de alto nivel (linguaxes de programación de terceira xeracións-3GLs)-revolucionou a programación. Estas linguaxes abstraían os detalles do hardware e deseñáronse para expresar algoritmos máis comprensibles para o ser humano. Por exemplo, as expresións aritméticas podían escribirse agora en notación simbólica e traducirse posteriormente a código máquina que o hardware puidese executar. En 1957, inventouse Fortran (Formula translation). A miúdo considerado como a primeira linguaxe compilada de programación de alto nivel, Fortran seguiuse utilizando no século XXI.

Décadas de 1960 e 1970 Ao redor de 1960 desenvolvéronse as primeiras unidades centrais (en inglés mainframes) -ordenadores de propósito xeral-, aínda que só podían ser manexados por profesionais e o seu custo era extremo. Os datos e as instrucións introducíanse mediante cartóns perforados, o que significaba que non se podía engadir ningunha entrada mentres se executaba o programa. Por tanto, as linguaxes desenvolvidas nesta época están deseñadas para unha interacción mínima. Tras a invención do microprocesador, na década de 1970 os computadores abaratáronse drasticamente. Os novos computadores tamén permitiron unha maior interacción co usuario, que se viu favorecida polas novas linguaxes de programación.