es un lenguaje informático especialmente diseñado para describir el conjunto de acciones consecutivas o instrucciones que un equipo informático debe ejecutar
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Lenguaje de programacion
1. Un lenguaje de programación es un lenguaje formal (o artificial, es decir, un
lenguaje con reglas gramaticales bien definidas) que le proporciona a una
persona, en este caso el programador, la capacidad de escribir (o programar) una
serie de instrucciones o secuencias de órdenes en forma de algoritmos con el fin
de controlar el comportamiento físico o lógico de un sistema informático, de
manera que se puedan obtener diversas clases de datos o ejecutar determinadas
tareas. A todo este conjunto de órdenes escritas mediante un lenguaje de
programación se le denomina programa informático.
Programar viene a ser el proceso de crear un software fiable mediante la
escritura, prueba, depuración, compilación o interpretación, y mantenimiento
del código fuente de dicho programa informático. Básicamente, este proceso se
define aplicando lógicamente los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación
específico (codificación del programa).
Compilación o interpretación del programa hasta convertirlo en lenguaje de
máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Los lenguajes de programación están formados por un conjunto de símbolos
(llamado alfabeto), reglas gramaticales (léxico/morfológicas y sintácticas)
y semánticas, que en conjunto definen las estructuras válidas del lenguaje y su
significado. Existe el error común de tratar como sinónimos los términos 'lenguaje
de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a
los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje
para el marcado de páginas web que no es propiamente un lenguaje de
programación, sino un conjunto de instrucciones que permiten estructurar el
contenido de los documentos).
El lenguaje de programación permite especificar de manera precisa sobre qué
datos debe operar un software específico, cómo deben ser almacenados o
transmitidos dichos datos, y qué acciones debe tomar el software bajo una variada
gama de circunstancias. Todo esto, a través de un lenguaje que intenta
estar relativamente próximo al lenguaje humano o natural. Una característica
relevante de los lenguajes de programación es precisamente que más de un
programador pueda usar un conjunto común de instrucciones que sean
comprendidas entre ellos para realizar la construcción de un programa de forma
colaborativa.
2. Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje
específico conocido como código máquina, que la máquina lee fácilmente, pero
que es excesivamente complicado para las personas. De hecho, solo consiste en
cadenas extensas de números 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras decidieron crear
un traductor para reemplazar los 0 y 1 por palabras o abstracción de palabras y
letras provenientes del inglés; este se conoce como lenguaje ensamblador. Por
ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). El
lenguaje ensamblador sigue la misma estructura del lenguaje máquina, pero las
letras y palabras son más fáciles de recordar y entender que los números.
La necesidad de recordar secuencias de programación para las acciones usuales
llevó a denominarlas con nombres fáciles de memorizar y
asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina),
etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este
conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente
aparecieron diferentes lenguajes de programación, los cuales reciben su
denominación porque tienen una estructura sintáctica semejante a la de los
lenguajes escritos por los humanos, denominados también lenguajes de alto
nivel.5
A finales de 1953, John Backus sometió una propuesta a sus superiores
en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador,
para programar la computadora central IBM 704. El histórico
equipo Fortran de John Backus consistió en los programadores Richard
Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert
Nelson, Irving Ziller, Lois Haibt y David Sayre.6
El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el
primer compilador Fortran entregado en abril de 1957. Esto era un compilador
optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a
menos que su compilador pudiera generar código cuyo desempeño fuera
comparable al de un código hecho a mano en lenguaje ensamblador.
En 1960, se creó COBOL, uno de los lenguajes usados aún en la actualidad,
en informática de gestión.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un método más eficiente para
programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo
fue BASIC en las versiones introducidas en los microordenadores de la década
de 1980. Mientras que una tarea tan sencilla como sumar dos números puede
necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto
nivel bastará una sola sentencia.
3. Los lenguajes de programación han sido históricamente clasificados atendiendo a
distintos criterios:
Clasificación histórica
A medida que surgían nuevos lenguajes que permitían nuevos estilos de
programación más expresiva, se distinguieron dichos estilos en una serie
de generaciones, cada una representando lenguajes de programación
surgidos en una época similar y con características genéricas comunes.
Lenguajes de alto y de bajo nivel
Los lenguajes de programación se suelen clasificar dentro de dos amplias
categorías que se refieren a su "nivel de abstracción", es decir, en cuanto a
lo específico o general que es respecto a la arquitectura de
computación inherente al sistema que se está utilizando.
Clasificación por paradigmas
Los paradigmas de programación distinguen distintos modelos de cómputo
y de estilos de estructurar y organizar las tareas que debe realizar un
programa. Un lenguaje de programación puede ofrecer soporte a uno o
varios paradigmas de programación, total o parcialmente.
Clasificación por propósito
Se distinguen los lenguajes de programación de propósito general de
aquellos de propósito específico.
En algunas ocasiones los lenguajes de programación son también
clasificados en familias que comparten ciertas características
comunes como el estilo general de la sintaxis que emplean.
Habitualmente estas características suelen ser heredadas de
lenguajes de programación anteriores que sirvieron de inspiración a
los creadores de dicho lenguaje.
Los equipos de ordenador (el hardware) han pasado por cuatro generaciones, de
las que las tres primeras (ordenadores con válvulas, transistores y circuitos
integrados) están muy claras, la cuarta (circuitos integrados a gran escala) es más
discutible.
Algo parecido ha ocurrido con la programación de los ordenadores (el software),
que se realiza en lenguajes que suelen clasificarse en cinco generaciones, de las
que las tres primeras son evidentes, mientras no todo el mundo está de acuerdo
en las otras dos. Estas generaciones no coincidieron exactamente en el tiempo
con las de hardware, pero sí de forma aproximada, y son las siguientes:
4. Primera generación: los primeros ordenadores se programaban directamente
en código de máquina (basado en sistema binario), que puede representarse
mediante secuencias de 0 y 1. No obstante, cada modelo de ordenador tiene
su propia estructura interna a la hora de programarse. A estos lenguajes se les
denominaba Lenguaje de bajo nivel, porque sus instrucciones ejercen un
control directo sobre el hardware y están condicionados por la estructura física
de las computadoras que lo soportan. Dado que este tipo de lenguaje se
acerca mucho más a la lógica de la máquina que a la humana, es mucho más
complicado programar con él. El uso de la palabra bajo en su denominación no
implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino
que se refiere a la reducida abstracción entre el lenguaje y el hardware. Por
ejemplo, se utiliza este tipo de lenguajes para programar tareas críticas de
los sistemas operativos, de aplicaciones en tiempo real o controladores de
dispositivos. Otra limitación de estos lenguajes es que se requiere de ciertos
conocimientos de programación para realizar las secuencias de instrucciones
lógicas.
Segunda generación: los lenguajes simbólicos, asimismo propios de la
máquina, simplifican la escritura de las instrucciones y las hacen más legibles.
Se refiere al lenguaje ensamblador ensamblado a través de un
macroensamblador. Es el lenguaje de máquina combinado con una serie de
poderosas macros que permiten declarar estructuras de datos y de control
complejas.
Tercera generación: los lenguajes de alto nivel sustituyen las instrucciones
simbólicas por códigos independientes de la máquina, parecidas al lenguaje
humano o al de las Matemáticas. Se crearon para que el usuario común
pudiese solucionar un problema de procesamiento de datos de una manera
más fácil y rápida. Son usados en ámbitos computacionales donde se logra un
alto rendimiento con respecto a lenguajes de generaciones anteriores. Entre
ellos se
encuentran C, Fortran, Smalltalk, Ada, C++, C#, Cobol, Delphi, Java y PHP,
entre otros. Algunos de estos lenguajes pueden ser de propósito general, es
decir, que el lenguaje no está enfocado a una única especialidad, sino que
puede usarse para crear todo tipo de programas. Para ciertas tareas más
comunes, existen bibliotecas para facilitar la programación que permiten la
reutilización de código.
Cuarta generación: se ha dado este nombre a ciertas herramientas que
permiten construir aplicaciones sencillas combinando piezas prefabricadas.
Hoy se piensa que estas herramientas no son, propiamente hablando,
lenguajes. Cabe mencionar que, algunos proponen reservar el nombre de
cuarta generación para la programación orientada a objetos. Estos últimos
tienen una estructura muy parecida al idioma inglés. Algunas de sus
características son: acceso a base de datos, capacidades gráficas, generación
de código automáticamente, así como poder programar visualmente (como por
ejemplo Visual Basic o SQL). Entre sus ventajas se cuenta una mayor
5. productividad y menor agotamiento del programador, así como menor
concentración por su parte, ya que las herramientas proporcionadas incluyen
secuencias de instrucciones. El nivel de concentración que se requiere es
menor, ya que algunas instrucciones, que le son dadas a las herramientas, a
su vez, engloban secuencias de instrucciones a otro nivel dentro de la
herramienta. Cuando hay que dar mantenimiento a los programas previamente
elaborados, es menos complicado por requerir menor nivel de concentración.
Por otro lado, sus desventajas consisten en que estas herramientas
prefabricadas son generalmente menos flexibles que las instrucciones directas
en los lenguajes de bajo nivel. Además, se suelen crear dependencias con uno
o varios proveedores externos, lo que se traduce en pérdida de autonomía.
Asimismo, es frecuente que dichas herramientas prefabricadas contengan
librerías de otros proveedores, que conlleva instalar opciones adicionales que
son consideradas opcionales. A menos que existan acuerdos con otros
proveedores, son programas que se ejecutan únicamente con el lenguaje que
lo creó. Tampoco suelen cumplir con los estándares
internacionales ISO y ANSI, lo cual conlleva un riesgo futuro por desconocerse
su tiempo de permanencia en el mercado. Algunos ejemplos
son: NATURAL y PL/SQL.
Quinta generación: en ocasiones se llama así a los lenguajes de inteligencia
artificial, aunque con el fracaso del proyecto japonés de la quinta
generación esta denominación ha caído en desuso.