Llenguatge de programació C++: com es va convertir en la base invisible per a tot i què serà el següent

Bjarne Stroustrup: “L’evolució és necessària per afrontar els reptes d’un món canviant i per incorporar noves idees”.
Imatge: Acadèmia Nacional d’Enginyeria

Els orígens de C++ es remunten al 1979, quan Bjarne Stroustrup, el creador del llenguatge de programació, va començar a treballar per primera vegada en el llenguatge que llavors es coneixia com “C with Classes”. El llenguatge es va dissenyar inicialment com una millora del llenguatge de programació C que va afegir funcions basades en la programació orientada a objectes.

“L’èxit de C++ va ser, òbviament, una sorpresa”, diu Stroustrup a TechRepublic. “Veig l’èxit de C++ com a funció dels seus objectius de disseny originals (ús eficient del maquinari, més potents mecanismes d’abstracció) i la seva acurada evolució basada en la retroalimentació de l’ús del món real”. Ara l’idioma és un dels més populars entre els desenvolupadors i sustenta sistemes i serveis d’arreu del món.

EES: Llenguatge de programació C++: com es va convertir en la base de tot i què passa després (PDF gratuït) (República Tecnològica)

“Volia construir un sistema multiordinador amb un sistema de comunicació que pogués ser de memòria compartida o de xarxa”, explica Stroustrup.

“El meu enfocament era el programari. Necessitava escriure codi de baix nivell i proper al maquinari, com ara gestors de memòria, programadors de processos i controladors de dispositius per separar components de programari, de manera que es poguessin executar en ordinadors separats comunicant-se de maneres ben definides.

Cap llengua de l’època estava a l’alçada, així que Stroustrup es va comprometre a construir alguna cosa que fos. “C with Classes va combinar la capacitat de C de treballar a prop del maquinari amb una variant eficient de les classes de Simula per a l’abstracció i l’organització del codi”, diu.

Des de ben aviat, Stroustrup es va adonar que no tenia control dictatorial de la llengua. Mentre que els primers treballs en C++ van implicar només ell i un grapat de col·legues de Bell Labs, això va augmentar a diverses dotzenes quan van començar els esforços per estandarditzar el llenguatge.

EES: Coneix els pirates informàtics que guanyen milions per estalviar la web, un error a la vegada (portada en PDF) (República Tecnològica)

Avui, hi ha uns 400 membres al comitè d’estàndards de C++, a més d’una comunitat més àmplia d’usuaris que segueixen i intenten influir en la direcció de l’idioma.

Llavors, com es pot mantenir un llenguatge de programació coherent amb tant entusiasme? “Aquesta és una oportunitat i un gran problema”, diu Stroustrup.

“El més difícil és decidir què és important i mantenir la coherència. Un cop saps el que vols, finalment trobes una bona manera tècnica de fer-ho”.

VEURE: Python s’està menjant el món: com el projecte secundari d’un desenvolupador es va convertir en el llenguatge de programació més popular del planeta (TechRepublic)

Recordeu la Vasa

El 1998 va marcar l’any que C++ es va estandarditzar formalment i es va convertir en un sòlid cavall de batalla. En aquest punt, C++ era un dels llenguatges de programació més utilitzats al món, una posició que conserva fins als nostres dies.

No obstant això, va ser l’arribada de C++11 tretze anys més tard el que va establir les bases per a l’evolució futura del llenguatge, diu Stroustrup. “C++11 va fer que el C++ se sentis com un llenguatge nou”, diu.

“El suport segur de tipus per a la concurrència era essencial. C++11 va proporcionar una xarxa densa de funcions de suport mútuament com ara [constant expression] funcions per al càlcul en temps de compilació, lambdas, deducció automàtica de tipus i plantilles variàdiques.

Tot i que C++11 va introduir diverses característiques i capacitats noves que van fer que el llenguatge sigui més senzill, ràpid i expressiu, el llenguatge manté la seva reputació de ser difícil de dominar, un fet que el seu creador demostra fàcilment.

“C++ és realment complex i cal esforçar-se per aprendre a utilitzar-lo bé”, diu Stroustrup. “Desafortunadament, la gent no només vol simplicitat, sinó alguna cosa impossible: un llenguatge més senzill, amb més funcions i sense trencar el codi existent”.

La resposta de Stroustrup a aquest “trilema”, com ell l’anomena, és afegir funcions que “faciliten les coses senzilles de fer”, per exemple, mitjançant la generalització o el suport directe per a casos d’ús habituals, alhora que mantenen la compatibilitat i l’estabilitat.

És més fàcil dir-ho que fer-ho amb una bèstia tan gran com C++ o qualsevol llenguatge de programació important. Un dels majors reptes és arribar a un consens per decidir quines noves funcions s’han d’adoptar i ometre, explica Stroustrup, que en si mateix requereix molt de treball, discussió, temps i paciència.

EES: Els 5 principals llenguatges de programació perquè els administradors del sistema aprenguin (PDF gratuït) (República Tecnològica)

Tot i així, no es poden incorporar totes les bones característiques. “Has d’intentar afegir només allò que realment ajuda a la gent i després només algunes coses, perquè si acceptéssim totes les característiques que ajudessin algú, el llenguatge s’enfonsaria pel seu propi pes”, explica.

Stroustrup es refereix al Vasa, un gran cuirassat suec del segle XVII que es va enfonsar al port d’Estocolm en el seu viatge inaugural a causa del seu mal disseny.

“A la insistència del rei, la màxima direcció, i contra el millor criteri de la gent tècnica, s’havia amuntegat amb belles estàtues i grans canons. A dalt pesat, va ser bolcat per un gust de vent.

“Vaig parlar i escriure repetidament sobre el Vasa com a advertència a les persones que volen millorar C++ amb entusiasme afegint funcions: recordeu el Vasa! Fins ara, C++ no s’ha tombat”.

El seu secret per mantenir C++ a flota després de tots aquests anys? “Comenceu petit, articuleu principis fonamentals, articuleu ideals a llarg termini i desenvolupeu a partir de la retroalimentació de l’ús del món real”.

De fet, C++ segueix sent fort més de 35 anys després de la seva primera aparició a l’escena. El C++ actual és molt més potent i expressiu que el C++ inicial. No obstant això, el disseny original segueix sent visible, fins i tot avui dia.

“Hi ha programes senzills dels primers anys, fa 40 anys, que encara funcionarien avui”, diu Stroustrup.

“L’estabilitat és una característica important per a un llenguatge utilitzat per a sistemes que han de funcionar durant dècades. De fet, moltes de les primeres idees només van estar disponibles en C++20. Vaig saber des del principi que no podia construir el llenguatge ideal, així que vaig haver d’apuntar al desenvolupament gradual: l’evolució. De fet, no creia en la idea d’un llenguatge perfecte, perfecte per a què? Per aqui?”

Afegeix: “L’evolució és necessària per afrontar els reptes d’un món canviant i per incorporar noves idees”.

C++ a la pràctica

A partir del setembre de 2020, C++ és el quart llenguatge de programació més popular a nivell mundial darrere de C, Java i Python i, segons l’últim índex TIOBE, també és el de més ràpid creixement. C++ és un llenguatge de programació de propòsit general afavorit pels desenvolupadors per la seva potència i flexibilitat, cosa que el fa ideal per a sistemes operatius, navegadors web, motors de cerca (inclosos els de Google), jocs, aplicacions empresarials i molt més.

Stroustrup resumeix: “Si teniu un problema que requereix un ús eficient del maquinari i també per gestionar una complexitat important, C++ és un candidat evident. Si no tens les dues necessitats, servirà un llenguatge eficient de baix nivell o un llenguatge de malbaratament d’alt nivell”.

VEURE: Dissenyador C# Torgersen: Per què el llenguatge de programació encara és tan popular i cap a on anirà (TechRepublic)

No obstant això, fins i tot amb la seva popularitat generalitzada, Stroustrup assenyala que és difícil identificar exactament on s’utilitza C++ i per a què.

“Una primera estimació per a ambdues preguntes és ‘a tot arreu'”, diu.

“En qualsevol sistema gran, normalment trobareu C++ a les parts de nivell inferior i crítiques per al rendiment. Aquestes parts d’un sistema sovint no són vistes pels usuaris finals o fins i tot pels desenvolupadors d’altres parts del sistema, així que de vegades em refereixo a C++ com una base invisible de tot”.

També destaca la relativa poca fiabilitat de les enquestes de desenvolupadors a l’hora d’estimar la popularitat d’un llenguatge de programació determinat: “Comptar programadors és difícil i senzill. Les enquestes web normalment només mesuren el “soroll”; és a dir, del que es parla en lloc del que s’utilitza”.

El futur de C++

Avui, Stroustrup és membre tècnic de Morgan Stanley. El seu treball amb l’Organització Internacional per a l’Estandardització (ISO) per a l’estàndard C++ i sobre les directrius bàsiques de C++ es considera part del seu paper amb el gegant financer, i segueix molt implicat en el desenvolupament de C++.

En particular, Stroustrup forma part del grup de direcció, que presenta i discuteix recomanacions sobre el futur del llenguatge de programació. També segueix el grup d’evolució i participa en debats sobre noves característiques del llenguatge.

Tanmateix, quan es tracta de l’execució diària de C++, Stroustrup està encantat d’assumir més un paper de darrere. “Segueixo les activitats administratives però intento fer-hi el menys possible. No sóc un gran administrador”, admet.

Abans de la pandèmia, Stroustrup viatjava molt per ensenyar i per explicar C++ al món en general a través dels seus llibres, articles i entrevistes, tot i que, com a la resta del món, el 2020 ha posat fi a això temporalment.

EES: Ordres de Linux per a la gestió d’usuaris (TechRepublic Premium)

“Per al meu treball, depenc de manera crítica de parlar amb la gent per conèixer els seus problemes i escoltar com les meves idees els poden ajudar”, diu Stroustrup.

“En aquest temps de pandèmia, estic privat dels comentaris tan necessaris. Les xerrades i les entrevistes virtuals no són el mateix, i la dinàmica de les reunions de Zoom és inferior a les reunions presencials reals quan es tracta de discutir el disseny i les idees”.

La pandèmia de COVID-19 també ha obstaculitzat el progrés amb les dues properes iteracions del llenguatge, C++20 i C++23, tot i que Stroustrup afirma que “gairebé tot” el C++20 s’enviarà el 2020.

“Més enllà d’això, hi ha treball en Unicode, numèrics, desenvolupament de jocs i baixa latència, eines, IA i molt més”, diu.

“Enviem una funció (idioma i biblioteca) quan estigui a punt, i publiquem una norma revisada cada tres anys. C++14, C++17 i C++20 enviats a temps. Val la pena assenyalar que l’esforç dels estàndards i els principals implementadors estan molt sincronitzats.

“És crucial que C++ segueixi sent coherent i sigui una plataforma estable per al desenvolupament”.

Leave a Comment

Your email address will not be published. Required fields are marked *