Está en la página 1de 10

INSTITUTO TECNOLOGICO

SUPERIOR DE ALVARADO
Campus Medelln
INGENIERA EN
SISTEMAS COMPUTACIONALES
Materia:
Algoritmos y Lenguajes de Programacion.
Semestre - Sistema:
2 Semestre Escolarizado.
Producto Acadmico:
Investigacin U1 Historia y evolucin del
lenguaje C.
Presenta:
Rodolfo Aguirre Martnez
Cesar Andrs Carrera Incln
Jaime Antonio Velzquez Carretero

Docente:
I.S.C: Gregorio Martnez Vsquez
TLALIXCOYAN, VER. FEB. JUN. 2015

Introduccin
Luego de la aparicin de B y BCPL, en los Laboratorios Bell, Ken Thompson model
muchas caractersticas sacadas de su lenguaje B, segn las equivalentes en BCPL, con
B cre las primeras versiones del sistema operativo UNIX, durante los 70s, en una
computadora DEC PDP-7.
En 1972, Dennis Ritchie, estaba finalizando su proyecto, en los famosos Laboratorios
Bell. "El lenguaje C", una evolucin del B, implementado originalmente en una DEC
PDP-11. Al contrario de sus antecesores, C era un lenguaje con tipos, es decir, que
cada elemento de informacin ocupaba un 'palabra' en memoria y la tarea de tratar
cada elemento de datos como nmero entero, real, o arreglos, no recaa en el
programador.
C era conocido como el lenguaje con el cual se desarroll el sistema operativo UNIX, y
actualmente la mayora de los sistemas operativos se codifican en C. Lo bueno de este
lenguaje es que no depende de la arquitectura de hardware. Es posible escribir cdigo
en C, y llevarlos a otras mquinas. Eso lo convirti en unos de los lenguajes ms
porttiles del mercado.
Objetivo
Conocer las bases del lenguaje C para tener una mejor compresin de este y con esto,
poder aprender a programar con este lenguaje de una mejor manera.

HISTORIA Y EVOLUCION DEL LENGUAJE C


El lenguaje de programacin C fue creado por Dennis Ritchie entre 1969 y 1973
cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el diseo
del sistema operativo UNIX. C fue creado para poder escribir dicho sistema operativo
en un lenguaje de alto nivel, independiente del hardware donde se ejecutara.
Contar con un lenguaje de alto nivel permiti el avance de los sistemas operativos, ya
que el mismo cdigo poda ser utilizado en las distintas plataformas, propiciando la
reutilizacin de cdigo y reduciendo los tiempos de desarrollo. As es que los sistemas
operativos basados en UNIX, el sistema BSD, el sistema GNU/Linux y muchos otros
fueron desarrollados en C.
Adems, con el paso del tiempo se han desarrollado cientos de bibliotecas que
permiten a los programadores de C utilizar el cdigo desarrollado por otros para la
realizacin de tareas comunes. Esto, a su vez, ha propiciado el desarrollo de
aplicaciones en lenguaje C.
Actualmente es imposible contar la cantidad de aplicaciones y herramientas
desarrolladas en C.
A mediados de los aos 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 ms portable y flexible.
Durante los siguientes aos, Dennis Ritchie modific el lenguaje B, llegando a crear el
lenguaje C y reescribiendo el sistema UNIX en dicho lenguaje; aadi caractersticas
nuevas, como son el diseo de tipos y las estructuras de datos.
En 1978, Dennis Ritchie y Brian Kernighan publicaron la primera edicin del libro El
lenguaje de programacin C. Este libro fue durante aos la especificacin informal del
lenguaje. El lenguaje descrito en la primera edicin de este libro, fue conocido como
"el C de Kernighan y Ritchie" o simplemente "K&R C". En este libro se introdujeron
nuevas caractersticas al lenguaje: los tipo de datos struct, long int y unsigned int; los
operadores =+ y =- fueron sustituidos por += y -=.
A mediados de los aos 80, Bjarne Stroustrup (tambin de los laboratorios Bell), crea el
lenguaje C++, un lenguaje basado en C, con numerosas caractersticas 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 ms asociado a C.

En los aos siguientes a la publicacin del C de Kernighan y Ritchie, se aadieron al


lenguaje muchas caractersticas 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 estndar oficial de C, que es conocido como ANSI
C.
En este estndar se tomaron muchas de las funcionalidades no oficiales y se agregaron
funcionalidades nuevas como los prototipos de funcin, y un preprocesador mejorado.
Tambin se cambi la sintaxis de la declaracin de parmetros de funciones, para que
incluyeran el tipo junto con el nombre.
Al ao siguiente, en 1990 se public la estandarizacin ISO del lenguaje. Este estndar
es bsicamente el estndar ANSI, con unas pocas modificaciones de formato. A este
estndar se lo conoce, entonces, como C89, o C90, y se trata del mismo lenguaje.
Basndose en el estndar ANSI que estaba en preparacin, en 1988 Kernighan y
Ritchie publicaron la segunda edicin de su libro, que es an hoy utilizada como una de
las referencias principales del lenguaje.
Durante los siguientes aos, el lenguaje C permaneci sin demasiados cambios. Sin
embargo, como haba sucedido antes, los distintos compiladores fueron incorporando
caractersticas adicionales, que otros compiladores no tenan, siendo C++ la principal
influencia.
Fue por ello que a finales de los noventa se decidi revisar el estndar de C, lo que
llev a la publicacin del estndar C99. Este estndar incluye varias nuevas
caractersticas como son: las funciones inline; la posibilidad de declarar variables en
cualquier parte del cdigo; los comentarios de una sola lnea utilizando //; los tipos de
datos long long int, bool y complex, entre otras.
An hoy el proceso de evolucin del lenguaje sigue avanzando, y desde 2007 se est
trabajando en el armado de un nuevo estndar.
Etapas del desarrollo del lenguaje C
En 1978, Ritchie y Brian Kernighan publicaron la primera edicin de El lenguaje de
programacin C, tambin conocido como La biblia de C. Este libro fue durante aos la
especificacin 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 edicin del libro cubre el estndar ANSI C, descrito ms abajo).
Kernighan y Ritchie introdujeron las siguientes caractersticas 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 ambigedad


sintctica de expresiones como i=-10, que se podra interpretar bien como i =- 10 o
bien como i = -10.
El C de Kernighan y Ritchie es el subconjunto ms bsico del lenguaje que un
compilador debe de soportar. Durante muchos aos, incluso tras la introduccin del
ANSI C, fue considerado "el mnimo comn denominador" en el que los programadores
deban programar cuando deseaban que sus programas fueran transportables, pues no
todos los compiladores soportaban completamente ANSI, y el cdigo razonablemente
bien escrito en K&R C es tambin cdigo ANSI C vlido.
En las primeras versiones del lenguaje, la definicin de funciones se haca mediante un
'prototipo de funcin' (function prototype), el cual indicaba al compilador el tipo de
retorno de la funcin. Aunque este mtodo tiene una gran desventaja respecto al
nuevo, debido a que no comprueba el nmero ni el tipo en la lista de argumentos; en
otras palabras, es mucho ms fcil cometer errores al hacer una llamada a una funcin
con argumentos incorrectos.
Ejemplo del "viejo estilo":
int power(); /* Podria haberse omitido (*) */
power()
int a, b;
{
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}
Ejemplo de la nueva definicin:
int power(int a, int b)
{
int n;
for (n = 1; b > 0; --b)
n *= a;

return n;
}
(*) Por defecto, el tipo de retorno en C es int, por lo que la declaracin entera int
power(); podra haberse omitido.
En los aos siguientes a la publicacin del C de Kernighan y Ritchie, se aadieron al
lenguaje muchas caractersticas no oficiales, que estaba soportadas por los
compiladores de AT&T, entre otros. Algunas de estas caractersticas eran:

Funciones void y el tipo de datos void *.

Funciones que retornaban tipos de datos struct o union (en lugar de punteros).

Asignacin de tipos de datos struct.

Calificador const, que hace que un objeto sea de slo lectura.

Una biblioteca estndar, que incorporaba la mayora de las funcionalidades


implementadas por varios desarrolladores de compiladores.

Enumeraciones.

ANSI C e ISO C
A finales de la dcada de 1970, C empez a sustituir a BASIC como lenguaje de
programacin de microcomputadores predominante. Durante la dcada 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 compaeros de Bell
Labs para aadir funcionalidades de programacin orientada a objetos a C. El lenguaje
que crearon, llamado C++, es hoy en da el lenguaje de programacin de aplicaciones
ms comn en el sistema operativo Microsoft Windows; mientras que C sigue siendo
ms popular en el entorno Unix. Otro lenguaje que se desarroll en esa poca,
Objective C, tambin aadi caractersticas de programacin orientada a objetos a C.
Aunque hoy en da no es tan popular como C++, se usa para desarrollar aplicaciones
Cocoa para Mac OS X.
En 1983, el Instituto Nacional Estadounidense de Estndares organiz un comit,
X3j11, para establecer una especificacin estndar de C. Tras un proceso largo y
arduo, se complet el estndar en 1989 y se ratific como el "Lenguaje de
Programacin C" ANSI X3.159-1989. Esta versin del lenguaje se conoce a menudo
como ANSI C, o a veces como C89 (para distinguirla de C99).
En 1990, el estndar ANSI (con algunas modificaciones menores) fue adoptado por la
Organizacin Internacional para la Estandarizacin (ISO) en el estndar ISO/IEC
9899:1990. Esta versin 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 estandarizacin del ANSI C fue producir una
extensin al C de Kernighan y Ritchie, incorporando muchas funcionalidades no
oficiales. Sin embargo, el comit de estandarizacin incluy tambin muchas
funcionalidades nuevas, como prototipos de funcin, y un preprocesador mejorado.
Tambin se cambi la sintaxis de la declaracin de parmetros para hacerla semejante
a la empleada habitualmente en C++:
main(argc, argv)
int argc;
char **argv;
{
...
}
pas a ser:
int main(int argc, char *argv[])
{
...
}
ANSI C est soportado hoy en da por casi la totalidad de los compiladores. La mayora
del cdigo C que se escribe actualmente est basado en ANSI C. Cualquier programa
escrito slo en C estndar sin cdigo que dependa de un hardware determinado
funciona correctamente en cualquier plataforma que disponga de una implementacin
de C compatible. Sin embargo, muchos programas han sido escritos de forma que slo
pueden compilarse en una cierta plataforma, o con un compilador concreto, esto
puede ser debido a diversos motivos:
La utilizacin de bibliotecas no estndar, como interfaces grficas de usuario.
El uso de compiladores que no cumplen las especificaciones del estndar.
El uso de tipos de datos suponiendo que tendrn el mismo tamao u orden de los bits
en todas las plataformas.
La macro __STDC__ puede usarse para dividir el cdigo en secciones ANSI y K&R para
el compilador.
# if __STDC__
extern int getopt(int,char * const *,const char *);

# else
extern int getopt();
# endif
Algunos programadores recomiendan usar "#if __STDC__", como en el ejemplo, en
lugar de "#ifdef __STDC__" porque algunos compiladores le asignan el valor cero a
__STDC__ para indicar que no son compatibles con ANSI.
C99
Tras el proceso de estandarizacin de ANSI, la especificacin del lenguaje C
permaneci relativamente estable durante algn tiempo, mientras que C++ sigui
evolucionando. Sin embargo, el estndar continu bajo revisin a finales de la dcada
de 1990, lo que llev a la publicacin del estndar ISO 9899:1999 en 1999. Este
estndar se denomina habitualmente "C99". Se adopt como estndar ANSI en marzo
de 2000.
Las nuevas caractersticas de C99 incluyen:

Funciones inline.

Las variables pueden declararse en cualquier sitio (como en C++), en lugar de


poder declararse slo tras otra declaracin o al comienzo de una declaracin
compuesta.

Muchos tipos de datos, incluyendo long long int (para reducir el engorro de la
transicin de 32 bits a 64 bits), un tipo de datos booleano, y un tipo complex que
representa nmeros complejos.

Arrays de longitud variable.

Soporte para comentarios de una lnea que empiecen con //, como en BCPL o en
C++, caracterstica para la que muchos compiladores haban dado soporte por su
cuenta.

Muchas funciones nuevas, como snprintf()

Algunos headers nuevos, como stdint.h.

Una consideracin importante es que hasta la publicacin de este estndar, C haba


sido mayormente un subconjunto estricto del C++. Era muy sencillo "actualizar" un
programa de C hacia C++ y mantener ese cdigo compilable en ambos lenguajes. Sin
embargo, el nuevo estndar agrega algunas caractersticas que C++ no admite, como
por ejemplo los inicializadores estticos de estructuras. Tambin define al tipo "bool"
de una manera que no es exactamente la del C++.

El compilador GCC, entre muchos otros, soportan hoy en da la mayora de las nuevas
caractersticas de C99. Sin embargo, este nuevo estndar 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 caractersticas de C99. Algunas
caractersticas tienen ms demanda que otras, y consideraremos incluirlas en
versiones futuras siempre que sean compatibles con C++.
C11
C11 (antes conocido como C1X) es un nombre informal para ISO/IEC 9899:2011,3 el
ltimo estndar publicado para C. El borrador final, N1570,4 fue publicado en abril de
2011. El nuevo estndar super su ltima revisin el 10 de octubre de 2011 y fue
oficialmente ratificado por la ISO y publicado el 8 de diciembre de 2011.

C++
Al principio de los 80s, donde Bjarne Stroustrup, dise una extensin del lenguaje C,
llamndolo C con Clases. El trmino clase provena de Simula 67, y serva para
entender ms el comportamiento del mundo real y llevarlo a los cdigos, ocultando los
detalles de su implementacin.
En 1984, C con Clases fue rediseado en un compilador y se lo denomin C ++. Como
lo indica la nota Data Abstraction in C, en el Tcnical Journal de AT&T Bell Laboratories.
(vol. 63, nm 8, Octubre 1984). En 1985 estuvo disponible la primera versin del
lenguaje C ++ y se realiz el libro de Bjarne Struostrup: The C ++ Programming
Languaje, publicado por Addison-Wesley en 1986.
El nombre de C ++, fue porque ste ltimo era una variante del C original. En el
lenguaje C, el operador ++ significa, incrementar la variable, se eligi en nombre C +
+, debido a que ste agregaba al C original el trmino de Programacin Orientada a
Objetos (POO), basadas en Simula 67.
Al ser C ++ una variacin de C, los programas codificados en C pueden correr
tranquilamente en C ++. En 1990, el lenguaje ha sido descrito por Stroustrup y Ellis en
el Annotated C ++ Reference Manual editado por Addison -Wesley, existiendo una
versin en espaol del mismo, con el ttulo de C ++. Manual de Referencia con
anotaciones publicado por Addison-Wesley/Das de Santos en 1994.
La versin actual estandarizada por ANSI, la versin 3.0 es la que soportan la mayora
de los fabricantes mundiales, como ser, , AT&T, WatCom, Microsoft, etc, es sus
respectivas actualizaciones.

Hoy en da, Borland ofrece el compilador de C++ en la versin 5.5 de forma gratuita.

Conclusin
El lenguaje de programacin nos sirve para describir las acciones seguidas que un
equipo debe de llevar a cabo. Es la forma en la que nosotros, los seres humanos
damos instrucciones a la mquina para realizar ciertas acciones. Encontramos 3 tipos
de lenguaje de programacin; el lenguaje de alto nivel, es aquel que es ms cercano a
nuestro lenguaje o lenguaje natural; el lenguaje de medio nivel, es el que, como su
nombre lo dice, se encuentra justo en medio del lenguaje de alto nivel y el lenguaje de
bajo nivel, aqu se encuentra el lenguaje C; y por ltimo, el lenguaje de bajo nivel, es el
lenguaje que depende en su totalidad de la mquina.
Bibliografa
Artculo Evolucin del Lenguaje C, Amaranta Garca Hernndez.
Artculo Historia y evolucin del lenguaje C.
www.wikipedia.com