Casi me olvido de escribir el día de hoy. Esta pequeña nota es sobre el lenguaje de programación C.
Al igual que mi articulo sobre Godot – Día 6, no tengo nada malo que decir de C. Es un lenguaje de programacion que es vital para toda la programacion de bajo nivel y de aplicaciones vitales o criticas.
Unos de los mejores representativos de C son Linux y Git, la mayor parte del código de ambos están escrito en C, y lo van a seguir siendo por el futuro predecible (Y si no saben todo el drama de Rust en el nucleo de Linux investiguen).
¿Que tiene de especial C? Es el lenguaje mas popular de alto nivel, en base a su sintaxis, para hacer trabajo moderno que consideramos de bajo nivel, es decir manejo de memoria, construir motores, construir sistemas operativos, construir manejadores (drivers) de dispositivos.
C es un lenguaje en el que se puede entender el funcionamiento del computador, los tipos de datos, la memoria, las limitaciones físicas de los equipos y periféricos.
¿Cuales son los retos de C? Como ha existido hace mucho tiempo, C tiene los problemas de distribucion logistica.
- Sus compiladores: Hay una gran cantidad de compiladores de C, todos funcionan bajo un estandar, pero con colecciones diferentes. El mas popular https://gcc.gnu.org/ es la coleccion de compiladores de C, distribuida por GNU.
- Los HEADERS: Los archivos Headers son dificiles de entender y gestionar, pero facilitan la distribucion de modulos.
- Para la programacion moderna, la ausencia de un manejador de paquetes. Si bien hay algunos distribuidores que pueden compartir librerias de C, por ejemplo los manejadores de paquetes de linux, Apt, Pacman, etc. No hay un componente como NodeJS, o NuGet
- El manejo de memoria. En C se pueden crear muchos problemas y errores, por el uso descontrolado de memoria. Lo cual fuerza a crear sub procesos, o procesos humanos, para delimitar como se utiliza la memoria en formas que hagan sentido. Estos procesos pueden ser la pesadilla de muchas personas.
- El alto estigma. Es dificil trabajar en bases de codigo de C, porque cada lider de proyecto y cada proyecto tiene su propia cultura por detras. Por ejemplo es casi imposible de buenas a primeras, subscribirse a la lista de correos de Linux, y generar una revision o mejora. Se requiere de una gran curva de adaptación y lobby social.
¿Pero deberia aprender C? Si. Si no sabes, aprende, como programador saber C muy similar a comunicarte con el computador directamente. Lo cual te da muchas herramientas a aplicar en cualquier otro lenguaje de programacion.