INTRODUCCIÓN
Este es un lenguaje orientado
en la implementación de sistemas operativos como Unix. El lenguaje C es apreciado
por la eficiencia del código que produce y es el lenguaje de programación más
popular para crear software de sistemas, aunque también puede ser utilizado
para crear nuevas aplicaciones.
LENGUAJE DE PROGRAMACIÓN
Un lenguaje de programación
está diseñado para describir el conjunto de acciones consecutivas que un equipo
debe ejecutar. Un lenguaje de programación es un modo muy práctico para que los
seres humanos puedan darle instrucciones a un equipo, en otras palabras, el
lenguaje de programación puede usarse para crear programas que controlen el
comportamiento físico y lógico de una máquina, para expresar algoritmos con
precisión, o como modo de comunicación humana.
El lenguaje utilizado por el
procesador se denomina lenguaje máquina. Se trata de datos tal y como llegan al
procesador que consiste en una serie de 0 y 1 que se llaman datos binarios. El
lenguaje máquina, por lo tanto, no es comprensible para los seres humanos,
razón por la cual se han desarrollado lenguajes intermediaros comprensibles
para el hombre. El código escrito en este tipo de lenguaje se transforma en
código máquina para que el procesador pueda procesarlo.
El ensamblador fue el primer de
programación utilizado. Es muy similar al lenguaje máquina pero los desarrolladores
pueden comprenderlo. No obstante, este lenguaje se parece tanto al lenguaje
máquina que depende estrictamente del tipo de procesador utilizado (cada tipo
de procesador puede tener su propio lenguaje máquina). Así un programa
desarrollado para un equipo no puede ser portado a otro tipo de equipo. El
término portabilidad describe la capacidad de usar un programa de software en
diferentes tipos de equipos. Para poder utilizar un programa de software
escrito en un código ensamblador en otro tipo de equipo.
Está formado por un conjunto de
símbolos y reglas sintácticas y semánticas que definen su estructura y el
significado de sus elementos y expresiones. La palabra programación se define
como el proceso de creación de un programa de computadora, mediante la
aplicación de procedimientos lógicos conforme a 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.
►Ensamblaje o compilación
del programa hasta convertirlo en lenguaje de máquina.
►Prueba y depuración del
programa.
►desarrollo de la
documentación.
Existen 3 tipos de lenguaje de programación: bajo
nivel, medio nivel y alto nivel.
►Los lenguajes
de bajo nivel, son lenguajes total mente dependientes de la máquina, eso quiere
decir que no se puede utilizar en otra máquina. Dentro de este grupo de
encuentra el lenguaje de máquina y el lenguaje ensamblador…
El lenguaje de máquina, ordena a la máquina las
operaciones para su buen funcionamiento. Consiste en la combinación de 0’s y 1’s para formar las ordenes entendibles
por el hardware de la máquina, este lenguaje es mucho más rápido que los
lenguajes de alto nivel, pero la desventaja del lenguaje de bajo nivel es que
es bastante difícil de manejar y usar, además de tener códigos de fuente muy
grandes donde encontrar una falla es casi imposible.
Por otro lado el lenguaje ensamblador es un derivado
del lenguaje máquina y está formado por abreviaturas de letras y números llamados
mnemotécnicos. Con la aparición de este lenguaje se crearon los programas
traductores para poder pasar los programas escritos del lenguaje ensamblador al
lenguaje máquina. Como ventaja al respecto del código máquina, es que los
códigos fuentes son más cortos y los programas creados ocupaban menos memoria.
Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las
del lenguaje ensamblador, añadiendo de tener que aprender un nuevo lenguaje
difícil de probar y mantener.
►Los lenguajes
de medio nivel se trata de un término no aceptado por todos, este lenguaje como
su nombre lo dice, se encuentra entre el punto que bajo nivel y el punto de
alto nivel. Dentro de estos lenguajes podría situarse C ya que puede acceder a
los registros del sistema, trabajar, trabajar con direcciones de memoria, todas
ella características de lenguajes de bajo nivel y a la vez realizar operaciones
de alto nivel
►El lenguaje de
alto nivel son aquellos que se encuentran más cercanos al lenguaje natural que
al lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de
EDD’s. Los EDD’s son las abreviaturas de estructuras dinámicas de datos, algo
muy utilizado en todos los lenguajes de programación, son estructuras que
pueden cambiar de tamaño mediante la ejecución del programa. Nos permiten crear
estructuras de datos que se adapten a las necesidades reales de un programa.
Se tratan de lenguajes independientes de la
arquitectura del ordenador. Por lo que, en principio, un programa escrito de
alto nivel, lo puedes migrar de una máquina a otra sin máquina sin ningún tipo
de problema. Estos lenguajes permiten al programador olvidarse por completo del
funcionamiento interno de la máquina para la cual se encuentra diseñado el
programa. Tan solo necesitan un traductor que entiendan el código fuente como
las características de la máquina, suelen usar tipos de datos para la
programación y hay lenguajes de propósito general y propósito específico.
El
desarrollo inicial de C se llevó a cabo en los laboratorios
bell de AT&T entre 1969 y 1973; según Ritchie,
el periodo más creativo tuvo lugar en 1972. Se le dio el nombre "C"
porque muchas de sus características fueron tomadas de un lenguaje anterior
llamado "B".
Hay muchas
leyendas acerca del origen de C y el sistema operativo con el que está
íntimamente relacionado, Unix. Algunas de ellas son:
►El desarrollo de C fue el resultado del deseo de los programadores de
jugar con Space Travel. Habían estado jugando en el mainframe de su
compañía, pero debido a su poca capacidad de proceso y al tener que soportar
100 usuarios, Thompson y Ritchie no tenían suficiente control sobre la nave
para evitar colisiones con los asteroides. Por ese motivo decidieron portar el
juego a un PDP-7 de la
oficina que no se utilizaba; pero esa máquina no tenía sistema operativo, así que
decidieron escribir uno. Finalmente decidieron portar el sistema operativo
del PDP-11 que
había en su oficina, pero era muy costoso, pues todo el código estaba escrito
en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto nivel y
portátil para que el sistema operativo se pudiera portar fácilmente de un
ordenador a otro. Consideraron usar B, pero carecía de las funcionalidades
necesarias para aprovechar algunas características avanzadas del PDP-11.
Entonces empezaron a crear un nuevo lenguaje, C.
►La justificación para obtener el ordenador original que se usó para
desarrollar Unix fue crear un sistema que automatizase el archivo de patentes.
La versión original de Unix se desarrolló en lenguaje ensamblador. Más tarde,
el lenguaje C se desarrolló para poder reescribir el sistema operativo.
En 1973, el
lenguaje C se había vuelto tan potente que la mayor parte del kernel Unix,
originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C.
Éste fue uno de los primeros núcleos de sistema operativo implementados en un
lenguaje distinto al ensamblador. (Algunos casos anteriores son el
sistema Multics, escrito en PL/I, y Master Control Program para el B5000 de Burroughs,
escrito en ALGOL en
1961).
En 1978, Ritchie y Brian Kernighan publicaron la
primera edición de El lenguaje de programación C, también conocido como La biblia de C.
Este libro fue durante años la especificación informal del
lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre de
"el C de Kernighan y Ritchie" o simplemente "K&R C" (La
segunda edición del libro cubre el estándar ANSI C, descrito más abajo).
Kernighan y Ritchie
introdujeron las siguientes características al lenguaje:
►El tipo de datos struct.
►El tipo de datos long int.
►El tipo de datos unsigned int.
►Los operadores =+ y =- fueron
sustituidos por += y -= para
eliminar la ambigüedad sintáctica de expresiones como i=-10, que se podría interpretar bien como i =- 10 o bien comoi = -10.
El C de Kernighan y
Ritchie es el subconjunto más básico del lenguaje que un compilador debe de
soportar. Durante muchos años, incluso tras la introducción del ANSI C, fue
considerado "el mínimo común denominador" en el que los programadores
debían programar cuando deseaban que sus programas fueran transportables, pues
no todos los compiladores soportaban completamente ANSI, y el código
razonablemente bien escrito en K&R C es también código ANSI C válido.
En las primeras
versiones del lenguaje, la definición de funciones se hacía mediante un
'prototipo de función' (function prototype), el cual indicaba al compilador el
tipo de retorno de la función. Aunque este método tiene una gran desventaja
respecto al nuevo, debido a que no comprueba el número ni el tipo en la lista
de argumentos; en otras palabras, es mucho más fácil cometer errores al hacer
una llamada a una función con argumentos incorrectos.
En los años
siguientes a la publicación del C de Kernighan y Ritchie, se añadieron al
lenguaje muchas características no oficiales, que estaba soportadas por los
compiladores de AT&T, entre otros. Algunas de estas características eran:
►Funciones void y el
tipo de datos void *.
►Funciones que retornaban tipos de datos struct o union (en lugar de punteros).
►Asignación de tipos de datos struct.
►Calificador const, que hace
que un objeto sea de sólo lectura.
►Una biblioteca estándar, que incorporaba la
mayoría de las funcionalidades implementadas por varios desarrolladores de
compiladores.
►Enumeraciones.
A finales de la década
de 1970, C empezó a sustituir a BASIC como lenguaje de programación de
microcomputadores predominante. Durante la década de 1980 se empezó a usar en
los IBM PC, lo que incrementó su
popularidad significativamente. Al mismo tiempo, Bjarne
Stroustrup empezó a trabajar con algunos compañeros de Bell
Labs para añadir funcionalidades de programación orientada a objetos a C. El
lenguaje que crearon, llamado C++, es hoy en día el lenguaje de programación de
aplicaciones más común en el sistema operativo Microsoft Windows; mientras que C sigue
siendo más popular en el entorno Unix. Otro lenguaje que se desarrolló en esa
época, Objective C, también añadió características de
programación orientada a objetos a C. Aunque hoy en día no es tan popular como
C++, se usa para desarrollar aplicaciones Cocoa para Mac OS X.
En 1983, el Instituto Nacional
Estadounidense de Estándares organizó
un comité, X3j11, para establecer una especificación estándar de C. Tras un
proceso largo y arduo, se completó el estándar en 1989 y se ratificó como el
"Lenguaje de Programación C" ANSI X3.159-1989. Esta versión del
lenguaje se conoce a menudo como ANSI C, o a veces como C89
(para distinguirla de C99).
En 1990, el estándar
ANSI (con algunas modificaciones menores) fue adoptado por la Organización Internacional para la Estandarización (ISO) en el estándar ISO/IEC 9899:1990. Esta
versión se conoce a veces como C90. No obstante, "C89" y
"C90" se refieren en esencia al mismo lenguaje.
Uno de los objetivos del
proceso de estandarización del ANSI C fue producir una extensión al C de
Kernighan y Ritchie, incorporando muchas funcionalidades no oficiales. Sin
embargo, el comité de estandarización incluyó también muchas funcionalidades
nuevas, como prototipos de función, y un preprocesador mejorado. También se
cambió la sintaxis de la declaración de parámetros para hacerla semejante a la
empleada habitualmente en C++:
ANSI C está
soportado hoy en día por casi la totalidad de los compiladores. La mayoría del
código C que se escribe actualmente está basado en ANSI C. Cualquier programa
escrito sólo en C estándar sin código que dependa de un
hardware determinado funciona correctamente en cualquier plataforma que
disponga de una implementación de C compatible. Sin embargo, muchos programas
han sido escritos de forma que sólo pueden compilarse en una cierta plataforma,
o con un compilador concreto, esto puede ser debido a diversos motivos:
►La utilización de bibliotecas no estándar, como interfaces gráficas de
usuario.
►El uso de compiladores que no cumplen las especificaciones del estándar.
►El uso de tipos de datos suponiendo que tendrán el mismo tamaño u orden
de los bits en todas las plataformas.
La macro
__STDC__ puede usarse para dividir el código en secciones ANSI y K&R para
el compilador.
Tras el proceso de estandarización de ANSI, la
especificación del lenguaje C permaneció relativamente estable durante algún
tiempo, mientras que C++ siguió evolucionando. Sin embargo, el
estándar continuó bajo revisión a finales de la década de 1990, lo
que llevó a la publicación del estándar ISO 9899:1999 en 1999. Este estándar se
denomina habitualmente "C99". Se adoptó como estándar ANSI en marzo
de 2000.
Las nuevas características de C99 incluyen:
►Las variables pueden declararse en cualquier sitio (como en
C++), en lugar de poder declararse sólo tras otra declaración o al comienzo de
una declaración compuesta.
►Muchos
tipos de datos, incluyendo long long int (para reducir el engorro de la transición de
32 bits a 64 bits), un tipo de datos booleano, y un
tipo complex que
representa números complejos.
►Arrays de longitud
variable.
►Soporte
para comentarios de una línea que empiecen con //, como en BCPL o
en C++, característica para la que muchos compiladores habían dado soporte por
su cuenta.
►muchas
funciones nuevas, como snprintf()
Una consideración importante es que hasta la
publicación de este estándar, C había sido mayormente un subconjunto estricto
del C++. Era muy sencillo "actualizar" un programa de C hacia C++ y
mantener ese código compilable en ambos lenguajes. Sin embargo, el nuevo
estándar agrega algunas características que C++ no admite, como por ejemplo los
inicializadores estáticos de estructuras. También define al tipo
"bool" de una manera que no es exactamente la del C++.
El compilador GCC, entre muchos otros, soportan hoy
en día la mayoría de las nuevas características de C99. Sin embargo, este nuevo
estándar ha tenido poca acogida entre algunos desarrolladores de compiladores,
como Microsoft y Borland,
que se han centrado en C++. Brandon Bray, de Microsoft, dijo a este respecto:
"En general, hemos visto poca demanda de
muchas características de C99. Algunas características tienen más demanda que
otras, y consideraremos incluirlas en versiones futuras siempre que sean
compatibles con C++.
En otras
palabras a mediados de los años 60s, Martin Richards diseñó el
lenguaje BCPL con la finalidad
de usarlo para escribir software de sistemas operativos y compiladores.
En 1969, Ken Thompson escribió el
Lenguaje B, en
Bell Laboratories, con el objetivo de recodificar UNIX (escrito hasta ese
momento en lenguaje ensamblador) usando un lenguaje de alto nivel más portable
y flexible.
Durante los siguientes
años, Dennis Ritchie modificó el lenguaje B, llegando a crear el lenguaje C y
reescribiendo el sistema UNIX en dicho lenguaje; añadió características nuevas,
como son el diseño de tipos y las estructuras de datos.
En 1978, Dennis Ritchie
y Brian Kernighan publicaron la primera edición del libro El lenguaje
de programación C. Este libro fue durante años la especificación informal
del lenguaje. El lenguaje descrito en la primera edición de este libro, fue
conocido como "el C de Kernighan y Ritchie" o simplemente
"K&R C". En este libro se introdujeron nuevas características al
lenguaje: los tipo de datos struct, long int y unsigned int; los operadores =+
y =- fueron sustituidos por += y -=.
A mediados de los años
80, Bjarne Stroustrup (también de los
laboratorios Bell), crea el lenguaje C++, un lenguaje basado en
C, con numerosas características adicionales, siendo la principal que está
orientado a objetos. Si bien se han creado muchos lenguajes basados en C, C++
es el que ha permanecido más asociado a C.
En los años siguientes a
la publicación del C de Kernighan y Ritchie, se añadieron al lenguaje muchas
características no oficiales, que estaban presentes en algunos compiladores y
no en otros. Fue por ello que en 1989 ANSI (American National Standards
Institute) publicó el primer estándar oficial de C, que es conocido como ANSI
C.
En este estándar se
tomaron muchas de las funcionalidades no oficiales y se agregaron
funcionalidades nuevas como los prototipos de función, y un preprocesador
mejorado. También se cambió la sintaxis de la declaración de parámetros de
funciones, para que incluyeran el tipo junto con el nombre.
Al año siguiente, en
1990 se publicó la estandarización ISO del lenguaje. Este estándar es
básicamente el estándar ANSI, con unas pocas modificaciones de formato. A este
estándar se lo conoce, entonces, como C89, o C90, y se trata del mismo
lenguaje.
Basándose en el estándar
ANSI que estaba en preparación, en 1988 Kernighan y Ritchie publicaron la
segunda edición de su libro, que es aún hoy utilizada como una de las
referencias principales del lenguaje.
Durante los siguientes
años, el lenguaje C permaneció sin demasiados cambios. Sin embargo, como había
sucedido antes, los distintos compiladores fueron incorporando características
adicionales, que otros compiladores no tenían, siendo C++ la principal
influencia.
Fue por ello que a
finales de los noventa se decidió revisar el estándar de C, lo que llevó a la
publicación del estándar C99. Este estándar incluye varias nuevas
características como son: las funciones inline; la posibilidad de declarar
variables en cualquier parte del código; los comentarios de una sola línea
utilizando //; los tipos de datos long long int, bool y complex, entre otras.
Aún hoy el proceso de
evolución del lenguaje sigue avanzando, y desde 2007 se está trabajando en el
armado de un nuevo estándar.
A continuación la historia en breve para que la computadora
entienda nuestras instrucciones debe usarse un lenguaje específico conocido como
código máquina, el cual la máquina comprende fácilmente, pero
que lo hace excesivamente complicado para las personas. De hecho sólo consiste
en cadenas extensas de números 0 y 1.
Para facilitar el trabajo, los primeros
operadores de computadoras decidieron hacer un traductor para reemplazar los 0
y 1 por palabras o abstracción de palabras y letras provenientes del inglés; éste 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 similar a los lenguajes escritos por los humanos, denominados también lenguajes
de alto nivel.
La primera programadora de computadora conocida
fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer
a Charles Babbage, tradujo y amplió una descripción de su máquina
analítica. Incluso aunque Babbage nunca completó la construcción de cualquiera
de sus máquinas, el trabajo que Ada realizó con éstas le hizo ganarse el título
de primera programadora de computadoras del mundo. El nombre del lenguaje
de programación Ada fue
escogido como homenaje a esta programadora.
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 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.2
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.
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.
CONCLUSIONES
Un lenguaje de programación es
un modo muy práctico para que los seres humanos puedan darle instrucciones a un
equipo, en otras palabras, el lenguaje de programación puede usarse para crear
programas que controlen el comportamiento físico y lógico de una máquina, para
expresar algoritmos con precisión, o como modo de comunicación humana.
Se trata de datos tal y como
llegan al procesador que consiste en una serie de 0 y 1 que se llaman datos
binarios. El lenguaje máquina, por lo tanto, no es comprensible para los seres
humanos, razón por la cual se han desarrollado lenguajes intermediaros
comprensibles para el hombre.
La palabra programación se
define como el proceso de creación de un programa de computadora, mediante la
aplicación.
Existen 3 tipos de lenguaje; nivel bajo, nivel medio y nivel
alto… el nivel bajo nos dice que son lenguajes total mente
dependientes de la máquina, eso quiere decir que no se puede utilizar en otra
máquina. El nivel medio puede acceder a los registros del sistema. Todas ellas
características de lenguajes de bajo nivel y a la vez realizar operaciones de
alto nivel. El lenguaje de alto nivel son aquellos que se encuentran más
cercanos al lenguaje natural que al lenguaje máquina y lo puedes
migrar de una máquina a otra máquina sin ningún tipo de problema.
ANEXOS
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
|
Tabla 1. Lista de lenguaje de programación actuales
No hay comentarios:
Publicar un comentario