Thinking Functionally
Scrivo qui una cosa trita e ritrita, di cui ho già parlato in altri post e che è, obiettivamente, un argomento piuttosto caldo in questo momento.
Lato A della cassetta: C# 3.0, introduzione di paradigmi funzionali ad un linguaggio imperativo.
Lato B: F#, un linguaggio funzionale estremamente "spurio" che abbraccia la tecnologia .NET (vi si fonda, più che altro).
Due mondi estremamente distanti, due vie opposte per colmare il divario, dai due estremi.
Osservare l'evoluzione di questi linguaggi è affascinante. Il pane quotidiano di uno è l'obiettivo dell'altro. Ciò che da una parte è nativo diventa, a volte, un'artefizio di sintassi e giochi del compilatore dall'altra.
Così succede anche al modo di "pensare" la programmazione.
Io (come molti, credo) vengo dall'esperienza di linguaggi imperativi.
Il paradigma funzionale è per me oggetto di studio e di interesse (molto). Ma mi rendo conto che l'aver ormai assorbito un modo di pensare mi limita pesantemente quando devo assimilarne un altro. Diverso. Radicalmente.
Il concetto è vecchio come il mondo.
Se mi consentite una divagazione OT nel mondo della letteratura, penso ad un romanzo forse poco noto, che mi ha lasciato un paio di segni profondi: Marabou Stork Nightmares (tradotto in Tolleranza Zero) di Irvine Welsh (quello di Trainspotting).
Andare a fondo per poter poi risalire. Traslato nel contesto, qui è disimparare per apprendere meglio.
N.B. Questo post è stato influenzato da due fattori. Uno di essi, il lato tecnico della cosa, parte da un giro sulla rete con questo punto di arrivo (da cui il titolo, peraltro).