Lenguaje C 2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

C (lenguaje de programación)

Ir a la navegaciónIr a la búsqueda
En este artículo se detectaron varios problemas. Por favor, edítalo para mejorarlo:

 Necesita referencias adicionales para su verificación.


 Existen dudas o desacuerdos sobre la exactitud de su redacción. Por favor,
debate este problema en la página de discusión.
 Podría contener información desactualizada.
 Podría ser difícil de entender para lectores interesados en el tema.
Este aviso fue puesto el 4 de mayo de 2019.

Código simple en C]

Desarrollador(es)

Dennis Ritchie y Laboratorios Bell

Información general
Extensiones .c, .h
comunes

Paradigma Imperativo (procedural), estructurado

Apareció en 1972

Diseñado por Dennis Ritchie

Última C18 (junio de 2018)


versión
estable

Última C2x
versión en
pruebas

Sistema de Débil, estático


tipos

Implementac GCC, Intel C, entre muchas más.


iones

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

Influido por B (BCPL, CPL), ALGOL 68,1:201-208

Ensamblador, PL/I, Fortran

Ha influido a Vala, C#, Objective-C, C++, AWK, bc, Java, JavaScri
pt, PHP, Perl, NXC, D, Go, Rust, Python

Sistema Multiplataforma
operativo

[editar datos en Wikidata]

C es un lenguaje de programación de propósito general2:1 originalmente


desarrollado por Dennis Ritchie entre 1969 y 1972 en los Laboratorios Bell,1 como
evolución del anterior lenguaje B, a su vez basado en BCPL.2:134
Al igual que B, es un lenguaje orientado a la implementación de sistemas
operativos, concretamente Unix. C es apreciado por la eficiencia del código que
produce y es el lenguaje de programación más popular para crear softwares de
sistemas y aplicaciones.
Se trata de un lenguaje de tipos de datos estáticos, débilmente tipado, de medio
nivel, que dispone de las estructuras típicas de los lenguajes de alto nivel pero, a
su vez, dispone de construcciones del lenguaje que permiten un control a bajo
nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan
mezclar código en ensamblador con código C o acceder directamente
a memoria o dispositivos periféricos.
La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-
1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI
C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC
9899:1990). La adopción de este estándar es muy amplia por lo que, si los
programas creados lo siguen, el código es portable entre plataformas y/o
arquitecturas.

Índice

 1Filosofía
o 1.1Propiedades
o 1.2Precauciones que se debe tener por ser un lenguaje de bajo nivel
o 1.3Algunas características de las que carece C
 2Historia
o 2.1Desarrollo inicial
o 2.2El C de Kernighan y Ritchie
o 2.3ANSI C e ISO C
 2.3.1Palabras reservadas de ANSI-C
o 2.4C99
o 2.5C11
o 2.6C embebido
o 2.7C18
 3Lenguajes derivados de C
 4Proceso de compilación
o 4.1Ejemplo de código
 5Herramientas de programación
 6Aplicabilidad
o 6.1Aplicaciones embebidas
 7Bibliotecas C
 8Véase también
 9Referencias
 10Enlaces externos

Filosofía[editar]
Uno de los objetivos de diseño del lenguaje C es que solo sean necesarias unas
pocas instrucciones en lenguaje máquina para traducir cada elemento del
lenguaje, sin que haga falta un soporte intenso en tiempo de ejecución. Es muy
posible escribir C a bajo nivel de abstracción; 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 características, se pueden desarrollar compiladores de C fácilmente.
En consecuencia, el lenguaje C está disponible en un amplio abanico de
plataformas (más que cualquier otro lenguaje). Además, a pesar de su naturaleza
de bajo nivel, el lenguaje se desarrolló para incentivar la programación
independiente de la máquina. Un programa escrito cumpliendo los estándares e
intentando que sea portátil 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 programación de software de sistema, para la que se diseñó
originalmente.
Propiedades[editar]
 Núcleo del lenguaje simple, con funcionalidades añadidas importantes, como
funciones matemáticas y de gestión de archivos, proporcionadas
por bibliotecas.
 Es un lenguaje estructurado, i.e. tiene estructuras de control y tipos de datos
estructurados definidos por el programador a partir de los tipos atómicos
típicos y mediante arreglos, estructuras, uniones y punteros, incluidos los que
apuntan a una función.
 En su primera edición no había advertencias sobre asignar a una variable un
valor un tipo distinto. Por lo que había un programa llamado  lint  que
detectaba este tipo de errores. Actualmente los compiladores pueden detectar
inconsistencias de tipos y otros errores.
 Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como
definir macros e incluir múltiples archivos de código fuente.
 Acceso a memoria de bajo nivel mediante el uso de punteros.
 Manejo de Interrupciones mediante la biblioteca  signal .
 Un conjunto reducido de palabras clave.
 El llamado a funciones es por valor. Aunque se pueden pasar punteros a
variables para hacer llamados por referencia.
 Distintos tipos de almacenamiento que permiten un diseño modular.
 La palabra clave  static  permite encapsular variables y funciones.
 Las estructuras se declaran mediante la palabra clave  struct , implementan el
producto cartesiano de tipos también llamados registros. Y la unión disyunta,
también llamada suma, co-producto o tipos variantes, se declara con la palabra
clave  union .
 Las estructuras y uniones permiten la implementación de árboles.
 Lenguaje muy eficiente puesto que es posible utilizar sus características de
bajo nivel para realizar implementaciones óptimas.
 Se diseñó como un lenguaje de programación de sistemas portátil.
 Es muy poco lo que requiere uso de ensamblador, lo que permitió portar Unix y
otros sistemas operativos a distintos equipos.
 Distingue entre mayúsculas y minúsculas, pero conserva su portabilidad en
equipos que manejan caracteres de 6 bits, como las
computadoras Cyber de CDC que tenían una palabra de 60 bits, (10
caracteres), porque usan trigráficos para codificar símbolos especiales.
 Su compilador de C se ha portado a casi todos los sistemas conocidos. Porque
además de que no se requiere codificar en ensamblador, interactúa con los
lenguajes especializados YACC y LEX. también escritos en C como parte de
Unix.
 Facilita la programación modular gracias a que cuenta con distintos tipos de
almacenamiento de las variables y compilación separada. Además del macro
procesador integrado cpp, que permite declarar los encabezados de las
funciones y los tipos de datos en archivos con extensión h. En el caso de las
bibliotecas del sistema Unix y de C se necesita incluir los prototipos con la
macros  #include  por ejemplo  #include <system.h> . Ello únicamente sirve
para automatizar la declaración de objetos externos que se usarán en el
programa, por lo que es necesario pasar los nombres de las bibliotecas como
parámetros del compilador que este pasa al encadenador (linker loader).
Precauciones que se debe tener por ser un lenguaje de bajo
nivel[editar]
Los programadores novatos deben tener cuidado con la gestión de la memoria; en
C el programador ha de reservar y liberar la memoria explícitamente. En otros
lenguajes (como C# o Java) la memoria es gestionada de forma transparente para
el programador. Esto alivia la carga de trabajo y evita errores, pero le quita
flexibilidad al lenguaje para escribir controladores del hardware.
Por esta razón es muy importante que los recién iniciados adopten buenas
prácticas a la hora de escribir en C y manejar la memoria, como por ejemplo un
uso intensivo de indentación y conocer a fondo todo lo que implica el manejo de
punteros y direcciones de memoria.
Algunas características de las que carece C[editar]
 Recolección 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 programación orientada a objetos, aunque la implementación
original de C++ fue un preprocesador que traducía código fuente de C++ a C.
Véase también la librería GObject.
 Funciones anidadas, aunque GCC tiene esta característica como extensión.
 Soporte nativo para programación multihilo. Disponible usando librerías
como libpthread.
Aunque la lista de las características útiles de las que carece C es larga, este
factor ha sido importante para su aceptación, porque escribir rápidamente
nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el
programa bajo el control directo del programador, y permite implementar la
solución más natural para cada plataforma. Esta es la causa de que a menudo C
sea más eficiente que otros lenguajes. Típicamente, solo la programación
cuidadosa en lenguaje ensamblador produce un código más rápido, pues da
control total sobre la máquina, aunque los avances en los compiladores de C y la
complejidad creciente de los microprocesadores modernos han reducido
gradualmente esta diferencia.
El lenguaje se puede extender mediante bibliotecas y macros. Por ejemplo, la
implementación original de C++ consistía en un preprocesador que traducía
código fuente C++ a C.

Historia[editar]
Desarrollo inicial[editar]

Dennis Ritchie (derecha), el inventor del lenguaje de programación C, con Ken Thompson

El desarrollo inicial de C se llevó a cabo en los Laboratorios Bell de AT&T entre


1969 y 1973; según Dennis Ritchie, el periodo más creativo tuvo lugar en 1972. 1
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, Ken Thompson y Dennis 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, fue
reescrita en C.1 Este 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).
El C de Kernighan y Ritchie

También podría gustarte