Un lenguaje de programación es una lengua artificial que se puede utilizar al control el comportamiento de una máquina, particularmente una computadora . Los lenguajes de programación, como las idiomas naturales, son definidos por el las reglas semánticas sintácticas de y que describen su estructura y significado respectivamente. Muchos lenguajes de programación tienen cierta forma de especificación escrita de su sintaxis y semántica; una puesta en práctica oficial definen algunos solamente.
Los lenguajes de programación se utilizan para facilitar la comunicación sobre la tarea de la información de organización y de manipulación, y para expresar los algoritmos exacto. Algunos autores restringen el " del término; language" programado; a esas idiomas que pueden expresar el todos los algoritmos posibles de ; a veces el " del término; " del lenguaje de programación ; se utiliza para idiomas artificiales más limitadas.
Los millares de diversos lenguajes de programación se han creado, y las nuevas idiomas se crean cada año.
: El lenguaje de programación de A es una lengua usada para escribir los programas de computadora que implican una computadora que realiza una cierta clase del cómputo o del algoritmo y controlan posiblemente los dispositivos externos tales como impresoras, robustezas, y así sucesivamente.
blanco del
: Los lenguajes de programación de diferencian de las idiomas naturales en que las idiomas naturales están utilizadas solamente para la interacción entre la gente, mientras que los lenguajes de programación también permiten que los seres humanos comuniquen instrucciones a las máquinas. Algunos lenguajes de programación son utilizados por un dispositivo para controlar otro. Por ejemplo los programas de la posdata son creados con frecuencia por otro programa para controlar una impresora de la computadora o la exhibición.
construcciones del
: Los lenguajes de programación de pueden contener las construcciones para las estructuras de datos de definición y de manipulación o controlar el flujo de la ejecución .
energía expresiva del
: la teoría del cómputo clasifica idiomas por los cómputos que pueden expresar (véase la jerarquía de Chomsky). Todas las idiomas completas de Turing pueden ejecutar el mismo sistema ANSI/ISO SQL de los algoritmos y la caridad es ejemplos de las idiomas que no son lenguajes de programación todavía a menudo llamados completos de Turing.
las idiomas No-de cómputo, tales como idiomas de margen de beneficio tienen gusto de HTML o las gramáticas formales como el BNF, generalmente no se consideran los lenguajes de programación. Un lenguaje de programación se encaja a menudo en la lengua no-de cómputo (del anfitrión).
Muchas idiomas se han diseñado de rasguño, se han alterado para cubrir nuevas necesidades, se han combinado con otras idiomas, y se han caído eventual en dejar de usar. Aunque haya habido tentativas de diseñar un " universal" el lenguaje de programación que responde a todos los propósitos, todos no ha podido ser aceptado en este papel. La necesidad de lenguajes de programación diversos se presenta de la diversidad de los contextos en los cuales se utilizan las idiomas:
programa la gama de las escrituras minúsculas escritas por los aficionados a los hobbys individuales a los sistemas enormes escritos por centenares de programadores.
Los programadores se extienden en maestría de los principiantes que necesitan simplicidad sobre todo, a los expertos que pueden ser cómodos con considerable complejidad.
Los programas deben balancear velocidad, tamaño, y simplicidad en los sistemas que se extienden de los microcontroladores a los superordenadores
Los programas se pueden escribir una vez y no el cambio para las generaciones, o pueden experimentar la modificación casi constante.
Finalmente, los programadores pueden diferenciar simplemente en sus gustos: pueden estar acostumbrados a discutir problemas y a expresarlos en una lengua particular.
Una tendencia común en el desarrollo de lenguajes de programación ha sido agregar más capacidad de solucionar problemas usar un de alto nivel de la abstracción . Los lenguajes de programación más tempranos fueron atados muy de cerca al hardware subyacente de la computadora. Mientras que los nuevos lenguajes de programación se han convertido, se han agregado las características que dejan las ideas expresas de los programadores que se quitan más de la traducción simple en instrucciones subyacentes del hardware. Porque los programadores se atan menos a las necesidades de la computadora, sus programas pueden hacer la computación con menos esfuerzo del programador. Esto los deja escribir más programas en la misma cantidad de tiempo.
Los procesadores de lenguaje natural se han propuesto como manera de eliminar la necesidad de una lengua especializada para programar. Sin embargo, esta meta sigue siendo distante y sus ventajas están abiertas al discusión. El Edsger Dijkstra tomó la posición que el uso de un lenguaje formal es esencial prevenir la introducción de construcciones sin setido, y la programación de lenguaje natural despedida como " foolish." El Alan Perlis era semejantemente desdeñoso de la idea.
La forma superficial de un lenguaje de programación se conoce como su sintaxis . La mayoría de los lenguajes de programación son puramente textuales; utilizan secuencias de texto incluyendo las palabras, números, y puntuación, como idiomas naturales escritas. Por una parte, hay algunos lenguajes de programación que son más gráfico en naturaleza, usar relaciones espaciales entre los símbolos para especificar un programa.
El sintaxis de una lengua describe las combinaciones posibles de símbolos que formen un programa sintácticamente correcto. El significado dado a una combinación de símbolos es manejado por la semántica. Puesto que la mayoría de las idiomas son textuales, este artículo discute sintaxis textual.
El sintaxis de programación del lenguaje se define generalmente usar una combinación de las expresiones regulares (para la estructura léxica ) y de la forma de Backus-Naur (para la estructura gramatical ). Debajo está una gramática simple, basada en balbucea :
expresión:: = átomo | list
átomo:: = número | symbol
número:: ¿=? +
símbolo:: =. *
lista:: = “(” expression* ') '
Esta gramática especifica el siguiente:
una expresión del es un átomo del o una lista del ;
un átomo del es un número del o un símbolo del ;
un número del es una secuencia intacta de uno o más dígitos decimales, precedida opcionalmente por a más o signo de menos;
un símbolo del es una letra seguida por cero o más de cualquier carácter (excepto whitespace); y
una lista del es un par emparejado de paréntesis, con cero o más expresión del dentro de él.
Los siguientes son ejemplos de secuencias simbólicas bien formadas en esta gramática: “12345”, “ () ”, “ (un b c232 (1)) ”
Los programas no no todo sintácticamente correctos están semántico correctos. Muchos programas sintácticamente correctos son no obstante malformados, por las reglas de lengua; y puede (dependiendo de la especificación de la lengua y de la validez de la puesta en práctica) dar lugar a un error en la traducción o la ejecución. En algunos casos, tales programas pueden exhibir el comportamiento indefinido . Incluso cuando un programa está bien definido dentro de una lengua, puede todavía tener un significado que no sea pensado por la persona que lo escribió.
Usar el de lenguaje natural como ejemplo, puede no ser posible asignar un significado a una oración gramatical correcta o la oración puede ser falsa:
" Las ideas verdes descoloridas duermen furioso . " es gramatical bien formado pero no tiene ninguÌn significado generalmente aceptado.
" Juan es un bachelor." casado; es gramatical bien formado pero expresa un significado que no pueda ser verdad.
El fragmento siguiente del lenguaje-c está sintácticamente correcto, pero realiza una operación que no se defina semántico (porque p es un puntero nulo, las operaciones p->real y p->im no tienen ninguÌn significado):
*p = FALTA DE INFORMACIÓN complejos; abs_p = raíz cuadrada complejos (* p->real + p->im * p->im p->real);
La gramática necesaria para especificar un lenguaje de programación se puede clasificar por su posición en la jerarquía de Chomsky. El sintaxis de la mayoría de los lenguajes de programación se puede especificar usar una gramática del Type-2, es decir, son las gramáticas independientes del contexto
considera también: Tipo
l del sistema
considera también: Tipo
l de la seguridad
Un tipo sistema define cómo un lenguaje de programación clasifica valores y expresiones en los tipos del, cómo puede manipular esos tipos y cómo obran recíprocamente. Esto incluye generalmente una descripción de las estructuras de datos que se pueden construir en la lengua. El diseño y el estudio del tipo sistemas usar matemáticas formales se conoce como tipo teoría .
Interno, todos los datos en calculadoras numéricas modernas se almacenan simplemente como ceros o unos ( binario).
this entre el quotes" es una secuencia. En la mayoría de los lenguajes de programación, la división de un número por una secuencia no tiene ninguÌn significado. La mayoría de los lenguajes de programación modernos por lo tanto rechazarán cualquier programa que intenta realizar tal operación. En algunas idiomas, la operación sin setido será detectada cuando se compila el programa (" static" tipo que comprueba), y rechazado por el recopilador, mientras que en otros, será detectado cuando se funciona con el programa (" dynamic" tipo que comprueba), dando por resultado una excepción runtime . Un caso especial de idiomas mecanografiadas es el solo-tipo idiomas del de . Éstos scripting a menudo o las idiomas de margen de beneficio, tales como Rexx o SGML, y tienen solamente un tipo de datos - lo más comúnmente posible los conjuntos de caracteres que se utilizan para los datos simbólicos y numéricos.
En cambio, una lengua untyped del, tal como la mayoría de lenguajes ensamblador permite que cualquier operación sea realizada en cualesquiera datos, que se consideren generalmente ser secuencias de pedacitos de varias longitudes. El que mecanografía dinámico, también llamado el que mecanografía latente, determina la tipo-seguridad de operaciones en el tiempo de pasada; es decir los tipos se asocian a los valores runtime del algo que las expresiones textuales del .
Por ejemplo, la semántica puede definir la estrategia por la cual las expresiones son evaluadas a los valores, o la manera de la cual las estructuras de control ejecutan condicional declaraciones.
considera también:
estándar de la biblioteca
La mayoría de los lenguajes de programación tienen una biblioteca asociada de la base (conocido a veces como la “biblioteca estándar”, especialmente si es incluida como parte del estándar publicado de la lengua), que convencionalmente es hecha disponible por todas las puestas en práctica de la lengua. Las bibliotecas de la base incluyen típicamente las definiciones para los algoritmos, las estructuras de datos, y los mecanismos de uso general para la entrada y la salida.
La biblioteca de la base de una lengua es tratada a menudo como parte de la lengua por sus usuarios, aunque los diseñadores pudieron haber tratadola como entidad separada. Muchas especificaciones de la lengua definen una base que se deba hacer disponible en todas las puestas en práctica, y en el caso de idiomas estandardizadas esta biblioteca de la base puede ser requerida. La línea entre una lengua y su biblioteca de la base por lo tanto diferencia de lengua a la lengua. De hecho, se diseñan algunas idiomas para no poder incluso describir los significados de ciertas construcciones sintácticas sin referir a la biblioteca de la base. Por ejemplo, en el Java, un literal de cadena se define como caso del java. Clase de String; semejantemente, en el palique, una expresión anónima de la función (un " block") construye un caso de la clase de BlockContext de la biblioteca. Inversamente, el esquema contiene los subconjuntos coherentes múltiples que son suficientes construir el resto de la lengua como macros de la biblioteca, y así que los diseñadores de la lengua incluso no incomodan decir qué porciones de la lengua se deben ejecutar como construcciones de lengua, y cuáles se deben ejecutar como partes de una biblioteca.
considera también:
programación de la especificación del lenguaje La especificación de un lenguaje de programación se piensa para proporcionar una definición que los usuarios de la lengua y los ejecutores puedan utilizar para determinar el comportamiento de un programa, dada su código fuente .
Una especificación de programación del lenguaje puede tomar varias formas, incluyendo el siguiente:
una definición explícita del sintaxis y de la semántica de la lengua. Mientras que el sintaxis se especifica comúnmente usar una gramática formal, las definiciones semánticas se pueden escribir en el de lenguaje natural (e., el lenguaje-c ), o una semántica formal (e., el ml estándar y el proyectan especificaciones de ).
Una descripción del comportamiento de un traductor para la lengua (e., el C++ y especificaciones del FORTRAN ). El sintaxis y la semántica de la lengua tienen que ser deducidos de esta descripción, que se puede escribir en natural o un lenguaje formal.
Una referencia del o puesta en práctica modelo del, escrita a veces en la lengua que es especificada (e., prólogo o ANSI REXX ). El sintaxis y la semántica de la lengua son explícitos en el comportamiento de la puesta en práctica de la referencia.
considera también:
programación de la puesta en práctica del lenguaje Una puesta en práctica de un lenguaje de programación proporciona una manera de ejecutar ese programa sobre uno o más configuraciones del soporte físico y del software. Hay, amplio, dos acercamientos a la puesta en práctica de programación del lenguaje: compilación e interpretación . Es generalmente posible ejecutar una lengua usar cualquier técnica.
La salida de un recopilador se puede ejecutar por el hardware o un programa llamado un intérprete. En algunas puestas en práctica que hagan uso del acercamiento del intérprete no hay límite distinto entre la compilación y la interpretación. Por ejemplo, algunas puestas en práctica del lenguaje de programación del BASIC compilan y después ejecutan la fuente una línea a la vez.
Los programas que se ejecutan directo en el hardware funcionan generalmente varias órdenes de la magnitud más rápidamente que los que se interpreten en software.
Una técnica para mejorar el funcionamiento de programas interpretados es la compilación justo a tiempo . Aquí los monitores de la máquina virtual a que las secuencias de Bytecode se ejecutan con frecuencia y los traducen al código automático para la ejecución directa en el hardware.
considera también: Historia programación de los lenguajes
En los años 40, las primeras calculadoras numéricas eléctricamente accionadas fueron creadas. Las computadoras de los comienzos de los años 50, notablemente el UNIVAC I y el IBM 701 utilizaron los programas en lenguaje de máquina . La primera programación en lenguaje de máquina de la generación fue reemplazada rápidamente por una generación segundo de lenguajes de programación conocidos como lenguajes ensamblador más adelante en los años 50, la programación de lenguaje de ensamblaje, que se había desarrollado para incluir el uso de las instrucciones macras que fue seguido por el desarrollo de tres lenguajes de programación de alto nivel: FORTRAN, lisp, y COBOL . Las versiones actualizadas de todos los éstos todavía están en uso general, e importantemente, cada uno ha influenciado fuerte el desarrollo de idiomas posteriores. En el final de los años 50, la lengua formalizada como ALGOL 60 fue introducida, y la mayoría de los lenguajes de programación posteriores son, en muchos aspectos, descendientes del ALGOL.
El período a partir de los años 60 al final de los 70 ahora trajo el desarrollo de los paradigmas principales de la lengua funcionando, aunque muchos aspectos eran refinamientos de ideas en el
Los años 60 y los años 70 también consideraron el considerable discusión sobre los méritos de la programación estructurada, y si los lenguajes de programación se deben diseñar para apoyarlo. El Edsger Dijkstra, en una letra famosa 1968 publicada en las comunicaciones del ACM, sostuvo que las declaraciones INDICADAS se deben eliminar de todo el " " de alto nivel; lenguajes de programación.
Los años 60 y los años 70 también consideraron la extensión de las técnicas que redujeron la huella de un programa así como la productividad mejorada del programador y del usuario. La baraja para un temprano 4GL era mucho más pequeña para la misma funcionalidad expresada en una cubierta 3GL.
Los años 80 eran años de consolidación relativa. El C++ combinó la programación orientada al objeto y de sistemas. El Gobierno de los Estados Unidos estandardizó a Ada, un lenguaje el de programación de sistemas previsto para uso de los contratistas del Ministerio de Defensa. En Japón y a otra parte, las sumas extensas estuvieron pasadas que investigaban el " supuesto; quinto generation" las idiomas que incorporaron la programación de lógica construyen. La comunidad de idiomas funcional se movió para estandardizar el ml y para balbucear. Algo que inventando nuevos paradigmas, todos estos movimientos elaboraron sobre las ideas inventadas en la década anterior.
Una tendencia importante en diseño de la lengua durante los años 80 era un foco creciente en la programación para los sistemas en grande con el uso de los módulos del, o unidades de organización en grande de código. El Modula-2, Ada, y ml todo desarrolló sistemas notables del módulo en los años 80, aunque otras idiomas, tales como PL/I, tuvieran ya ayuda extensa para la programación modular. Los sistemas del módulo wedded a menudo a las construcciones programadas genéricas .
El crecimiento rápido del Internet en el mid-1990 creó las oportunidades para las nuevas idiomas. El Perl, Unix scripting la herramienta primero lanzó original en 1987, llegó a ser común en Web site dinámicos que el Java de vino ser utilizado para la programación del servidor-lado. Estos progresos no eran fundamental nuevos, eran algo refinamientos a las idiomas y a los paradigmas existentes, y basado en gran parte en la familia de C de lenguajes de programación.
La evolución de programación del lenguaje continúa, en industria y la investigación. Las direcciones actuales incluyen seguridad y verificación de la confiabilidad, las nuevas clases de modularidad ( de Mixins delega, aspectos ), e integración de la base de datos.
El 4GLs es ejemplos de las idiomas que son domain-specific, por ejemplo el SQL, que manipula y devuelve los sistemas de datos algo que los valores escalares que son canónicos a la mayoría de los lenguajes de programación. El Perl, por ejemplo, con su “del documento aquí” puede llevar a cabo los programas múltiples 4GL, tan bien como los programas múltiples del Javascript, en parte de su propio código del Perl y utilizar la interpolación variable en “aquí documentan” para apoyar la programación multilingue.
Los varios métodos de medir el renombre de la lengua, cada uno conforme a un diverso diagonal sobre se mide qué, se han propuesto:
que cuenta el número de anuncios de trabajo que mencionan la lengua
el número de libros vendidos que enseñan o describen a la lengua
estimaciones del número de líneas de código existentes escritas en lengua-que puede subestimar las idiomas encontradas no a menudo en búsquedas públicas
las cuentas de referencias de la lengua encontraron usar un Search Engine de la tela.
considera también: Lista categórica de
programación de los lenguajes No hay esquema de clasificación overarching para los lenguajes de programación. Un lenguaje de programación dado no tiene generalmente una sola lengua del antepasado. Las idiomas se presentan comúnmente combinando los elementos de varias idiomas del precursor con nuevas ideas en la circulación en ese entonces. Las ideas que originan en una lengua difundirán a través de una familia de idiomas relacionadas, y después saltan repentinamente a través de boquetes familiares para aparecer en una familia enteramente diversa.
La tarea es complicada más a fondo por el hecho de que las idiomas se pueden clasificar a lo largo de las hachas múltiples. Por ejemplo, Java es una lengua orientada al objeto (porque anima la organización orientada al objeto) y una lengua concurrente (porque contiene las construcciones incorporadas para funcionar el múltiple rosca paralelamente). El pitón es una lengua Scripting orientado al objeto.
En movimientos amplios, los lenguajes de programación dividen en los paradigmas programados 'y una clasificación por pensó el dominio del del uso. Los paradigmas incluyen el programado procesal, programación orientada al objeto, programación funcional, y programación de lógica ; algunas idiomas son híbridos de paradigmas o multi-paradigmáticas. Un de lenguaje de ensamblaje no es tanto un paradigma pues un modelo directo de una arquitectura subyacente de la máquina. Por el propósito, los lenguajes de programación se pudieron considerar los fines generales, los lenguajes el de programación de sistema, las idiomas scripting, las idiomas domain-specific, o las idiomas concurrentes/distribuidas (o una combinación de éstos). Algunas idiomas de fines generales fueron diseñadas en gran parte con metas educativas.
Un lenguaje de programación se puede también clasificar por los factores sin relación al paradigma programado. Por ejemplo, la mayoría de los lenguajes de programación utilizan palabras claves de la lengua inglesa, mientras que no lo hace una minoría . Otras idiomas se pueden clasificar como siendo el esotérico o no.
.
| Random links: | 100 | Vagabundos de Montreal | Pedro de Larivey | Telenet (Bélgica) | Acción de oro |