Differenze tra F# Async e C# Task

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.

Add a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *