Recentemente ho iniziato a sbirciare roba riguardante la programmazione funzionale, Haskell in particolare. Con grosse difficoltà, provo a scriverle così forse riesco anche a chiarirmi.
Comincio con due giustificazioni in parte auto-assolutorie.
Per prima cosa vengo da una lunga storia in cui ho cambiato diverse volte tutto (o quasi). Non avete idea di come si faceva ai miei tempi con il Fortran; certi costrutti erano molto simili all’assembler (OK, molto semplificato ma tutti quei GOTO
e gli IF
calcolati). E te lo insegnavano così anche a scuola, peccato non aver conservato gli appunti. Poi –come già detto– c’è stata una lunga evoluzione… A proposito tendo a auto-censurarmi anche su Turbo Pascal > Borland Pascal > Delphi; forse perché solo Windows, forse perché la gente (quelli che conosco) preferiva il Basic (anche qui tutta una lunga serie di sapori).
C’è poi un altro motivo: sono vecchio. E con l’età –posso citare un über-nerd? ecco:
Non ci sono dubbi, c’è una ragione per cui si va a scuola da giovani: il cervello e la sua plasticità invecchiano, e, sebbene sia possibile tenerli allenati, come per tutti gli allenamenti la fatica e lo sforzo aumentano con il tempo.
Qui, al punto 3. Notare che Marco è molto più giovane di me, per dire io ho avuto contatti professionali con il suocero (sì rockz anche lui).
C’è infine un altro motivo, quasi altrettanto importante: if it ain’t broke, don’t fix it (qui).
Che nel mio caso implica che non si deve cambiare niente visto che Python | Matlab (Octave) | Visual Basic | you name it va benissimo. Sì con Windows. Non vi dico della mia proposta di dare una chance a Julia 😐
Ma chissene! mica lo faccio più per lavoro, per un ritorno pratico! ormai sono fuori e posso dedicarmi a quello che mi piace. Per esempio il Lisp (in realtà un’evoluzione, Racket, che è Scheme) l’ho tenuto in stand-by per 30 anni 👽
E adesso –per quel che ne so, sono isolato in fondo alla West Padagna– sono sexy Go, Rust e Haskell.
Sono partito a seguire un tutorial che non mi ha soddisfatto più di tanto; mi ha lasciato con idee confuse. E poi non è nemmeno finito. Ma non mi arrendo, anzi presto comincio con un altro, diverso.
Intanto ho scoperto questo post: A Beginner-Friendly Tour through Functional Programming in Scala. Parla di Scala ma vale per l’FP tutta. Un po’ lungo (e forse troppo dettagliato) ma OK. Ecco:
The essential core of functional programming is quite simple: build programs by composing functions.
In this context, “function” does not refer to a “computer science” function, that is, a hunk of machine code, but rather, a mathematical function:
Totality. A function must yield a value for every possible input.
Determinism. A function must yield the same value for the same input.
Purity. A function’s only effect must be the computation of its return value.
OK, tutto da leggere; non l’ho stampato, anche se… (sono vecchio).
Poi, prossimamente… forse… probabilmente… 😊
🤩
Trackback
[…] con Haskell –o almeno ci provo come dicevo qui— un nuovo […]