# C y C++

> Dos lenguajes veteranos y rápidos debajo de sistemas operativos, navegadores y juegos.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/c-and-cpp/
- En inglés: [C and C++](https://tidbit.legios.com.ar/c-and-cpp/)

**C** es un lenguaje de programación que creó Dennis Ritchie en los Bell Labs a principios de los años 70 para escribir el sistema operativo Unix. **C++** vino después: Bjarne Stroustrup lo empezó en 1979 como "C con clases" y le sumó programación orientada a objetos y muchas otras cosas encima de C. Son lenguajes distintos, pero C++ puede usar código C directamente, así que suelen nombrarse juntos.

Los dos se compilan directo a código de máquina y le dan al programador control directo sobre la memoria: pedís un pedazo de memoria, lo usás y lo devolvés. Ese control es lo que los hace rápidos y lo que les permite correr donde casi nada más entra, desde microcontroladores hasta el kernel de Linux. El núcleo de Windows, macOS y Linux, navegadores como Chrome y Firefox, muchas bases de datos y la mayoría de los grandes motores de juegos están escritos en buena parte en C o C++.

El precio de ese control es el riesgo. Si te olvidás de devolver memoria, o leés más allá del final de una lista, el programa se puede colgar o, peor, abrir un agujero de seguridad. Una parte grande de los bugs de seguridad graves en proyectos grandes de C y C++ viene justamente de esos errores, y por eso lenguajes más nuevos como Rust buscan la misma velocidad con la seguridad de memoria incorporada. Igual, décadas de código que funciona hacen que C y C++ no se vayan a ningún lado.

## Una analogía

Un auto con caja manual y sin ayudas de manejo. Un experto le saca hasta la última gota de rendimiento; un segundo de distracción y nada te salva de calarte, o de algo peor.

## Para quedarse

- C es de principios de los 70; C++ se construyó encima a partir de 1979.
- Los dos se compilan a código de máquina y manejan la memoria a mano.
- Sistemas operativos, navegadores, bases de datos y motores de juegos están escritos en buena parte en ellos.
- El manejo manual de la memoria es la fuente principal de sus cuelgues y bugs de seguridad.

## Para seguir leyendo

- [C (lenguaje de programación) en Wikipedia](https://es.wikipedia.org/wiki/C_(lenguaje_de_programación))
- [C++ en Wikipedia](https://es.wikipedia.org/wiki/C%2B%2B)
- [Standard C++ Foundation (en inglés)](https://isocpp.org/)

## Términos relacionados

- [Lenguaje de programación](https://tidbit.legios.com.ar/es/programming-language/): Un idioma escrito y preciso que usamos para darle instrucciones a una computadora.
- [Sistema operativo](https://tidbit.legios.com.ar/es/operating-system/): El software base que maneja un dispositivo y reparte su hardware entre todas las apps.
- [Programación orientada a objetos](https://tidbit.legios.com.ar/es/object-oriented-programming/): Organizar el código en objetos que juntan datos con las acciones que los usan.
- [Microcontrolador](https://tidbit.legios.com.ar/es/microcontroller/): Una computadora diminuta y barata en un chip, hecha para controlar una cosa concreta.
- [Linux](https://tidbit.legios.com.ar/es/linux/): Un sistema operativo libre y de código abierto que mueve la mayoría de los servidores.
- [Navegador web](https://tidbit.legios.com.ar/es/web-browser/): La app que trae páginas web desde internet y las dibuja en tu pantalla.
- [Mozilla](https://tidbit.legios.com.ar/es/mozilla/): La organización sin fines de lucro detrás de Firefox y de una web abierta.
- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
