C es un lenguaje de programación creado en 1972 por Dennis Ritchie para los Laboratorios Bell. Es apreciado por la eficiencia del código que produce y es popular para crear software de sistemas y aplicaciones. Se trata de un lenguaje débilmente tipificado de medio nivel pero con características de bajo nivel que permiten control a bajo nivel.
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
Lenguaje De ProgramacióN C
1. Lenguaje de Programación C.
C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en
los Laboratorios Bell como evolución del anterior es decir el lenguaje B, a su
vez basado en BCPL.
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
software de sistemas, aunque también se utiliza para crear aplicaciones.
Se trata de un lenguaje débilmente tipificado 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. 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 portátil
entre plataformas y/o arquitecturas. En la práctica, los programadores
suelen usar elementos no-portátiles dependientes del compilador o del
sistema operativo.
Aplicaciones.
Hecho principalmente para la fluidez de programación en sistemas UNIX.
Se usa también para el desarrollo de otros sistemas operativos como
Windows o Linux. Igualmente para aplicaciones de escritorio como
OpenOffice.org, cuyo principal lenguaje de programación es C.
De la misma forma, es muy usado en aplicaciones científicas (para
experimentos informáticos, físicos, químicos, matemáticos, entre otros,
parte de ellos conocidos como modelos y simuladores), industriales
2. (industria robótica, cibernética, sistemas de información y base de datos
para la industria petrolera y petroquímica.
Predominan también todo lo que se refiere a simulación de máquinas de
manufactura), simulaciones de vuelo (es la más delicada, ya que se tienen
que usar demasiados recursos tanto de hardware como de software para
desarrollar aplicaciones que permitan simular el vuelo real de una aeronave.
Se aplica por tanto, en diversas áreas desconocidas por gran parte de los
usuarios noveles.
Los ordenadores de finales de los 90 son varios órdenes de magnitud más
potentes que las máquinas en que C se desarrolló originalmente. Programas
escritos en lenguajes de tipo dinámico y fácil codificación (Ruby, Python,
Perl...) que antaño hubieran resultado demasiado lentos, son lo bastante
rápidos como para desplazar en uso a C. Aun así, se puede seguir
encontrando código C en grandes desarrollos de animaciones, modelados y
escenas en 3D en películas y otras aplicaciones multimedia.
Actualmente, los grandes proyectos de software se dividen en partes,
dentro de un equipo de desarrollo. Aquellas partes que son más
"burocráticas" o "de gestión" con los recursos del sistema, se suelen
realizar en lenguajes de tipo dinámico o de guión (script), mientras que
aquellas partes "críticas", por su necesidad de rapidez de ejecución, se
realizan en un lenguaje de tipo compilado, como C o C++. Si, después de
hacer la división, las partes críticas no superan un cierto porcentaje del
total (aproximadamente el 10%) entonces todo el desarrollo se realiza con
lenguajes dinámicos. Si la parte crítica no llega a cumplir las expectativas
del proyecto, se comparan las alternativas de una inversión en nuevo
hardware frente a invertir en el coste de un programador para que
reescriba dicha parte crítica.
Aplicaciones embebidas
C es el lenguaje común para programar sistemas embebidos. El código ligero
que un compilador C genera, combinado con la capacidad de acceso capas del
software cercanas al hardware son la causa de su popularidad en estas
aplicaciones.
Un característica donde C demuestra comodidad de uso particularmente
valiosa en sistemas embebidos es la manipulación de bits. Los sistemas
contienen registros mapeados en memoria (en inglés, MMR) a través de los
cuales los periféricos se configuran. Estos registros mezclan varias
configuraciones en la misma dirección de memoria, aunque en bits distintos.
Con C es posible modificar fácilmente uno de estos bits sin alterar el resto.
3. Por ejemplo:
int *mmr; /* puntero al registro que queremos modificar */
mmr = 0x40008ABC; /* dirección de memoria del registro */
* mmr |= 1<<7; /* pone a 1 el bit 7 sin modificar los demás */
* mmr &= ~(1<<12) /* pone a 0 el bit 12 sin modificar los demás */
Este tipo de manipulación es muy tediosa o sencillamente imposible en otros
lenguajes de alto nivel.
Otras características de C consideradas desventajas en la programación
para PC -como la ausencia de control de memoria automático- se convierten
en ventajas cuando los sistemas embebidos necesitan código pequeño y
optimizado. Ese es el caso de los sistemas basados en microcontroladores
de poca potencia como el intel 8051 o muchos sistemas ARM.
Códigos.
La compilación de un programa C se realiza en varias fases que normalmente
son automatizadas y ocultadas por los entornos de desarrollo:
1. 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
archivo indicado.
2. Compilación que genera el código objeto a partir del código ya
preprocesado.
3. 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
El siguiente programa imprime en pantalla la frase "Hola Mundo" (C99).
# include <stdio.h> // necesario para utilizar printf()
4. int main(void)
{
printf("Hola Mundon");
// return 0 implícito en C99 para main().
}
El siguiente escribe "Hola Mundo" en C89
/* comentarios con '//' no permitidos en C89, sí en C99 */
# include <stdio.h> /* necesario para utilizar printf */
main() /* tipo 'int' de retorno implícito */
{
printf ("Hola Mundon") ;
return 0;
}
Programas.
Ejemplos.
Vala, C#, Objective-C, C++, AWK, bc, Java