Un breve articolo per che vuole iniziare a programmare con la speranza di poter aiutare qualcuno là fuori.
Frequento l'Università di Padova, in Italia, e studio Ingegneria Informatica. Adesso me la cavo piuttosto bene con la programmazione, anche se ho ancora un'infinità di cose da imparare (ovviamente!). Prima dell’università a malapena sapevo cosa fosse la programmazione. Il motivo per cui ho scelto un corso legato all’informatica è che amo i computer, volevo capire meglio come funzionano e desideravo imparare a programmare per poterli controllare.
Quindi… qual è stato il primo linguaggio di programmazione che ho studiato?
La risposta breve è: Java. È stato il primo linguaggio che ho davvero studiato, non il primo che ho provato a studiare. Mi spiego meglio.
Cerco lezioni di programmazione
Negli ultimi mesi delle superiori, quando ormai avevo già deciso cosa avrei voluto fare, ho deciso di avvicinarmi alla programmazione per farmi un’idea generale. Così, abbastanza a caso, ho provato con Python (tutti dicevano che era facile).
Ho fallito! Perché? Era troppo facile.
Cosa intendo dire? Python fa troppe cose automaticamente, quindi non capivo veramente cosa stessi facendo. Non coglievo il senso della programmazione. Sembrava magia. Scrivevo print("Hello World!")
e magicamente sullo schermo compariva “Hello World!”.
Ma… cos’è una funzione? Usavo le classi senza davvero capire cosa fossero.
Inoltre, in Python non devi specificare il tipo delle variabili, e per me era un problema. Non capivo cosa fossero i tipi!
Con Python non riuscivo a comprendere davvero molti aspetti dei computer e della programmazione, proprio perché è così semplice che fa troppe cose al posto tuo (inclusa la Garbage Collection).
Ho imparato molto di più su computer e programmazione quando ho iniziato a studiare Java.
Ecco perché ti sconsiglio di iniziare con Python.
Sarò breve in questo paragrafo, magari ne parlerò meglio in un altro articolo.
Ti dico solo questo: C++ è un linguaggio di programmazione molto interessante, ma non lo consiglio ai principianti. È più difficile da imparare rispetto a Java, bisogna gestire manualmente la memoria e i puntatori, ed è molto più facile incorrere in memory leak.
Grazie a C++ ho capito (finalmente!) cosa fosse davvero la Garbage Collection. Python e Java la gestiscono automaticamente, ma in C++ devi farlo tu. Quando ho dovuto gestire la memoria a mano, ho finalmente capito cosa significhi.
Quelli che ho elencato non sono difetti di C++, ma pregi. Semplicemente, non è il linguaggio giusto per iniziare: è troppo complesso all'inizio.
P.S. Esistono modi per usare una Garbage Collection automatica anche in C++, ma se non lo sai, non ne trarrai beneficio. Devi implementarla e usarla consapevolmente. Possiamo quindi dire che C++ non la include di default.
Ecco i miei consigli:
Inizia con un linguaggio orientato agli oggetti. Java lo è. Se capisci le classi e i concetti dietro di esse, hai scalato la montagna più alta. Per me, all’inizio, le classi erano davvero difficili da comprendere.
Inizia con un linguaggio che gestisca automaticamente la memoria (Garbage Collection). Java lo fa.
È importante che il linguaggio ti chieda di specificare il tipo delle variabili.
Es. in Java: int num = 3;
- “int” è il tipo.
Perché? Perché così capisci che non tutte le variabili sono uguali. Variabili diverse si gestiscono in modi diversi, si salvano in memoria in modi diversi. E richiedono un numero diverso di byte.
La sintassi di Java è considerata piuttosto complessa, ma non è estremamente difficile da imparare. Se impari a gestirla, le sintassi degli altri linguaggi ti sembreranno più semplici. (Non sempre, ovviamente. La sintassi di Go ad esempio mi sembrava complicata anche dopo aver studiato Java e C++).
Vedo Java come un linguaggio che si pone a metà tra Python e C++, ed è proprio per questo che ti ho parlato anche di loro.
Python è così semplice da risultare confuso per chi inizia, C++ è così complesso da farti capire poco o nulla. Java non è semplicissimo, ma puoi farcela con impegno. Ti insegna alcune delle cose fondamentali che dovresti sapere su computer e programmazione.
Infine ti consiglio due cose:
Dopo aver imparato le basi, studia e implementa alcune Strutture Dati Astratte (ADT). Mi ha aiutato a capire ancora meglio i concetti di Java.
Leggi molto sulla programmazione (es. io ho letto il libro “Programming: Principles and Practice Using C++” di Bjarne Stroustrup, il creatore del C++) e leggi molto codice scritto da altri.
Grazie per aver letto il mio articolo.