In questi giorni nel poco tempo libero sto cercando di sistemare i problemi del comment center e di aggiungere qualche nuova funzionalità.
Nell’ultimo anno ho scritto sempre meno software in PHP e si è visto anche dagli aggiornamenti per i miei plugin di Flatpress. Mi sono invece dedicato molto al game programming in C++ più qualche lavoretto in C.
Ciò ha fatto molto bene alle mie facoltà da programmatore (o se non posso essere definito così almeno lasciatemi la libertà di chiamarmi almeno «scrittore di codice» 😌 ).
C e C++ sono linguaggi compilati e fino a poco più di un anno fa ero stato a contatto prettamente con linguaggi interpretati o linguaggi di scripting.
La cosa in cui avevo avuto più problemi era la gestione della memoria, infatti negli script è gestita automaticamente. C++ mi ha insegnato a pensare se veramente serve una variabile oppure no, mi ha insegnato la tipizzazione e l’uso della memoria dinamica. Adesso le apprezzo molto, nonostante i problemi iniziali.
Tuttavia non è stata questa la cosa più utile. Ciò che più si impara con un linguaggio come C++ è che non ci si può permettere di fare un codice disordinato.
All’inizio avrei voluto fare rapporti di interdipendenza (per esempio che A chiamasse certi metodi di B e B certi altri di A) tra le classi, impossibile con una maniera semplice. Tuttavia questa, che agli occhi di uno che ha appena cominciato può sembrare una “disfunzione”, ha perfettamente senso: verrebbero a crearsi gravi ambiguità nel codice e soprattutto il programmatore non si concentrerebbe bene sulla gerarchia che vorrebbe dare alle sue classi.
Questa caratteristica manca in PHP. Da un lato è positiva, perché permette maggiore elasticità e velocità in certi casi, ma dall’altra fa di PHP un linguaggio che può rivelarsi pericoloso da usare non atto alla formazione di un programmatore.
Una volta presi i vizi infatti è difficile estirparli, al contrario le buone pratiche sono difficili da acquisire ma solitamente sono indipendenti dal linguaggio. Per esempio i buoni commenti, un codice modulare, la giusta divisione e gerarchizzazione sono ottime per tutti i linguaggi, secondo la mia personale e limitata esperienza.
Comunque è per questo è uno dei motivi per cui non sono più abituato a PHP: non è richiesta la massima precisione.
L’altro è lo scope di PHP.
Se da una parte l’enfatizzazione dell’uso delle variabili globali può portare a pensare al loro utilizzo, dall’altro la mancanza di uno scope di classe e la conseguente continua ripetizione di $this
rende il codice pesante.
Visto che alla fine nella classe spesso le variabili sono dichiarate in modo da conferire una certa visibilità bisognerebbe introdurre lo scope di classe anche in PHP. Lo troverei comodissimo.
Comunque, nonostante questi “problemi”, per me è solo l’abitudine, alla fine anni di PHP non si buttano via con un solo anno di C++.
Però se finora avete programmato solo con questo linguaggio, vi consiglio di provare anche dell’altro. Sicuramente vi farà bene.