Attenti, @zabi sta imparando a programmare, per cui va bene iniziare con un linguaggio di tipo procedurale.
Secondo me qui il problema è un altro, ossia volere imparare un linguaggio per fare cose per cui tale linguaggio non sia dedicato. Va bene imparare cosa sia l’allocazione dinamica della memoria e il relativo uso dei puntatori, ma andrebbe fatto con problemi semplici solo per capire come funzioni e imparare quali siano i problemi associati. Va bene per imparare cosa sia un memory leak e le tecniche per evitarlo, imparare per esempio come costruire una struct{} che implementi un Smart Pointer. Sono cose che si fanno all’università. Ma poi bisogna andare al di là del C, capire le limitazioni dei linguaggi procedurali e studiare altre tecniche di programmazione come per esempio OOP.
Insomma, uno potrebbe usare anche il C per costruire elaborate interfacce utente costruendo librerie che creano tutti gli widget che ci servono (per esempio un TextBox per editare un testo), ossia cose che si facevano quaranta anni fa. Adesso ovviamente non ha senso alcuno, o si usa una libreria dedicata (come per esempio Qt) o meglio un linguaggio fatto apposta per interfacce utente.
Ma per imparare a programmare è un altro discorso.
Secondo me qui il problema è un altro, ossia volere imparare un linguaggio per fare cose per cui tale linguaggio non sia dedicato. Va bene imparare cosa sia l’allocazione dinamica della memoria e il relativo uso dei puntatori, ma andrebbe fatto con problemi semplici solo per capire come funzioni e imparare quali siano i problemi associati. Va bene per imparare cosa sia un memory leak e le tecniche per evitarlo, imparare per esempio come costruire una struct{} che implementi un Smart Pointer. Sono cose che si fanno all’università. Ma poi bisogna andare al di là del C, capire le limitazioni dei linguaggi procedurali e studiare altre tecniche di programmazione come per esempio OOP.
Insomma, uno potrebbe usare anche il C per costruire elaborate interfacce utente costruendo librerie che creano tutti gli widget che ci servono (per esempio un TextBox per editare un testo), ossia cose che si facevano quaranta anni fa. Adesso ovviamente non ha senso alcuno, o si usa una libreria dedicata (come per esempio Qt) o meglio un linguaggio fatto apposta per interfacce utente.
Ma per imparare a programmare è un altro discorso.