Lenguaje de programación C
Keywords: Lenguaje de programación C, 1969, 1986, ANSI C, B, BCPL, Bjarne Stroustrup
C es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell basándose en los lenguajes BCPL y B. Al igual que sus dos predecesores, es un lenguaje orientado a la implementación de Sistemas Operativos (los sistemas operativos Linux y UNIX están escritos mayormente en C), pero se ha convertido en un lenguaje de propósito general de los más usados.
Se trata de un lenguaje no fuertemente tipado de medio nivel pero con muchas características de bajo nivel. 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 muy bajo nivel. Un ejemplo es la posibilidad de mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos. Destaca su gran riqueza de operadores y expresiones.
Existe un estándar ISO de 1986 denominado ANSI C. En teoría, un lenguaje 100% ANSI C sería portable entre plataformas y/o arquitecturas pero en la práctica esto no es siempre cierto.
| Tabla de contenidos |
Ventajas e inconvenientes
- Ventajas:
- Es un lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para realizar implementaciones óptimas.
- A pesar de su bajo nivel es portable siempre que en el sistema final exista el compilador apropiado (con algunas restricciones).
- Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado no llevado al extremo (permitiendo ciertas licencias rupturistas).
- Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas existentes.
- Inconvenientes:
- Su flexibilidad y/o la optimización excesiva puede generar programas poco legibles y mantenibles.
- Algunas de sus posibilidades mal empleadas pueden inducir errores o bugs difíciles de detectar y corregir.
- Se trata de un lenguaje complejo y complicado de aprender. Su núcleo nativo es muy reducido (únicamente expresiones, sentencias condicionales y bucles) mientras que la mayor parte de la funcionalidad se proporciona con bibliotecas externas (la mayor parte bibliotecas estándar y las bibliotecas de la API del sistema).
Variantes
Desde su aparición el lenguaje han surgido varias ramas de evolución que han generado varios nuevos lenguajes:
- Objective-C es un primer intento de proporcionar soporte para la programación orientada a objetos en C, de escasa difusión, pero actualmente usado en Mac OS X y GNUstep.
- C++ diseñado por Bjarne Stroustrup fue el segundo intento de proporcionar orientación a objetos a C y es la variante más difundida y aceptada. Esta versión combina la flexibilidad y el acceso de bajo nivel de C con las características de la programación orientada a objetos como abstraccion, encapsulación y ocultación.
- C# (pronunciado C Sharp en inglés y C almohadilla en castellano, aunque se suele usar la pronunciación inglesa) es un lenguaje derivado de C/C++ y Java desarrollado por Microsoft.
Proceso de compilación
La compilación de un programa C se realiza en varias fases que normalmente son automatizadas y ocultadas por los entornos de desarrollo:
- Preprocesado consistente en modificar el código fuente en C según una serie de instrucciones (denominadas directivas de preprocesado) simplificando de esta forma el trabajo del compilador. Por ejemplo, una de las acciones más importantes es la modificación de las inclusiones (
#include) por las declaraciones reales existentes en el fichero indicado. - Compilación que genera el código objeto a partir del código ya preprocesado.
- Enlazado que une los códigos objeto de los distintos módulos y bibliotecas externas (como las bibliotecas del sistema) para generar el programa ejecutable final.
Ejemplo de Código C
Sigue el clásico ejemplo "Hola Mundo!" en C:
#include <stdio.h> /* Entrada / salida estándar */
int main(int argc, char* argv[])
{
printf("¡Hola, Mundo!\n");
return 0; /* OK */
}
Enlaces externos
- REDIRECT Plantilla:Wikibooks
- C evolution: En inglés.
- REDIRECT Plantilla:Lenguajes de programaciónC
