Mètodes

42 (I): libft, construint la caixa d'eines

El primer projecte de 42: reescriure funcions bàsiques de C sense llibreries. On s'aprèn de veritat què fa malloc.

42 (I): libft, construint la caixa d'eines

El primer que aprens a 42 és que no hi ha res preparat. Ni printf, ni strlen, ni cap llibreria: si ho necessites, te l’escrius. I la primera entrega del curs, libft, és justament això: reescriure una bona part de la llibreria estàndard de C des de zero. Un avís abans de començar: per norma de l’escola no comparteixo codi dels projectes, així que en aquesta sèrie explicaré el plantejament, els problemes i el que en vaig treure, mai la solució.

El problema

Sobre el paper, tornar a escriure funcions conegudes sembla feixuc però senzill. A la pràctica, és el projecte on més fonaments he après de cop. La llista demanada superava la cinquantena de funcions: memòria (memset, memcpy, calloc…), cadenes, conversió de caràcters i, com a part opcional, llistes enllaçades. Cada una amb els seus casos límit: cadenes buides, blocs que no quadren, mides que es passen del que demanes. I per damunt de tot, el veritable tema de fons: entendre malloc de debò, quan reserva, quan cal alliberar i què passa quan t’oblides.

Com el vaig abordar

Em vaig repartir la feina en tres blocs: primer les funcions de memòria i de cadenes més curtes, després les que construeixen coses noves (substr, split, strjoin, itoa), i al final el bonus amb les llistes enllaçades. Tot es compila en una llibreria estàtica amb un Makefile, i això també va ser aprenentatge: regles, dependències i un fclean que deixi tot net. A mesura que avançava provava cada funció amb un main de proves propi, perquè una funció que compila no és una funció que funcioni. El repositori, 42_libft, va quedar amb el codi a src/, la capçalera a include/ i el Makefile a l’arrel, i després el vaig integrar dins del repositori general del curs, 42_Cursus.

Què en vaig treure

Dues coses. La primera, que mai més miraré strlen amb els mateixos ulls: darrere de cada funció banal hi ha decisions sobre memòria i tipus que ara entenc. La segona, disciplina: la norma de l’escola obliga a un estil estricte i a gestionar tota la memòria sense fuites, i al principi sagna, però al cap d’un parell de setmanes ja ho fas sense pensar. libft no té res de glamurós: ningú veurà aquesta llibreria fora de classe. Però és la caixa d’eines amb què he escrit tot el que ha vingut després, i se’n nota la qualitat cada vegada que un projecte nou compila a la primera.