martes, 12 de febrero de 2013

Evolución Del Lenguaje C


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()
algunos headers nuevos, como stdint.h.

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.
En 1960, se creó COBOL, uno de los lenguajes usados aún en 2010 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.












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