¡C++ es aún un lenguaje muy popular!
Stack Overflow Developer Survey 2023.
Lo utilizamos en cursos:
- Lenguaje de programación.
- Programación avanzada.
- Arquitectura de computadoras.
- Computación paralela.
- Robótica médica.
Y también en la vida real!
Java, Spirit, Windows 11, Dota, Google Chrome.
Además, es bastante rápido.
Primero meditemos sobre assembly:
- Instrucciones increíblemente simples (sumar, restar, mover bits).
- Un buen código en assembly es extremadamente veloz.
- Control total sobre nuestros programas.
section .text
global _start ; debe ser declarado para el linker (ld)
_start: ; indica el punto de entrada al linker
mov edx,len ; longitud del mensaje
mov ecx,msg ; mensaje a escribir
mov ebx,1 ; descriptor de archivo (stdout)
mov eax,4 ; número de system call (sys_write)
int 0x80 ; llamar al kernel
mov eax,1 ; número de system call (sys_exit)
int 0x80 ; llamar al kernel
section .data
msg db 'Hola, mundo!',0xa ; nuestra querida cadena
len equ $ - msg ; longitud de nuestra querida cadena
¿Por qué no usamos siempre assembly?
- Requerimos mucho código para implementar tareas simples.
- Difícil de entender el código de otras personas.
- Poco portátil pues está amarrado a la arquitectura del computador.
Desarrollar con assembly era muy difícil pero las computadoras solo entendían assembly.
Nuestros ancestros se hicieron la siguiente lluvia de ideas:
- El código fuente puede ser escrito en un lenguaje más intuitivo.
- Un programa adicional puede convertir este código fuente en assembly.
¡A ese programa adicional le llamamos compilador!
Un compilador es un programa que toma código y construye un programa que podemos correr. Si la compilación es exitosa, el programa puede ser ejecutado.
Ken Thompson y Dennis Ritchie crearon C en 1972.
KT y DR, creadores del lenguaje C.
Ken Thompson también es co-diseñador de Go desde el 2007, un lenguaje simple, veloz y divertido para desarrollo back-end y se ha convertido en una tendencia durante los últimos años.
C hizo fácil escribir código que sea
- Rápido.
- Simple.
- Multiplataforma.
Su simplicidad lo hizo muy popular, la cual también era su debilidad:
- No existían objetos ni clases.
- Difícil de escribir código que funcione genéricamente.
- Tedioso al escribir programas largos.
En 1983, Bjarne Stroustrup creó C++. Nada mejor que escuchar al creador explicar el porqué de su creación en la siguiente entrevista:
Bjarne Stroustrup: Why I Created C++.
Él quería un lenguaje que cumpla con lo siguiente:
- Rápido.
- Simple.
- Multiplatafotma.
- Que tenga características de alto nivel.
Su filosofía era la siguiente:
- Solo añadir características si resuelven un problema real.
- Los programadores deben ser libres de elegir su propio estilo.
- Permitir al programador control absoluto si lo desea.
- No sacrificar el rendimiento excepto como último recurso.
- Imponer seguridad en tiempo de compilación siempre que sea posible.
Definamos los siguientes términos:
- Sintaxis: las reglas para construir sentencias gramaticales en un lenguaje.
- Semántica: Significado.
Estas definiciones son independientes de referirse a un lenguaje humano o un lenguaje de programación.
Consideremos el siguiente ejemplo:
Amortajadas las pupilas, traza su aullido pastoral un perro.
Hay muchas cosas ocurriendo en esta oración, sintácticamente hablando. La puntuación al final de la oración es parte de la sintaxis, al igual que la coma. La oración comienza con un complemento adverbial ("Amortajadas las pupilas"). El verbo de la oración es "traza", el cual indica la acción realizada por el sujeto ("un perro"). El complemento directo del verbo es "su aullido pastoral". Es una oración gramaticalmente correcta.
La semántica de la oración está relacionada con una metáfora explosiva y religiosa. Las yuxtaposiciones inflaman las diferencias entre impulsos religiosos y naturalistas. Por ejemplo, "aullido pastoral" combina lo simple e idílico de "pastoral" con lo violento y desesperado de "aullido". Un poema como este no se construye sobre una comprensión preconcebida de la realidad. Al contrario, está desagarrado por gestos brutales de hiperrealidad.
¿Por qué esto es relevante?
Conforme descubramos todo lo que podemos hacer con C++, iremos aprendiendo la sintaxis que tenemos que seguir (i.e. cómo escribir las líneas de código que el compilador digerirá) y la semántica asociada (i.e. qué hace o significa dicha sintaxis).