¿Por que usar C cuando ya tenemos JavaScript?
La industria del software es una de las que más rápido evoluciona, si no es que la que más lo hace. En menos de un siglo hemos pasado de computadoras que pesaban toneladas a dispositivos que caben en nuestros bolsillos y son más poderosos que las que nos llevaron a la Luna.
Esta evolución también se ha visto reflejada en el software, donde hemos pasado de escribir lenguaje ensamblador a usar lenguajes que nos permiten enfocarnos en nuestra lógica de negocio y no tanto en detalles de implementación.
La Velocidad de Desarrollo
En una industria que se mueve tan rápido, las empresas buscan maneras de llegar a sus resultados lo antes posible, validar ideas de negocio y obtener feedback del usuario cuanto antes. Por eso mismo, lenguajes como JavaScript y Python son de los más populares hoy en día: son los que mejor se adaptan a estas necesidades.
En palabras de Joel Spolsky, cofundador de Stack Overflow:
“Toda aplicación que pueda ser escrita en JavaScript, será escrita en JavaScript.”
Y, en cierta medida, eso es cierto. Muchas de las aplicaciones modernas que usamos como Spotify, Slack, entre otras, están escritas en JavaScript por la gran demanda de producir resultados rápidamente. Y hasta ahora, parece que ha funcionado.
La popularidad de estos lenguajes sigue subiendo (todavia mas con el auge de la inteligencia artificial) e incluso empresas pequeñas como startups tecnológicas prefieren lenguajes interpretados sobre los compilados y de bajo nivel.
¿Dónde Queda C?
Entonces, ¿cuál es la necesidad de usar lenguajes de bajo nivel como C, cuando las necesidades actuales exigen lenguajes como JavaScript? Claro, obviamente son necesarios para hacer funcionar los runtimes de los lenguajes de alto nivel. Pero, ¿qué valor añaden más allá de eso?
¿Cuál sería el beneficio de usar directamente C para crear una interfaz de usuario en vez de hacerlo con JavaScript y Electron o React Native?
El problema es que priorizar la velocidad de desarrollo sobre la experiencia de usuario sí tiene un costo. Sin embargo, no todas las empresas ni desarrolladores se preocupan por este detalle.
En el área de herramientas de desarrollo, muchos ya empiezan a notar este problema: usar JavaScript para compiladores, formateadores y linters simplemente ofrece una experiencia de usuario mediocre.
Por eso, desde hace unos años, se han adoptado lenguajes de más bajo nivel, como Rust, Go y Zig, para crear alternativas más eficientes. El hecho de que estas alternativas sean tan populares hoy en día es una prueba de que a la gente le importa la experiencia de usuario. Y el rendimiento es parte de esa experiencia.
En este contexto, los lenguajes de bajo nivel son una alternativa que demuestra que con simples bloques de construcción puedes crear software bastante sólido, eficiente y mantenible, aunque la dificultad pueda ser mayor.
Pero, como vimos antes, este costo adicional en el desarrollo funciona más como una inversión que como un gasto innecesario.
Sin embargo, la realidad es que ninguna empresa o desarrollador le dará importancia a esto a menos que le esté costando dinero. Así que, para bien o para mal, si no tienes la motivación moral o económica de mejorar la experiencia de usuario de tu software, simplemente no lo harás.
El Verdadero Valor de los Lenguajes de Bajo Nivel
Pero hay otro beneficio de los lenguajes de bajo nivel que, en mi opinión, es el más importante: son la mejor manera de entender cómo funciona el software a profundidad y cómo interactúa con el hardware.
El manejo de memoria, los punteros, las llamadas de sistema… todo eso es normal cuando desarrollas con lenguajes de bajo nivel, sin casi nada de abstracción más que la que te da el sistema operativo y el propio lenguaje.
No es nada fácil desarrollar de esta manera, pero es la mejor forma de aprender: no solo cómo funciona el software, sino a ser independiente. A que te las puedas arreglar únicamente con la standard library de tu lenguaje o incluso sin ella.
Conclusión
Estas habilidades son esenciales si quieres destacar del promedio y ofrecer productos y experiencias que nadie más ofrece. Porque no importa qué tan creativo seas o qué tan innovadoras sean tus ideas: si no tienes el conocimiento para materializar esa creatividad, todo queda en teoría.
Y los lenguajes de bajo nivel son las herramientas que más libertad nos dan para llevar a cabo todo lo que imaginamos en el mundo del software.
Esa, para mí, es la razón por la que yo usaría C, incluso cuando ya tenemos JavaScript.
Un saludo y gracias por leer.