974,78 €

Applied Functional Programming Workshop

Azioni e Pannello dettagli

974,78 €

Informazioni sull'evento

Condividi questo evento

Data e ora

Località

Località

Evento online

Descrizione evento
Tecniche di Functional Programming per risolvere problemi concreti

Informazioni sull'evento

Online e in diretta, 23-24-25-28-29-30 giugno 2021, dalle 9.00 alle 13.00 (CEST - Italia), con Matteo Baglini.

Abstract

Il corso Applied Functional Programming di Matteo Baglini è strutturato per mettere in pratica la programmazione funzionale. Si rivolge a chi ha già assaporato questo paradigma e vuole fare un salto in avanti nella sua adozione.

Impareremo a utilizzare le teorie matematiche per costruire le giuste astrazioni, tra cui le famose Monadi, e lo faremo con varie sessioni di coding.

Il workshop mantiene un'impostazione estremamente pratica: poche slide e introduzioni, tantissimo codice.

Obiettivo del corso: applicare nel day-by-day tecniche di pure functional programming.

Target Audience

Il workshop si rivolge a software developer professionisti con un livello di esperienza medio/alto con linguaggi mainstream come Java/C#/JavaScript/TypeScript/PHP e che siano già entrati in contatto con il mondo funzionale (per esempio concetti quali immutabilità, high-order functions, manipolazione di List tramite map/flatMap/reduce).

Durante il workshop faremo largo uso di concetti considerati avanzati nei tipici linguaggi di programmazione (come generics e subtype polymorphism), rendendo questo corso non adatto a chi sta iniziando il suo percorso nel mondo della programmazione.

Argomenti

Alcuni degli argomenti che tratteremo:

  • capire l’impatto derivante dal lavorare con la referential transparency
  • progettare grandi sistemi come small composable units
  • modellare comportamenti, vincoli e dati del dominio tramite modules, functions e algebraic data types
  • ottenere una conoscenza approfondita delle principali functional structures: Functor, Applicative, Monad, Foldable e Traversable
  • come sopravvivere in un mondo colmo di side-effects.

Agenda

Sessione 1 - Gettiamo le basi:

  • Programmazione funzionale - introduzione e benefici
  • Scala refresh - case classes, objects, traits
  • Building blocks - modules, functions e algebraic data types.

Sessione 2 - Side-effects (parte 1):

  • Side-effects - come introdurli in un sistema privo di essi
  • Funzioni pure, map e flatMap - padroneggiare i combinatori chiave
  • Ricreiamo Option - sviluppo di una Monade built-in da zero.

Sessione 3 - Side-effects (parte 2):

  • Custom Monad - sviluppo una Monade non built-in da zero
  • Catalogo Monadi - vediamo le differenti semantiche
  • Funzioni apply, fold, sequence, traverse - altri combinatori chiave.

Sessione 4 - Costruiamo una applicazione da zero (parte 1):

  • Hexagonal Architecture - introduzione
  • Type-Driven Design del dominio - approccio bottom-up
  • Implementazione - riempiamo gli “spazi vuoti”
  • Micro testing - test del solo dominio.

Sessione 5 - Costruiamo una applicazione da zero (parte 2):

  • Hexagonal Architecture - dependency inversion principle
  • Infrastruttura - persistenza, configurazione, logging
  • Combinare Monadi - gestire/unire/convertire le diverse monadi.

Sessione 6 - Costruiamo una applicazione da zero (parte 3):

  • Runtime loop - collegare dominio ed infrastruttura
  • Macro testing - acceptance test dell’applicazione
  • Run it - vediamola in esecuzione
  • Wrap up - note finali.

Perché partecipare

Con questo workshop potrai andare a fondo sui principi base della programmazione funzionale e potrai vivere l’esperienza di sviluppo software in stile funzionale grazie a esercizi, esempi e discussioni in gruppo.

Matteo ti darà gli strumenti per farti valutare in maniera più oggettiva i pro e contro della programmazione funzionale: a te poi la decisione finale sul fare o meno il salto!

Tecnologia

Useremo Scala come linguaggio di programmazione. Essendo un linguaggio estremamente ibrido, Scala ci permetterà l'introduzione graduale dei concetti portando a casa risultati.

Per partecipare a questo corso è richiesta, quindi, una conoscenza base di Scala. Il miglior modo per prepararti è studiare l’ABC del linguaggio seguendo questo piccolo tutorial: https://docs.scala-lang.org/tour/basics.html

L’idea è di guadagnare abbastanza confidenza prima di entrare in aula (digitale) per poter poi seguire il workshop senza bloccarsi sulla sintassi del linguaggio.

Il workshop prevede che le esercitazioni avvengano sul tuo portatile, quindi avrai bisogno di installare/avere sul tuo laptop:

  • Java JDK versione 8 o 11 (https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
  • Scala, una versione della serie 2.13.x (https://www.scala-lang.org/download)
  • SBT, una versione della serie 1.4.x (https://www.scala-sbt.org/download.html)
  • un IDE, IntelliJ (anche community edition) oppure un editor come Sublime, Visual Studio Code, Vim o Emacs.

Come si svolge

La parola chiave di questo workshop è “pratica”: i momenti di teoria saranno pochi, ma essenziali.

Diciamo 30% teoria e 70% pratica.

Metaforicamente parlando, non verrà utilizzato un approccio “a catalogo” dove prima dobbiamo imparare tutti i mattoncini e solo alla fine possiamo provare a costruire la casa.

Partiamo invece dal costruire la casa e usiamo le difficoltà come leva per introdurre e approfondire i vari mattoncini.

Il corso si svolgerà online e in diretta per un massimo di 12 persone: il docente e tutti i partecipanti saranno in video conferenza e avranno a disposizione una serie di strumenti digitali per interagire tra di loro e lavorare hands-on.

Nonostante la modalità online, il corso mantiene il suo approccio interattivo e partecipativo.

Per questo motivo, è richiesto che tutti i partecipanti abbiano la telecamera accesa per tutta la durata del workshop per una migliore fruizione e comunicazione.

Non sarà un corso passivo, fatto solo di slide e video pre-registrati.

Applicheremo alcuni principi del metodo Training from the back of the room, con prevalenza di attività su lectures.

Alle poche definizioni teoriche si affiancano numerosi esercizi ed attività pratiche.

La condivisione tra i partecipanti ed il supporto del trainer completano il quadro formativo.

F.A.Q.

Prerequisiti: Quali sono i requisiti minimi per partecipare a questo corso? Cosa devo installare prima del corso?

È richiesta una onoscenza base di Scala. Nel paragrafo Tecnologia sono presenti varie informazioni per colmare questo gap, informazioni che riportiamo qui sotto:

Il workshop prevede che le esercitazioni avvengano sul tuo portatile, quindi avrai bisogno di installare/avere sul tuo laptop:

Java JDK versione 8 o 11 (https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)

Scala, una versione della serie 2.13.x (https://www.scala-lang.org/download)

SBT, una versione della serie 1.4.x (https://www.scala-sbt.org/download.html)

un IDE, IntelliJ (anche community edition) oppure un editor come Sublime, Visual Studio Code, Vim o Emacs.

Livello del workshop: È un workshop per principianti o per esperti?

L’ago della bilancia pende verso software developer di livello medio/esperto.

Bisogna avere un buon livello di conoscenza del linguaggio e di concetti dell’OOP come per esempio polimorfismo, interfacce ed ereditarietà e, come detto, una conoscenza base di Scala.

Io programmo in Java/Kotlin/C#/JavaScript/PHP/ecc, come mi può essere utile questo workshop?

A oggi non crediamo esista un linguaggio che non abbia costrutti della programmazione funzionale. In passato, tra i partecipanti abbiamo ospitato programmatori Java, Kotlin, C#, PHP, JavaScript, TypeScript, Erlang, Elixir.

È sufficiente avere first-class functions oppure costrutti come Future/Promise per essere già mani e piedi dentro al paradigma funzionale.

Partecipando a questo workshop ti porterai a casa un’approfondita conoscenza su diversi concetti ortogonali al linguaggio e che potrai sfruttare immediatamente nel tuo attuale stack applicativo.

Ricordati però che, come già detto, è necessario avere una conoscenza minima di Scala per poter partecipare (vedi il paragrafo Tecnologia).

Cosa devo assolutamente avere per potermi iscrivere a questo corso online?

Se possiedi un computer e un monitor, una rete stabile (almeno 20 Mbps in download e 10 Mbps in upload), cuffie, microfono e videocamera, allora puoi iscriverti al corso senza problemi. Un paio di settimane prima del corso ti invieremo tutte le informazioni sugli strumenti che useremo e come accedervi.Per la rete, prova a fare uno Speed Test.Nonostante la modalità online, il corso mantiene il suo approccio interattivo e partecipativo. Per questo motivo, è richiesto che tutti i partecipanti abbiano la telecamera accesa per tutta la durata del workshop per una migliore fruizione e comunicazione.

N.B.

Invieremo una comunicazione con la conferma del corso agli iscritti non più tardi di due settimane prima del corso.

Info pratiche sul workshop

Lingua: italiano.

Numero massimo di partecipanti: 12 persone

Strumenti e postazione: il corso si svolgerà online e in diretta, attraverso l'uso di alcuni strumenti digitali. A iscrizione avvenuta, riceverai tutti i dettagli su come accedere al corso e interagire con il docente e gli altri partecipanti, e su come prepararti al meglio.

Link al sito

https://www.avanscoperta.it/it/training/applied-functional-programming-workshop/

Docente

Matteo Baglini


		Immagine Applied Functional Programming Workshop

Sconto Under_Cover_Learner

I tuoi non ti mandano? Partecipi di nascosto?

PER TE UN 20% DI SCONTO

Se ti stai iscrivendo al corso a titolo personale, e non hai la Partita IVA, c’è una tariffa speciale per te: uno sconto del 20% sul prezzo del biglietto, che potrai ottenere inserendo il codice UNDER_COVER_LEARNER su Eventbrite nel campo "Enter promo code", nella schermata in cui puoi selezionare la quantità dei biglietti (prima di premere il bottone "Checkout").

Il codice non può essere utilizzato con nessun’altra offerta, ed è valido su tutti i tipi di biglietto.

Per maggiori informazioni scrivi a info@avanscoperta.it.

Metodi di pagamento supportati

PayPal, Carta di Credito (via PayPal, al link: "Don't have a PayPal account?"), Bonifico Bancario su richiesta (info@avanscoperta.it)

Policy rimborsi

Consulta le nostre policy a questo link.

Condividi con gli amici

Data e ora

Località

Evento online

{ _('Organizer Image')}

Organizzatore Avanscoperta

Organizzatore di Applied Functional Programming Workshop

We are Learners!

Avanscoperta is the go-to learning space for developers, designers and any professional involved in the digital ecosystem. 
We're an Italian-based coaching and training company focusing on the professional growth of teams and individuals within software development, product leadership, team and change management. Join our community! http://bit.ly/-_-Newsletter

 

Salva questo evento

Evento salvato