C es un lenguaje de programación de propósito general con sintaxis económica y control de flujo sencillo. Aunque no es de alto nivel, es potente y versátil debido a su simple núcleo y bibliotecas importantes. Si bien requiere gestión manual de memoria, es uno de los lenguajes más portables y se usa comúnmente para sistemas embebidos y aplicaciones que requieren eficiencia.
2. CONCEPTO DE LENGUAJE C
C es un lenguaje de programación de propósito
general que ofrece economía sintáctica, control
de flujo y estructuras sencillas y un buen
conjunto de operadores. No es un lenguaje de
muy alto nivel y más bien un lenguaje pequeño,
sencillo y no está especializado en ningún tipo
de aplicación. Esto lo hace un lenguaje potente,
con un campo de aplicación ilimitado y sobre
todo, se aprende rápidamente.
En poco tiempo, un programador
puede utilizar la totalidad del lenguaje.
3. PROPIEDADES
Un núcleo del lenguaje simple, con funcionalidades añadidas
importantes, como funciones matemáticas y de manejo de
archivos, proporcionadas por bibliotecas.
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 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 múltiples archivos
de código fuente.
Acceso a memoria de bajo nivel mediante el uso de punteros.
Interrupciones al procesador con uniones.
Un conjunto reducido de palabras clave.
4. Carencias
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.
Funciones anidadas, aunque GCC tiene esta
característica como extensión.
Soporte nativo para programación multihilo.
5. Ventajas
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 el lenguaje más
portado en existencia, habiendo
compiladores para casi todos los sistemas
conocidos.
Proporciona facilidades para realizar
programas modulares y/o utilizar código o
bibliotecas existentes.
6. Inconvenientes
El mayor problema que presenta el lenguaje C frente a los
lenguajes de tipo de dato dinámico es la gran diferencia en
velocidad de desarrollo: es más lento programar en C, sobre
todo para el principiante. La razón estriba en que el compilador
de C se limita a traducir código sin apenas añadir nada. La
gestión de la memoria es un ejemplo clásico: en C el
programador ha de reservar y liberar la memoria
explícitamente. 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 también supone mayor
carga de trabajo para el procesador.
El mantenimiento en algunos casos puede ser más difícil y
costoso que con ciertos lenguajes de más alto nivel. El código en
C se presta a sentencias cortas y enrevesadas de difícil
interpretación[cita requerida].
7. Variantes
Desde el inicio del lenguaje han surgido varias ramas de
evolución que han generado varios lenguajes:
Objective-C es un primer intento de proporcionar soporte
para la programación orientada a objetos en C, pero
actualmente usado en Mac OS X, iOS y GNUstep.
C++ (pronunciado C Plus Plus) 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 abstracción,
encapsulación y ocultación.
8. Herramientas
de Programación
Al programar en C, es habitual usar algunas herramientas de
programación de uso muy extendido, sobre todo en entorno de
tipo unix:
make: Herramienta para automatizar el proceso de compilación,
enlazado, etc.
lint: Herramienta utilizada para detectar código sospechoso,
confuso o incompatible entre distintas arquitecturas
valgrind: Herramienta utilizada para detectar posibles fugas de
memoria.
gdb : Debugger de GNU utilizado para seguir la ejecución del
programa.
dbx : Debugger que suele venir instalado con todos los UNIX.
ddd : Interfaz gráfico para el depurador gdb o dbx.
9. Aplicaciones Embebidas
C es el lenguaje común para programar
sistemas embebidos.[cita requerida] El código
ligero que un compilador C genera, combinado
con la capacidad de acceso a capas del software
cercanas al hardware son la causa de su
popularidad en estas aplicaciones.
Una 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.
10. Bibliotecas C
Una biblioteca de C es una colección de funciones
utilizadas en el lenguaje de programación C. Las
bibliotecas más comunes son la biblioteca estándar
de C y la biblioteca del estándar ANSI C, la cual
provee las especificaciones de los estándares que
son ampliamente compartidas entre bibliotecas.
La biblioteca ANSI C estándar, incluye funciones
para la entrada y salida de archivos, alojamiento
de memoria y operaciones con datos comunes:
funciones matemáticas, funciones de manejo de
cadenas de texto y funciones de hora y fecha.
11. CONCLUSIÓN
Es un lenguaje muy versátil aunque
tiene mucho tiempo de haber sido
creado su economía sintáctica lo hacen
de mucha ventaja para los
programadores así como también su
periodo de aprendizaje.