Giovedì 13 e Venerdì 14 Febbraio si è svolta la settima edizione dei LAMBDA DAYS, una delle più importanti conferenze internazionali sulla programmazione funzionale, dove accademia e mondo del lavoro possono trovarsi e confrontarsi sul tema. È da tempo che Evoluzione sta valutando di adottare il paradigma funzionale, quale miglior occasione dei Lambda Days 2020 per vedere come altre realtà hanno già affrontato il cambio? Ecco una panoramica dei talk che abbiamo avuto il piacere di seguire, con riferimenti a speaker e materiali disponibili.
Gabrielle Keller
Keynote: Functional programming for array-based parallelism
Gabrielle ci mostra della “stregoneria” in Haskell per la programmazione in ambito parallelo, in modo da sfruttare al meglio sia le CPU multiprocessore sia le GPU.
Tomas Petricek
Designing composable functional libraries, not just for data visualization
Cosa è un grafico? Semplice, è un “algebraic data type”. Così Tomas ha affrontato la sfida di creare una libreria di generazione di grafici in ottica funzionale con F#.
Partendo da coordinate x e y su un canvas SVG si arriva a tipi di dato e funzioni componibili per costituire un domanin specific language.
Devon Estes
Comparing common concurrency patterns in Elixir and Erlang
Bella comparazione sui quattro pattern di concorrenza messi a disposizione dalla BEAM partendo dalla semplice creazione di un nuovo processo, cosa banale in BEAM, fino ad arrivare a GenStage approfondendo pro e contro di ogni possibile scelta.
Paweł Szulc
Maintainable Software Architecture in Haskell (with Polysemy)
Perchè quando ai colloqui ci chiedono di scrivere un algoritmo di ordinamento tutto fila liscio (scrivo qualche test, poi un po’ di codice e tutto sembra arcobaleni e unicorni), mentre quando affronto la mia prima user story tutto cambia? Semplicemente perchè nel primo caso il nostro codice non deve interagire con nulla, mentre il nostro software ha molteplici interazioni con il resto del mondo: Pawel ci presenta Polysemy una libreria Haskell per affrontare in maniera più serena la complessità dello sviluppo.
Daniel Beskin
Category Theory as a Tool for Thought
“La teoria delle categorie è una teoria matematica che studia in modo astratto le strutture matematiche e le relazioni tra esse”. Così Wikipedia definisce l’argomento, molto caro ai programmatori funzionali, di questo interessantissimo talk.
William Heslam
Modelling Side Effects via Extensible Effects and Property Testing
Il property base testing è una tecnica molto interessante per migliorare il testing del codice. In pratica invece di testare che 1 + 2 sia uguale a 3, fissando così valore atteso e valore effettivo, questi vengono “variabilizzati” testando delle proprietà del codice: ad esempio applicando due volte la reverse ad una lista si ottiene la lista di partenza.
Così facendo il tool permette di generare centinaia di test, fornendo diverse casistiche di output e aiutando a trovare specifici corner case.
John Hughes
Keynote: How to specify it! A guide to writing properties of pure functions
Keynote di chiusura che fa scopa con il talk precedente, John, co-creatore del tool di property base testing QuickCheck, illustra le diverse metodologie per “creare” proprietà da testare e quali siano le più efficaci.
Viktor Kunčak
Keynote: Proving Algebraic Laws in Scala using Stainless
Stainless è una libreria molto interessante che ha alla base il concetto di verifica formale del codice; in altre parole tramite un DSL si specifica alla libreria come provare il nostro codice. Praticamente con tutti gli input possibili e stainless produrrà un report dettagliato di tutte le possibili anomalie.
Thomas Gebert Nick Misturak
Distributed Programming, Hash Tables, and fun!
Come realizzare un sistema di streaming alla Youtube senza i capitali del colosso americano? Thomas e Nick si sono affidati al p2p tramite distributed hash table realizzando così un Youtube distribuito e peer to peer in clojure e clojurescript.
Evelina Gabasova
The bottom of the iceberg: Enabling data science research with F#
Evelina ci mostra come F# sia stato un match eprfetto per il suo lavoro, Data Scientist all’Alan Turing Institute, e come l’espressività del linguaggio l’abbia agevolata nel complesso mondo dell’analisi dei dati.
Juliano Alves
Enhancing the type system with Refined Types
Refined Types è l’idea di restringere il campo dei possibili input delle nostre funzioni in modo da ridurre inutili controlli e rendere più espressivo il nostro codice. In questo talk Juliano ci mostra refined, una libreria scala atta proprio a questo.
Raphael Sousa Santos
Programming synthesizers live in OCaml
Bellissimo talk che mostra come trasformare in codice le basi della musica e come “comporre via codice” in OCaml.
Amr Abdelwahab
Privilege as a technical debt
Amr porta sul palco uno dei talk meno tecnici ma più interessanti della conferenza, che affronta il tema del privilegio sociale da affrontare come debito tecnico. Nel dettaglio vengono affrontati i concetti dati per scontati nella propria cultura, come ad esempio la presenza di un Nome e di un Cognome, che però stridono con culture diverse.
Van Anh Dam
Keynote: How to let kids outsmart you and why they should?
La chiusura della conferenza è affidata al direttore generale della Centralny Dom Technologii che ci ha illustrato il progetto messo in atto per avvicinare giovani e meno giovani alla tecnologia e alla programmazione. Progetto molto interessante e che ha lo scopo di fornire sia competenze tecniche, sia soft skill che saranno la base della conoscenza del domani. Sul canale youtube trovate tutti i video dei Lambda Days 2020 e delle edizioni precedenti, vi consiglio vivamente di vederli.