En el món del desenvolupament de programari, poques experiències ensenyen tant com construir alguna cosa des de zero, sense dependre de biblioteques modernes ni dreceres. Aquest és l'esperit darrere del meu darrer projecte: un terminal similar a Bash, però dissenyat completament a mà, utilitzant C++ primer i després migrant a C per obtenir el control absolut sobre la memòria i l'execució. Aquest devlog és el primer d'una sèrie on compartiré les decisions tècniques, els reptes i les lliçons apreses. I, com passa en qualsevol projecte ambiciós, aquest viatge em va portar a reflexionar sobre com empreses de tecnologia, com Q2BSTUDIO, apliquen principis similars en desenvolupar aplicacions a mida que requereixen rendiment, seguretat i escalabilitat.
Des del principi, el meu objectiu era allunyar-me de les comoditats de C++ i submergir-me en el món dels punters a caràcters, la gestió manual de memòria i les crides al sistema de baix nivell. Per què fer-ho de manera tan dràstica? Perquè volia entendre com funciona realment un ordinador, no només com usar una API. Això és una cosa que també valorem a Q2BSTUDIO quan treballem en projectes de ciberseguretat o cloud AWS/Azure, on cada byte compta i la integritat de les dades és crítica.
El primer gran repte va ser processar l'entrada de l'usuari. En lloc d'usar std::string, vaig optar per arrays de caràcters gestionats manualment. Això implicava assignar memòria dinàmicament, vigilar els límits i alliberar recursos per evitar fuites. Per organitzar el caos, vaig crear una estructura carr (char array) amb funcions per inicialitzar, expandir i eliminar. En C++ podia sobrecarregar operadors, però al migrar a C tot això va desaparèixer. Vaig haver de reescriure cada manipulació de cadenes, cosa que em va obligar a entendre a fons com es mouen les dades a la pila i al monticle.
Aquesta experiència em va recordar els projectes empresarials on, per optimitzar el rendiment d'una aplicació a mida, de vegades cal deixar de banda els frameworks i treballar directament amb el maquinari o les capes de sistema operatiu. A Q2BSTUDIO apliquem aquesta filosofia quan integrem agents IA en entorns amb restriccions de memòria, o quan configurem infraestructures al núvol que han d'escalar sense perdre eficiència.
Un altre aspecte interessant va ser la personalització de les comandes. En lloc de replicar exactament Bash, vaig inventar noms com 'here' per mostrar el directori actual i 'go' per navegar. Això no només va donar identitat al projecte, sinó que em va ensenyar a dissenyar interfícies pensant en l'experiència de l'usuari des de zero. Molt semblant al que fem a Q2BSTUDIO quan desenvolupem solucions de Business Intelligence amb Power BI: adaptem els informes i dashboards a les necessitats específiques del client, no al revés.
La migració de C++ a C va ser, sens dubte, el punt d'inflexió. A primera vista semblava senzill perquè ja havia escrit el codi amb un estil molt proper a C. Però l'absència de sobrecàrrega d'operadors i funcions membre em va obligar a redissenyar cada interacció amb les dades. Vaig aprendre a usar punters a funcions per simular polimorfisme, i a gestionar la memòria amb malloc i free a cada racó del programa. Aquesta disciplina és la mateixa que es necessita quan s'audita un sistema a la recerca de vulnerabilitats, un servei que oferim a l'àrea de ciberseguretat.
Al final, el projecte em va donar un control total sobre cada variable, cada adreça de memòria i cada cicle de CPU. Aquesta sensació de domini és la que busquem transmetre als nostres clients a Q2BSTUDIO: que el seu programari no només funcioni, sinó que estigui optimitzat, segur i preparat per al futur. Ja sigui implementant un agent IA per automatitzar processos, o desplegant una arquitectura a cloud AWS, els fonaments de baix nivell marquen la diferència.
Si estàs interessat a explorar el codi font, pots visitar el meu repositori a GitHub: github.com/SuleymanSade/MyTerminal. I si vols saber com apliquem aquestes tècniques en projectes empresarials, no dubtis a contactar Q2BSTUDIO per parlar de ciberseguretat, IA o cloud. Aquest devlog és només el començament; en les properes entregues aprofundiré en la interpretació de comandes, la gestió de processos i molt més.





