C++ es un lenguaje de programación de propósito general que combina abstracciones de alto nivel con un control preciso sobre el hardware y la memoria. Creado por Bjarne Stroustrup como una extensión de C, el lenguaje ha evolucionado hasta convertirse en uno de los pilares fundamentales del desarrollo de software de alto rendimiento.
C++ se utiliza en una enorme variedad de dominios: sistemas operativos, motores de videojuegos, bases de datos, sistemas embebidos, compiladores, navegadores web, simulaciones científicas y aplicaciones de trading de alta frecuencia. Los estándares modernos C++20 y C++23 han incorporado características prácticas como std::expected para manejo de errores sin excepciones, std::print y std::println para E/S formateada tipo Python, std::mdspan para vistas multidimensionales de memoria, módulos que sustituyen a los cabezales #include, rangos (std::ranges) componibles con pipe y conceptos para restringir plantillas de forma legible.
Este itinerario recorre C++ de principio a fin: desde los fundamentos de sintaxis y compilación hasta las características más avanzadas del estándar moderno, pasando por gestión de memoria con smart pointers y RAII, programación orientada a objetos, templates, STL, concurrencia y buenas prácticas de desarrollo profesional.
Qué incluye este itinerario
- Introducción y entorno: historia del lenguaje, compiladores modernos (GCC 14, Clang 18+, MSVC 2022+), IDEs y proceso de compilación.
- Sintaxis fundamental: variables, tipos, operadores, control de flujo, funciones y E/S con
std::print/std::println(C++23) además de los streams clásicos. - Punteros y memoria: punteros, memoria dinámica, smart pointers (
unique_ptr,shared_ptr,weak_ptr) y RAII como patrón base de gestión de recursos. - Programación orientada a objetos: clases, herencia, polimorfismo, funciones virtuales, sobrecarga de operadores y move semantics.
- Templates y STL: plantillas de función y clase, contenedores (
vector,map,set), iteradores y algoritmos estándar. - C++ moderno:
std::optional,std::variant,std::filesystem, ranges, concepts, coroutines y módulos (C++20),std::expected,std::print,std::mdspanystd::flat_map(C++23). - Concurrencia:
std::thread,std::jthread, mutex, condition variables,std::async,std::future, atomics y memory ordering. - Buenas prácticas: manejo de errores con excepciones y
std::expected, testing con Google Test, CMake moderno (3.28+ conCMakePresets.json) y herramientas de análisis (sanitizers, clang-tidy, clang-format).
Público objetivo
- Desarrolladores que quieren aprender un lenguaje de alto rendimiento con control directo sobre la memoria y el hardware.
- Programadores de otros lenguajes (Java, C#, Python) que necesitan C++ para proyectos de sistemas, videojuegos o computación de alto rendimiento.
- Estudiantes de ingeniería informática que buscan dominar los fundamentos de la programación a bajo nivel.
- Profesionales que trabajan con código C++ heredado y quieren actualizar sus conocimientos al estándar moderno.
Prerrequisitos: conocimientos básicos de programación (variables, funciones, condicionales). No es necesario conocer C, aunque resulta útil.