You are on page 1of 17

C (lenguaje de programacin)

Para el libro, vase El lenguaje de programacin C.


Para otros usos de este trmino, vase C (desambiguacin).

Desarrollador(es)

Dennis Ritchie y Laboratorios Bell

Informacin general

Extensiones .h .c
comunes

Paradigma Imperativo (procedural), estructurado

Apareci en 1972

Diseado por Dennis Ritchie

ltima versin C11 (diciembre de 2011)


estable

Sistema de Dbil, esttico


tipos

Implementacio GCC, Intel C, entre muchas ms.


nes

Dialectos Cyclone, Unified Parallel C, Split-C, Cilk, C*

Influido por B (BCPL, CPL), ALGOL 68,1

Ensamblador, PL/I, Fortran

Ha influido a Vala, C#, Objective-C, C++, AWK, bc, Java, JavaS


cript, PHP, Perl, NXC, D, Go

Sistema Multiplataforma
operativo

[editar datos en Wikidata]

C es un lenguaje de programacin originalmente desarrollado por Dennis


Ritchie entre 1969 y 1972 en los Laboratorios Bell,2como evolucin del anterior lenguaje B, a
su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos,
concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje
de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para
crear aplicaciones.
Se trata de un lenguaje de tipos de datos estticos, dbilmente tipificado, de medio nivel, ya
que dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores
suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con
cdigo C o acceder directamente a memoria o dispositivos perifricos.
La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El
lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente,
en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este
estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es portable
entre plataformas y/o arquitecturas.

ndice
[ocultar]

1Filosofa

2Caractersticas

o 2.1Propiedades

o 2.2Carencias

o 2.3Ventajas

o 2.4Inconvenientes

3Historia

o 3.1Desarrollo inicial

o 3.2El C de Kernighan y Ritchie

o 3.3ANSI C e ISO C

o 3.4C99
o 3.5C11

4Variantes

5Proceso de compilacin

o 5.1Ejemplo de cdigo

6Herramientas de programacin

7Aplicabilidad

o 7.1Aplicaciones embebidas

8Bibliotecas C

9Vase tambin

10Referencias

11Enlaces externos

Filosofa[editar]
Uno de los objetivos de diseo del lenguaje C es que slo sean necesarias unas pocas
instrucciones en lenguaje mquina para traducir cada elemento del lenguaje, sin que haga
falta un soporte intenso en tiempo de ejecucin. Es muy posible escribir C a bajo nivel de
abstraccin; de hecho, C se us como intermediario entre diferentes lenguajes.
En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de
caractersticas, se pueden desarrollar compiladores de C fcilmente. En consecuencia, el
lenguaje C est disponible en un amplio abanico de plataformas (ms que cualquier otro
lenguaje). Adems, a pesar de su naturaleza de bajo nivel, el lenguaje se desarroll para
incentivar la programacin independiente de la mquina. Un programa escrito cumpliendo los
estndares e intentando que sea porttil puede compilarse en muchos computadores.
C se desarroll originalmente (conjuntamente con el sistema operativo Unix, con el que ha
estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha
alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de
la programacin de software de sistema, para la que se dise originalmente.

Caractersticas[editar]
Propiedades[editar]

Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como


funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas.

Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los
ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias
de ruptura).
Un sistema de tipos que impide operaciones sin sentido.

Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como


definir macros e incluir mltiples archivos de cdigo fuente.

Acceso a memoria de bajo nivel mediante el uso de punteros.

Interrupciones al procesador con uniones.

Un conjunto reducido de palabras clave.

Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por
referencia se consigue pasando explcitamente a las funciones las direcciones de
memoria de dichos parmetros.

Punteros a funciones y variables estticas, que permiten una forma rudimentaria


de encapsulado y polimorfismo.

Tipos de datos agregados ( struct ) que permiten que datos relacionados (como un
empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un
todo (en una nica variable "empleado").
Carencias[editar]

Recoleccin de basura nativa, sin embargo se encuentran a tal efecto bibliotecas


como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.

Soporte para programacin orientada a objetos, aunque la implementacin original de


C++ fue un preprocesador que traduca cdigo fuente de C++ a C. Vase tambin la
librera GObject.

Funciones anidadas, aunque GCC tiene esta caracterstica como extensin.

Soporte nativo para programacin multihilo. Disponible usando libreras


como libpthread.
Aunque la lista de las caractersticas tiles de las que carece C es larga, este factor ha sido
importante para su aceptacin, porque escribir rpidamente nuevos compiladores para nuevas
plataformas, mantiene lo que realmente hace el programa bajo el control directo del
programador, y permite implementar la solucin ms natural para cada plataforma. sta es la
causa de que a menudo C sea ms eficiente que otros lenguajes. Tpicamente, slo la
programacin cuidadosa en lenguaje ensamblador produce un cdigo ms rpido, pues da
control total sobre la mquina, aunque los avances en los compiladores de C y la complejidad
creciente de los microprocesadores modernos han reducido gradualmente esta diferencia.
En algunos casos, una caracterstica inexistente puede aproximarse. Por ejemplo, la
implementacin original de C++ consista en un preprocesador que traduca cdigo fuente C+
+ a C. La mayora de las funciones orientadas a objetos incluyen un puntero especial, que
normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la funcin.
Mediante el paso de este puntero como un argumento de funcin, esta funcionalidad puede
desempearse en C. Por ejemplo, en C++ se puede escribir:
stack.push(val);

Mientras que en C se podra escribir:

push(stack, val);

Donde el argumento stack es un puntero a una struct equivalente al puntero this de C++, que
es un puntero a un objeto.
Ventajas[editar]

Se ha sugerido que este artculo o seccin sea fusionado con #Propiedades (discusin).
Una vez que hayas realizado la fusin de contenidos, pide la fusin de historiales aqu.

Lenguaje muy eficiente puesto que es posible utilizar sus caractersticas de bajo nivel
para realizar implementaciones ptimas.

A pesar de su bajo nivel es el lenguaje ms portado en existencia,


habiendo compiladores para casi todos los sistemas conocidos.

Proporciona facilidades para realizar programas modulares y/o utilizar cdigo o


bibliotecas existentes.
Inconvenientes[editar]

Se ha sugerido que este artculo o seccin sea fusionado con #Carencias (discusin).
Una vez que hayas realizado la fusin de contenidos, pide la fusin de historiales aqu.

El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de dato dinmico
es la gran diferencia en velocidad de desarrollo: es ms lento programar en C, sobre todo para
el principiante. La razn estriba en que el compilador de C se limita a traducir cdigo sin
apenas aadir nada. La gestin de la memoria es un ejemplo clsico: en C el programador ha
de reservar y liberar la memoria explcitamente. En otros lenguajes (como BASIC, Matlab o
C#) la memoria es gestionada de forma transparente para el programador. Esto alivia la carga
de trabajo humano y en muchas ocasiones evita errores, aunque tambin supone mayor carga
de trabajo para el procesador.
El mantenimiento en algunos casos puede ser ms difcil y costoso que con ciertos lenguajes
de ms alto nivel. El cdigo en C se presta a sentencias cortas y enrevesadas de difcil
interpretacin[cita requerida].
Cabe destacar el contexto y poca en la que fue desarrollado C. En aquellos tiempos existan
muy pocos programadores, los cuales, a su vez, eran prcticamente todos expertos en el
rea. De esta manera, se asuma que los programadores eran conscientes de sus trabajos y
capaces de manejar perfectamente el lenguaje. Por esta razn es muy importante que los
recin iniciados adopten buenas prcticas a la hora de escribir en C y manejar la memoria,
como por ejemplo un uso intensivo de indentacin y conocer a fondo todo lo que implica el
manejo de punteros y direcciones de memoria.
Historia[editar]
Desarrollo inicial[editar]

Ken Thompson (izquierda) con Dennis Ritchie (derecha, el inventor del lenguaje de programacin C)

El desarrollo inicial de C se llev a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973;
segn Dennis Ritchie, el periodo ms creativo tuvo lugar en 1972. Se le dio el nombre "C"
porque muchas de sus caractersticas 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. Haban estado jugando en el mainframe de su compaa, pero debido a su poca
capacidad de proceso y al tener que soportar 100 usuarios, Ken Thompson y Dennis
Ritchie no tenan 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 mquina no tena sistema operativo, as que decidieron escribir uno. Finalmente
decidieron portar el sistema operativo del PDP-11 que haba en su oficina, pero era muy
costoso, pues todo el cdigo estaba escrito en lenguaje ensamblador. Entonces
decidieron usar un lenguaje de alto nivel y porttil para que el sistema operativo se
pudiera portar fcilmente de un ordenador a otro, consideraron usar B pero careca de las
funcionalidades necesarias para aprovechar algunas caractersticas avanzadas del PDP-
11 entonces empezaron a crear un nuevo lenguaje, C.

La justificacin para obtener el ordenador original que se us para desarrollar Unix fue
crear un sistema que automatizase el archivo de patentes. La versin original de Unix se
desarroll en lenguaje ensamblador. Ms tarde, el lenguaje C se desarroll para poder
reescribir el sistema operativo.
En 1973, el lenguaje C se haba 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 ncleos 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).
Programacin en C

Lenguajes de Programacin > Programacin en C

El lenguaje de programacin en C, es un lenguaje


conocido como de alto nivel.

Una de las caracteristicas del lenguaje de programacin


en C, es que es un lenguaje estructurado, lo que perimte
generar codigo claro y sencillo, ya que esta basado en la
modularidad.

El lenguaje de programacin en C, esta estructurado en


tres partes fundamentales, las cuales son, una libreria
estandar, un programa compilador y un preprocesador.

La libreria estandar en el lenguaje de programacin C, no es


ms que que librerias realizadas en codigo objeto y puede
haber sido realizada en otro lenguaje diferente que el C. Estas
librerias se deben colocar el un programa de lenguaje
programacin en C , en la instruccion conocida como INCLUDE.

El programa compilador en el lenguaje de programacin en C,


es el que tiene como funcion traducir las instrucciones del
programa fuente en C a el lenguaje conocido por las
computadoras u ordenadores, el llamado lenguaje maquina. El
programa compilador, depura y detecta los posibles errores en
el lenguaje fuente, y es capaz de notificar el error ocurrido al
programador, mediante un mensaje de texto.

En el lenguaje de programacin en C, el preprocesador es un


componente perteneciente propiamente al lenguaje C, el cual
transforma el programa fuente traduciendo cada instruccion del
programa fuente, de la siguiente forma: Elimina los
comentarios colocados por el programador, incluye en el
programa fuente el contenido de los archivos que se encuentran
declarados en el INCLUDE, a estos archivos se le suele llamar
cabeceras, y por ultimo , sustituye los valores de las constantes
declaradas en el define.

Por su flexibilidad y ser un lenguaje de alto nivel, es empleado


por muchos programadores.
Ventajas y Desventajas
"En Lenguaje C, lo fcil es simple y lo difcil
posible."

Ventajas: Desventajas:
Al igual que otros lenguajes tiene
* El lenguaje C ha sido pensado para ser altamente transportable. sus inconvenientes como:

* Un ncleo del lenguaje simple, con funcionalidades aadidas * Recoleccin de basura


importantes, como funciones matemticas y de manejo de nativa, sin embargo se
archivos, proporcionadas por bibliotecas. encuentran a tal efecto
bibliotecas como la "libgc"
* Es un lenguaje muy flexible que permite programar con desarrollada por Sun
mltiples estilos. Uno de los ms empleados es el estructurado "no Microsystems, o el Recolector
llevado al extremo" (permitiendo ciertas licencias de ruptura). de basura de Boehm.
* Un sistema de tipos que impide operaciones sin sentido.
* Soporte para programacin
* Usa un lenguaje de preprocesado, el preprocesador de C, para orientada a objetos, aunque la
tareas como definir macros e incluir mltiples archivos de cdigo implementacin original de C+
fuente. + fue un preprocesador que
traduca cdigo fuente de C++
* Acceso a memoria de bajo nivel mediante el uso de punteros. a C.

* Interrupciones al procesador con uniones. * Encapsulacin.

* Un conjunto reducido de palabras clave. * Funciones anidadas, aunque


GCC tiene esta caracterstica
* Por defecto, el paso de parmetros a una funcin se realiza por como extensin.
valor. El paso por referencia se consigue pasando explcitamente a
las funciones las direcciones de memoria de dichos parmetros. * Polimorfismo en tiempo de
cdigo en forma de
* Punteros a funciones y variables estticas, que permiten una sobrecarga, sobrecarga de
forma rudimentaria de encapsulado y polimorfismo. operadores y slo dispone de
un soporte rudimentario para
Gracias a este tipo de programas la tecnologa ha podido alcanzar la programacin genrica.
un gran avance en todos los mbitos tanto nacionales como
internacionales, es por eso que es necesario que este tipo de * Soporte nativo para
lenguaje se aprenda para poder realizar utileras capaces de trabajar programacin multihilo y
y apoyar proyectos que ayudarn al manejo mas sencillo de una redes de computadores.
empresa en particular pequeas aplicaciones en el hogar.
* Carece de instrucciones de
entrada/salida, de instrucciones para
El Lenguaje C es relativamente sencillo, pero su gran flexibilidad manejo de cadenas de caracteres, con
es terreno abonado para la creacin de vicios y prcticas no lo que este trabajo queda para la
adecuadas de programacin, por lo cual debe cuidarse la enseanza librera de rutinas, con la
de su estilo de programacin, tcnica y filosofa de trabajo. consiguiente prdida de
transportabilidad.

La excesiva libertad en la escritura


de los programas puede llevar a
errores en la programacin que, por
ser correctos sintcticamente no se
detectan a simple vista. Por otra
parte las precedencias de los
operadores convierten a veces las
expresiones en pequeos
rompecabezas. A pesar de todo, C ha
demostrado ser un lenguaje
extremadamente eficaz y expresivo.

Ventajas y desventajas de programar en C


Programar en assembler tiene muchas diferencias con respecto a programar en C. Mientras que en un
lenguaje de programacin programamos en bajo nivel (assembler) en C programamos en alto nivel. Qu
quiere decir esto? Que no programamos a nivel mquina o computadora sino que lo hacemos mediante una
serie de comandos y que cada uno de ellos representa una serie de funciones de bajo nivel. Es decir, que si
necesitamos hacer un programa corto y optimizar el tiempo porque estamos trabajando con una plaqueta
electrnica con un microcontrolador PIC por ejemplo, codificar en assembler es una buena idea porque
tenemos en cuenta cada milisegundo procesado. En cambio, en C, perderamos mucho tiempo. Pero si
necesitamos programar algo muy largo, lo mejor es codificar en C, porque en assembler se torna muy difcil y
extenso. Para tener una idea, en C un comando puede tener incorporado entre 10 y 50 lneas de lenguaje
mquina. Estas son las ventajas y desventajas de programar en C:

Ventajas de programar en C:
Programamos en un alto nivel. Esto quiere decir que no programamos en lenguaje mquina.

Los comandos son muy sencillos. Para aprender a programar en C, es muy fcil armar una
estructura del software por primera vez por ejemplo.
El lenguaje incorpora muchas libreras, las cuales son de manejo de archivos, funciones
matemticas, e incluso se pueden crear las mismas teniendo en cuenta nuestras necesidades.
Por ejemplo, si programamos un microcontrolador, se puede crear una librera para manejar un
display LCD.

Incorpora interrupciones para poder armar una programacin estructurada ms sencilla.

Es un lenguaje multiplataforma, porque con l se puede programar desde software para PC,
hasta programas para microcontroladores en electrnica con diferentes compiladores.

Uso de punteros. Estos tienen muchas funcionalidades, como trabajar con la memoria interna
desde un bajo nivel, llamar a una funcin en particular o incluso a una determinada variable
esttica.

Desventajas de programar en C:
Si necesitamos optimizar el tiempo, como se dijo anteriormente, no es una buena idea usar C,
porque no estamos trabajando en lenguaje mquina.

No es un lenguaje visual como por ejemplo si lo es Visual Basic. Para saber C, debes conocer
cmo trabaja, no puedes deducirlo intuitivamente como si lo puedes hacer por ejemplo en Visual
Basic.

Es necesario saber usar correctamente los punteros porque de lo contrario el software


programado puede resultar muy lento.

Tener un manejo de la memoria en C puede resultar algo complicado si es que no se tiene


mucha idea de programacin.

Estas son las principales ventajas y desventajas del lenguaje de programacin C.


C (lenguaje de programacin)

C es un lenguaje de programacin creado en 1972 por Dennis M. Ritchie en los


Laboratorios Bell como evolucin del anterior lenguaje B, a su vez basado en BCPL.

Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos,


concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el
lenguaje de programacin ms popular para crear software de sistemas, aunque
tambin se utiliza para crear aplicaciones.

Se trata de un lenguaje dbilmente tipificado de medio nivel pero con muchas


caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto
nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a
muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan
mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o
dispositivos perifricos.

La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El


lenguaje que define este estndar fue conocido vulgarmente como ANSI C.
Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La
adopcin de este estndar es muy amplia por lo que, si los programas creados lo
siguen, el cdigo es porttil entre plataformas y/o arquitecturas.

Ventajas

* Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como


funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas.

* Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los
ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas
licencias de ruptura).

* Un sistema de tipos que impide operaciones sin sentido.

* Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir


macros e incluir mltiples archivos de cdigo fuente.

* Acceso a memoria de bajo nivel mediante el uso de punteros.

* Interrupciones al procesador con uniones.

* Un conjunto reducido de palabras clave.

* Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por
referencia se consigue pasando explcitamente a las funciones las direcciones de
memoria de dichos parmetros.

* Punteros a funciones y variables estticas, que permiten una forma rudimentaria de


encapsulado y polimorfismo.

* Tipos de datos agregados (struct) que permiten que datos relacionados (como un
empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como
un todo (en una nica variable "

Desventajas

* Recoleccin de basura nativa, sin embargo se encuentran a tal efecto bibliotecas


como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de
Boehm.

* Soporte para programacin orientada a objetos, aunque la implementacin original de


C++ fue un preprocesador que traduca cdigo fuente de C++ a C.

* Encapsulacin.

* Funciones anidadas, aunque GCC tiene esta caracterstica como extensin.

* Polimorfismo en tiempo de cdigo en forma de sobrecarga, sobrecarga de operadores


y slo dispone de un soporte rudimentario para la programacin genrica.

* Soporte nativo para programacin multihilo y redes de computadores.


Ventajas
- Lenguaje de programacin orientado a objetos.
- Lenguaje muy didctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con
gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros.
- Es muy potente en lo que se refiere a creacin de sistemas complejos, un lenguaje muy robusto.
- Permite elaborar aplicaciones sencillas como un "Hello World!" hasta sistemas operativos y
mucho ms, todo eso dependiendo del manejo del lenguaje.
- Actualmente, puede compilar y ejecutar cdigo de C, ya viene con libreras para realizar esta
labor.
- Es un lenguaje muy empleado, existen muchos tutoriales en lnea, libros, cdigos fuentes
abiertos... hay material de sobra y basta para aprender lo necesario y mucho ms con este
lenguaje.
- Existen muchos algoritmos cuyo pseudocdigo se encuentra ya desarrollado en C++, de manera
que puedes tomarlo y amoldarlo a tu solucin (porque el que veas un fragmento de cdigo no
asegura que sea correcto al 100%).

Desventajas:
- Uso de DLLs (libreras dinmicas) muy complejo. Java y .Net han evolucionado estos conceptos
manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador
debe encargarse de cargar y liberar de memoria estas libreras, y correr los riesgos por el manejo
de esta memoria.
- Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto,
pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente.
- Manejo de punteros y memoria respecto a ello. Claro, esta tambin es una gran ventaja porque
permite un mejor control de la memoria y una buena administracin de recursos de computadora,
pero la inexperiencia de los desarrolladores o la prdida de costumbre con este tipo de variables
(sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre.
- No es recomendable para desarrollo de pginas Web.
- Existen muchos entornos de programacin para C++. No existen estndares para ello. De manera
que puedes encontrar C++ para Unix/Linux, C++ para Windows, C++ para MacOS, y asi
indistintamente. Adems, en cada SO encuentras diferentes IDEs de desarrollo, y tambin
encuentras IDEs para desarrollo de aplicaciones grficas como Anjuta, Qt para Unix/Linux, Borland
C++ Builder y Visual Studio C++ para Windows...
HISTORIA DEL LENGUAJE C
Antes de empezar con la historia del lenguaje C definir Que es
el lenguaje C? El C es un lenguaje de programacin de nivel
medio ya que combina los elementos del lenguaje de alto
nivel con la funcionalidad del ensamblador. Una vez aclarado
este punto pasaremos a conocer su historia.

En 1967 Martin Richard creo el lenguaje BCPL que fue la


base para la creacion del lenguaje B escrito por Ken
Thompson en 1970 con la intencin de recodificar el UNIX,
que en su face de arranque estaba codificado en lenguaje
ensamblador.

El lenguaje c fue creado por Dennis Ritchie en los


laboratorios Bell Telephone en 1972, el c fue creado con un fin
especfico: el diseo del sistema operativo UNIX. Este lenguaje
solo es una modificacin del lenguaje B. El lenguaje C se llama
de esta forma debido a que su predecesor fue llamado B.

La novedad que proporcion el lenguaje C sobre el B fu


el diseo de tipos y estructuras de datos. Los tipos
estructurados bsicos de C son las estructuras, las unines, y
los arrays. Estos permiten la definicin y declaracin de tipos
de mayor complejidad.

Los tipos bsicos de datos en el lenguaje C eran "CHAR"


(carcter), "INT" (enteros), "FLOAT" (Reales en simple
presicin), y "DOUBLE" (Reales en doble Presicin).
Posteriormente se aadieron los tipos "SHORT" (Enteros de
longitud<=longitud de un int), "LONG" (Enteros de longitud
>= longitud de un entero), "UNSIGNED" (Enteros sin signo), y
"ENUMERACIONES".

Como el C es un lenguaje muy poderoso y flexible su uso


se difundi muy rpidamente mas all de los laboratorios Bell.
Los programadores de todo el mundo comenzaron a usarlo
para escribir todo tipo de programas. Sin embargo, diferentes
organizaciones comenzaron a utilizar muy pronto sus propias
versiones del C, las pequeas diferencias entre las
implementaciones comenzaron a dar problemas a los
programadores. Para resolver este problema, el American
National Stndards (ANSI) formo un comit en 1983 para
establecer una definicin estndar del C, que llego a ser
conocida como C estndar ANSI. Con unas cuantas
excepciones, todos los compiladores del C modernos de
adhieren a este estndar.

El lenguaje C inicialmente fu creado para la


programacin de

-Sistemas operativos
-Intrpretes
-Editores
-Ensambladores
-Compiladores
-Administradores de bases de datos.

Actualmente, debido a sus caractersticas, puede ser


utilizado para todo tipo de programas.

Algunas de las versiones existentes son:

- Quick C
- C++
- Turbo C
- Turbo C ++
- Borland C
- Borland C++
- Microsoft C
- Turbo C 2.0
- Turbo C++ 1.0
- Borland C++ 2.0
Programacin en C/Historia de C
< Programacin en C

Introduccin Historia de 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.

Evolucin[editar]
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.

You might also like