Evolcuión del lenguaje C
El lenguaje C es fruto de
un lenguaje de programación anterior, el lenguaje B, desarrollado por Ken
Thompson, en los Laboratorios Bell en 1970, con la idea de recodificar el
sistema operativo UNIX que, hasta esa fecha, se programaba directamente en
ensamblador, con el inconveniente de estar vinculado a máquinas concretas (según
el juego de instrucciones de cada máquina). Por tanto, se hacía necesario un
lenguaje que permitiese al programador abstraerse de la capa hardware y
conseguir una mayor portabilidad del código, algo que se realizó en B (basándose
en el BCPL de Martin Richard de 1967).
Poco más tarde, también en
los Laboratorios Bell, Dennis
Ritchie se pone a trabajar en el diseño de un nuevo lenguaje de
programación basado en el lenguaje B de Ken Thompson y al que aportó tipos y
estructuras de datos que consiguiesen clarificar la programación y obtener un
lenguaje mucho más eficiente, así nació el lenguaje de programación C. Ritchie
diseñó, desde 1970 a 1972 junto a Brian Kernighan, un lenguaje que permitía
realizar una programación estructurada en la que se podían economizar las
expresiones a usar y con el que los desarrolladores podrían contar con un buen
conjunto de operadores y tipos de datos para programar tanto en alto como en
bajo nivel de manera simultánea.
Un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema.
Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).
Lenguajes de programación
Lenguaje Maquina
El lenguaje de máquina es el sistema de códigos directamente interpretable por un circuito micro programable, como el microprocesador de una computadora. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones más un conjunto de datos sobre el cual se trabaja. Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de la arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas.
Lenguaje
Ensamblador
El
lenguaje ensamblador, es un lenguaje
de programación de bajo
nivel para los computadores, microprocesadores, micro
controladores y otros circuitos
integrados programables. Implementa una representación
simbólica de los códigos
de máquina binarios y otras constantes necesarias para
programar una arquitectura dada de CPU y constituye la representación más directa del código
máquina específico para cada arquitectura legible por un
programador. Esta representación es usualmente definida por el fabricante de
hardware y simbolizan los pasos de procesamiento, los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo
tanto específico de cierta arquitectura
de computador física o virtual. Esto está en contraste con
la mayoría de los lenguajes de programación de alto
nivel, que idealmente son portables.
Fue usado principalmente
en los inicios del desarrollo de software,
cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos
eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y
de investigación, especialmente cuando se requiere la manipulación directa de
hardware,
altos rendimientos, o un uso de recursos controlado y reducido.
Lenguaje de alto
nivel
Los primeros programas
ensambladores producían sólo una instrucción en lenguaje de máquina por cada
instrucción del programa fuente. Para agilizar la codificación, se desarrollaron
programas ensambladores que podían producir una cantidad variable de
instrucciones en lenguaje de máquina por cada instrucción del programa fuente.
El desarrollo
de las técnicas
nemotécnicas y las macroinstrucciones condujo, a su vez, al desarrollo de
lenguajes de alto nivel que a menudo están orientados hacia una clase
determinada de problemas
de proceso. Por ejemplo, se han diseñado varios lenguajes para procesar
problemas científico-matemático, asimismo han aparecido otros lenguajes que
hacen hincapié en las aplicaciones de proceso de archivos.
A diferencia de los
programas de ensamble, los programas en lenguaje de alto nivel se pueden
utilizar con diferentes marcas de computadores sin tener que hacer
modificaciones considerables. Esto permite reducir sustancialmente el costo
de la reprogramación cuando se adquiere equipo nuevo. Otras ventajas de los
lenguajes de alto nivel son:
Lenguaje compilado
Un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema.
Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).
Lenguajes
Interpretados
Se puede también utilizar
una alternativa diferente de los compiladores para traducir lenguajes de alto
nivel. En vez de traducir el programa fuente y grabar en forma permanente el
código objeto que se produce durante la corrida de compilación para utilizarlo
en una corrida de producción futura, el programador sólo carga el programa
fuente en la computadora junto con los datos que se van a procesar. A
continuación, un programa intérprete, almacenado en el sistema
operativo del disco, o incluido de
manera permanente dentro de la máquina, convierte cada proposición del programa
fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso
de los datos. No se graba el código objeto para utilizarlo
posteriormente.
Lenguaje de
programación declarativo
Se les conoce como lenguajes
declarativos en ciencias
computacionales a aquellos lenguajes de programación
en los cuales se le indica a la computadora qué es lo que se desea obtener o qué
es lo que se está buscando, por ejemplo: Obtener los nombres de todos los
empleados que tengan más de 32 años. Eso se puede lograr con un lenguaje
declarativo como SQL.
La programación declarativa es una forma de programación que implica la descripción
de un problema dado en lugar de proveer una solución para dicho problema,
dejando la interpretación
de los pasos específicos para llegar a dicha solución a un intérprete no
especificado. La programación declarativa adopta, por lo tanto, un enfoque
diferente al de la programación imperativa tradicional.
No hay comentarios:
Publicar un comentario