miércoles, 1 de julio de 2009
Lenguaje de programacion
Un "lenguaje de programación" es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo.
Por otro lado, el término "lenguaje natural" define un medio de comunicación compartido por un grupo de personas (por ejemplo: inglés o francés).
Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicacion. Se trata de dos conceptos totalmente diferentesSemantica de los lenguajes de programacion
Los siguientes son algunos enfoques para especificar la semántica de los lenguajes:
Semántica Interpretativa (u Operacional)
Un lenguaje de máquina tiene su semántica definida por el computador. Un programa en lenguaje de máquina "significa" exactamente lo que el computador hace cuando el programa "corre" o se ejecuta. Sin embargo, con un lenguaje de alto nivel no se puede dejar que el computador defina la semántica del lenguaje, puesto que no es posible "correr programas y ver" hasta que se tenga un compilador. No se puede tener un compilador y saber qué es correcto hasta haber definido lo que los programas significan.
Este enfoque interpretativo para definir la semántica de los lenguajes de programación consiste en postular una máquina abstracta y proveer reglas para la ejecución de programas sobre esta máquina abstracta. Así, estas reglas definen el significado de los programas. Usualmente, la máquina abstracta se caracteriza por un estado consistente de todos los objetos datos, sus valores, y los programas con sus contadores de programa. Las reglas semánticas especifican cómo el estado es transformado por las diversas construcciones de los lenguajes de programación.
Traducción
La traducción de un lenguaje assembly a lenguaje de máquina (que es directa y comprensible), forma una especificación semántica muy usada para un lenguaje assembly.
El compilador para un lenguaje de alto nivel sobre una máquina específica llega a ser la definición semántica del lenguaje.
Definición Axiomática
Se pueden definir reglas que relacionan los datos antes y después de la ejecución de cada programa. Estas reglas se pueden usar para proveer teoremas acerca de la relación E/S de un programa. Este enfoque tiene la ventaja que puede usarse para definir semánticas para un aparte más que para todos los aspectos de un lenguaje.
Definición Extensible
En este enfoque se definen ciertas operaciones primitivas y el significado del lenguaje en términos de estas primitivas. Ejemplo LISP.
Semántica Matemática o Denotacional
Los objetos matemáticos corresponden a programas que son definidos, y reglas abstractas para traducir programas a estos objetos abstractos
Lenguajes de programación imperativos y funcionales
Los lenguajes de programación generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos:
- lenguajes imperativos;
- lenguajes funcionales.
Lenguaje de programación imperativo
Un lenguaje imperativo programa mediante una serie de comandos, agrupados en bloques y compuestos de órdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condición. Estos fueron los primeros lenguajes de programación en uso y aún hoy muchos lenguajes modernos usan este principio.
No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a la secuencialidad de las instrucciones.
Lenguaje de programación funcional
Un lenguaje de programación funcional(a menudo llamado lenguaje procedimental) es un lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones. Cuando una función se invoca a sí misma, hablamos de recursividad.
Interpretación y compilación
Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías:- lenguajes interpretados
- lenguajes compilados
Lenguaje interpretado
Un lenguaje de programación es, por definición, diferente al lenguaje máquina. Por lo tanto, debe traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los programas según sea necesario.
Lenguaje compilado
Un programa escrito en un lenguaje "compilado" se traduce a través de un programa anexo llamado compilador que, a su vez, crea un nuevo archivo independiente que no necesita ningún otro programa para ejecutarse a sí mismo. Este archivo se llama ejecutable.
Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es necesaria una traducción, la ejecución se vuelve más rápida.
Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificación del archivo fuente (el archivo comprensible para los seres humanos: el archivo a compilar) requiere de la compilación del programa para aplicar los cambios.
Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del código fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible, hace que cualquier persona pueda conocer los secretos de fabricación de un programa y, de ese modo, copiar su código o incluso modificarlo. Por lo tanto, existe el riesgo de que los derechos de autor no sean respetados. Por otro lado, ciertas aplicaciones aseguradas necesitan confidencialidad de código para evitar las copias ilegales (transacciones bancarias, pagos en línea, comunicaciones seguras...).
Lenguajes intermediarios
Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto diferente al archivo fuente ) y no ejecutable (requeriría un interprete). Los applets Java, pequeños programas que a menudo se cargan en páginas web, son archivos compilados que sólo pueden ejecutarse dentro de un navegador web (son archivos con la extensión .class).
Algunos ejemplos de lenguajes ampliamente usados
A continuación, encontrará una breve lista de los lenguajes de programación actuales:
| Lenguaje | Principal área de aplicación | Compilado/interpretado |
|---|---|---|
| ADA | Tiempo real | Lenguaje compilado |
| BASIC | Programación para fines educativos | Lenguaje interpretado |
| C | Programación de sistema | Lenguaje compilado |
| C++ | Programación de sistema orientado a objeto | Lenguaje compilado |
| Cobol | Administración | Lenguaje compilado |
| Fortran | Cálculo | Lenguaje compilado |
| Java | Programación orientada a Internet | Lenguaje intermediario |
| MATLAB | Cálculos matemáticos | Lenguaje interpretado |
| Cálculos matemáticos | Cálculos matemáticos | Lenguaje interpretado |
| LISP | Inteligencia artificial | Lenguaje intermediario |
| Pascal | Educación | Lenguaje compilado |
| PHP | Desarrollo de sitios web dinámicos | Lenguaje interpretado |
| Inteligencia artificial | Inteligencia artificial | Lenguaje interpretado |
| Perl | Procesamiento de cadenas de caracteres | Lenguaje interpretado |
No hay comentarios:
Publicar un comentario