Professional Documents
Culture Documents
Desarrollador(es)
Informacin general
Extensiones .h .c
comunes
Apareci en 1972
Sistema Multiplataforma
operativo
ndice
[ocultar]
1Filosofa
2Caractersticas
o 2.1Propiedades
o 2.2Carencias
o 2.3Ventajas
o 2.4Inconvenientes
3Historia
o 3.1Desarrollo inicial
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]
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.
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.
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]
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.
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
Ventajas: Desventajas:
Al igual que otros lenguajes tiene
* El lenguaje C ha sido pensado para ser altamente transportable. sus inconvenientes como:
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.
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.
Ventajas
* 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).
* 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.
* 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
* Encapsulacin.
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.
-Sistemas operativos
-Intrpretes
-Editores
-Ensambladores
-Compiladores
-Administradores de bases de datos.
- 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.
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.
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.
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.