Ultimamente mi sto dedicando al linguaggio funzionale F#, che trovo molto interessante e si adatta molto bene al mio interesse nel scrivere codice semplice da leggere e strongly-typed. Per fortuna C# ha incorporato alcune funzionalità che hanno reso C# più vicino ad un linguaggio funzionale.
Mentre leggevo il libro “Get Programming With F#: A Guide for .net Developers” di Isaac Abraham – che consiglio – l’autore ha fatto riferimento ad un articolo sul blog di Tomas Petricek sulle differenze tra C# Task e Async in F#.
Devo dire che l’articolo è scritto in modo molto interessante, chiaro, e in grado di spiegare alcuni dettagli tecnici che non tutti i giorni troviamo ad affrontare nei progetti. Dopo avere letto l’articolo ovviamente tutto era molto ovvio 😁
https://tomasp.net/blog/csharp-async-gotchas.aspx/
In particolare mi hanno colpito le parti:
– Gotcha #1: Async does not run asynchronously: il codice sync all’interno di una funzione async non viene eseguito in modo asincrono finché non viene effettuata una chiamata asincrona 🙃
– Gotcha #3: Async void methods: oramai tutti gli editor segnalano questo warning, ma metterlo comunque nella lista è un obbligo!
– Gotcha #4: Async void lambda functions: trovo interessante come sia possibile scrivere codice che compila ma che non funziona come si pensa 😅
E soprattutto come l’approccio di F# sia estremamente più chiaro e sicuro. Trovo che F# dovrebbe essere un linguaggio molto più diffuso, perchè ha veramente un grande potenziale.