La guerra sagrada: C vs C++

No fa massa llegia, a través de Linux Hispano, la notícia que s’ha autoritzat l’ús de C++ en el desenvolupament del gcc. Als comentaris a la notícia ja hi havia les primeres batusses d’una de les guerres sagrades del món informàtic: la guerra entre C i C++. Ja que d’altres han obert la veda, aprofito jo per disparar uns quants trets i dir la meva en tot aquest assumpte.

Els que em coneixen ja saben de la meva devoció envers el C. També és conegut que molts devots de C són acèrrims enemics de C++, i segurament també viceversa. En el meu cas no és així. No tinc (que jo sàpiga i en sigui conscient) cap mena de prejudici contra el C++. Entenc la majoria de les crítiques que se li fan (com també entenc algunes de les crítiques que es fan al C), però no per això em sembla que el C++ sigui un mal llenguatge.

Es veu que en Linus Torvalds (cal que digui qui és?) és un acèrrim enemic del C++, o almenys això sembla si ens fixem en alguns dels comentaris seus que es poden llegir en alguns fòrums (comentaris que, evidentment, han rebut la seva rèplica per part de fans del C++). Sincerament, em sembla una discussió molt estúpida.

Un llenguatge de programació és una eina. Però no és una eina qualsevol. Com diu en Paul Graham, si tu vols enviar dades a través d’una xarxa, no siguis burro i fes servir TCP/IP (la qual cosa no vol dir, necessàriament, emprar TCP, també pots emprar UDP o SCTP segons el cas, of course). Tant és emprar un mètode que un altre, per tant fes-ne servir un que sigui estàndar. En canvi, en els llenguatges de programació això no és cert.

Un llenguatge de programació és molt semblant a un llenguatge natural, a un idioma. No ens expressem de la mateixa manera amb un que amb un altre. Hi ha expressions que en un idioma són senzilles i naturals, i en canvi en d’altres no ho són. Un llenguatge de programació, d’alguna manera, reflecteix la manera de pensar del programador. A mi, personalment, m’agrada pensar a força baix nivell, i m’agrada fer les coses d’una manera bastant manual. Sóc força reaci a emprar llibreries ja fetes, més que res perquè em costa emprar-les si no les entenc a nivell d’implementació. Tot això fa que m’agradi i em senti còmode programant en C. Fixeu-vos en l’expressió que he usat: sentir-se còmode. En Paul Graham, per exemple, és un gran fan del Lisp (i dialectes). Tant és així que es dedica a dissenyar un nou dialecte del Lisp, anomenat Arc. Jo de Lisp en sé molt poc i hi he fet molt poca cosa, però de debò us asseguro que em suposaria un gran dolor haver d’aprendre’n i fer-lo servir per a treballar.

Des que feia segon curs que no he tornat a fer res més en C++. Per a la pràctica del Chess vam decidir-ho (el meu company i jo, s’entén) fer-ho en C. El meu Treball Final de Màster també he decidit fer-lo en C. Simplement perquè m’hi sento més còmode, i perquè valorant els pros i els contres vam (en el primer cas, vaig en el segon) decidir que era millor fer el Chess en C i el TFM en C. Segurament d’altres persones haurien escollit C++ i haurien aconseguit resultats equivalents.

C i C++ són llenguatges que tenen una base comuna, amb característiques similars. C++ disposa de classes, herència, polimorfisme, etc, que faciliten la programació orientada a objectes. Però al mateix temps reté la immensa majoria de les capacitats de C per a programar a baix nivell, proper a la màquina. A mi això no em sembla ni bé ni malament: simplement és. És a dir, el llenguatge t’ho posa a la teva disposició, i tu ets lliure d’agafar-ho o no. Per què posem tant l’èmfasi en el llenguatge, quan en realitat l’hauríem de posar en el programador?

4 thoughts on “La guerra sagrada: C vs C++

  1. Recordo certes proves amb cert algorisme on era palpable la brutal diferència de rendiment entre C i C++, clar que, en el segon cas, la gràcia era abusar del polimorfisme i dels mecanismes de l’herència per a disposar d’un entorn prou genèric.
    Només pel fet d’anar carregant objectes a memòria, tot i emprar una codificació basada en punters per a moure’s per la població, ja s’obté una baixada de rendiment considerable.

    • Doncs jo el PFC/TFM el faig en Java XDDD

      Sota el meu punt de vista, baralles sense sentit que no porten enlloc. A l’hora de desenvolupar s’ha de triar el llenguatge òptim per a aquella aplicació. Si hi ha diverses opcions, triaria aquell amb el qual em sentís més còmode en un entorn empresarial, o aquell que volgués acabar de dominar en un entorn acadèmic (com és el meu cas).

      Per cert, Disimulo, que facis analogies (com deia el Dr. Dalmau) amb recursos telemàtics, em preocupa! Masses hores de CCNA!

      • As a matter of fact, l’analogia telemàtica ja venia feta en un article del Paul Graham… però segurament sí, massa hores de CCNA😀

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s