Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...

Pagina creata da Elisa Bertolini
 
CONTINUA A LEGGERE
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
Coding, ovvero il delirio computazionale

    Massimo Maria Ghisalberti - pragmas.org

         Linux Day 2016 - (22/10/2016)

                       1
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
Premessa
  •   Non sarò breve.
  •   Chi ha una connessione ad Internet potrà seguire le slide a questo indirizzo:
      •   http://minimalprocedure.pragmas.org/writings/LinuxDay2016/index_client.html

Qualche parola sul CAD (Codice Amministrazione Digitale)
  •   Nel CAD si dice all'art.: 68 che il software proprietario è l'ultima alternativa.
  •   La scuola pubblica non va dimenticato è una Pubblica Amministrazione.
  •   Il MIUR ha fatto accordi con Microsoft per Minecraft for Education.
  •   Minecraft for Education richiede Microsoft Windowstm 10 o Apple OSX El Capitain
      (http://education.minecraft.net/knowledgebase-category/availability/).

Interrogativi ed affermazioni
  •   Perché non Minetest (http://www.minetest.net/) che è Open Source?
  •   I nostri ragazzi dovranno diventare futuri clienti delle blasonate software house?
  •   La scuola pubblica non deve fidelizzare i nostri ragazzi ad un prodotto commerciale.

Il coding
  •   coding: gerundio o participio presente del verbo to code.
  •   Codificare non significa necessariamente programmare i computer.
  •   La semantica delle parole sta diventando un'opinione e lo storytelling impera.
  •   Storytelling nel senso che ce la raccontano?
  •   Il coding è un business?

Wikipedia in italiano
  •   La programmazione, in informatica, è l'insieme delle attività e tecniche che una o più
      persone specializzate, programmatori o sviluppatori (developer), svolgono per creare un
      programma, ossia un software da far eseguire ad un computer, scrivendo il relativo codice
      sorgente in un certo linguaggio di programmazione.

Wikipedia in inglese
  •   Computer programming (often shortened to programming) is a process that leads from an
      original formulation of a computing problem to executable computer programs.
      Programming involves activities such as analysis, developing understanding, generating
      algorithms, verification of requirements of algorithms including their correctness and
      resources consumption, and implementation (commonly referred to as coding) of algorithms
      in a target programming language. Source code is written in one or more programming
      languages. The purpose of programming is to find a sequence of instructions that will

                                                  2
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
automate performing a specific task or solving a given problem. The process of
      programming thus often requires expertise in many different subjects, including knowledge
      of the application domain, specialized algorithms and formal logic.

Definizioni diverse per popoli diversi
  •   italiani: programmare è un'attività svolta da tecnici (ovvero stregoneria pura).
  •   anglosassoni: programmare è un processo cognitivo.
  •   io: sono d'accordo con gli anglosassoni (in questo caso).

Il Coding secondo il MIUR ed i suoi guru: il mantra.
  •   Il coding è per tutti.
  •   il coding è divertente.
  •   il coding è facile.
  •   il coding si insegna dopo un corso di poche ore.
  •   il coding si insegna con una T-shirt con le scritta: Coding in…

il coding secondo le persone tristi e grigie
  •   Il coding non è per tutti.
  •   Il coding è anche divertente, se si sa cosa fare.
  •   Il coding non è così semplice come lo raccontano.
  •   Per imparare a fare del coding servono anni di esperienza e studio.
  •   Insistere sul ludico e facile sminuisce il ruolo e la bellezza della computer science.

Quindi? Anzi no, …e quindi?
  •   Questa è spesso la replica alle mie obiezioni sul coding.
  •   Anzi no, la replica è: …e quindi?
  •   Qualcuno mi ha detto che: Stiamo facendo un percorso bellissimo…
  •   Qualcuno ha presentato un confronto tra Scratch ed un codice in C, affermando che Scratch
      era più semplice.
  •   (ps: il codice in C era errato.)
  •   Repliche sempre molto argomentate.

Il delirio computazionale
  •   Siamo in pieno delirio computazionale.
  •   I guru del coding spuntano come funghi dopo una pioggia ed un po' di sole.
  •   Il successo del coding a scuola sono numeri puri e assoluti (alcuni con la virgola).

                                                  3
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
•   unmilioneseicentocinquantasettemilacentouno. (MIUR
      http://hubmiur.pubblica.istruzione.it/web/ministero/cs150915).
  •   in media 8,5 ore di pensiero computazionale per partecipante.

programma il futuro
  •   http://www.programmailfuturo.it/
  •   È un progetto del MIUR e CINI (Consorzio Inter universitario Nazionale per l'Informatica).

Descrizione del progetto (21/10/2016)
  •   http://www.programmailfuturo.it/progetto/descrizione-del-progetto
  •   Partendo da un’esperienza di successo avviata negli USA nel 2013 che ha visto sino ad ora
      la partecipazione di circa 200 milioni di studenti e insegnanti di tutto il mondo, l’Italia è
      stato uno dei primi Paesi al mondo a sperimentare l’introduzione strutturale nelle scuole
      dei concetti di base dell’informatica attraverso la programmazione (coding ), usando
      strumenti di facile utilizzo e che non richiedono un’abilità avanzata nell’uso del computer.
      L’iniziativa, con la partecipazione nel corso dell'a.s. 2015-16 di oltre 1.000.000 studenti,
      15.000 insegnanti e 5.000 scuole in tutta Italia, colloca il nostro Paese all’avanguardia in
      Europa e nel mondo.

Perché sperimentare il coding nelle scuole italiane
  •   Il lato scientifico-culturale dell'informatica, definito anche pensiero computazionale, aiuta
      a sviluppare competenze logiche e capacità di risolvere problemi in modo creativo ed
      efficiente, qualità che sono importanti per tutti i futuri cittadini. Il modo più semplice e
      divertente di sviluppare il pensiero computazionale è attraverso la programmazione (coding
      ) in un contesto di gioco.
  •   Più semplice per chi: ragazzi o insegnanti?

Gli strumenti a disposizione delle scuole
  •   Gli strumenti disponibili sono di elevata qualità didattica e scientifica, progettati e
      realizzati in modo da renderli utilizzabili in classe da parte di insegnanti di qualunque
      materia. Non è necessaria alcuna particolare abilità tecnica né alcuna preparazione
      scientifica. Il materiale didattico può essere fruito con successo da tutti i livelli di scuole.
      Raccomandiamo soprattutto alle scuole primarie di avvicinare i propri studenti allo
      sviluppo del pensiero computazionale.
  •   Strumenti di elevata qualità scientifica che non richiedono preparazione scientifica.

Partner e sponsor a vario livello
  •   Confindustra Digitale
  •   iab Italia (Interactive Advertising Bureau), la più grossa associazione nel campo della
      pubblicità digitale.
  •   TIM

                                                   4
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
•   Engineering, leader nei servizi IT
  •   Cisco, CA technologies, Dea Scuola, SeeWeb, anp (Ass. Nazionale Dirigenti ed alte
      professionalità nella scuola), Andinf (Ass. Naz. docenti informatica scuola superiore).
  •   Intel, HP, Facebook, Microsoft, Samsung, Oracle (2015/16).

Nessun Dubbio?

Tutta farina del nostro sacco?
  •   la fuffa sì ma il resto no.
  •   I contributi sono recuperati ed in parte tradotti da code.org.
  •   Programma il futuro erra (http://www.programmailfuturo.it/progetto/cose-il-pensiero-
      computazionale) nell'attribuire l'espressione computational thinking alla Wing (2006) e
      dovrebbe attribuirlo invece a Papert (1980).
  •   Era giusto per dire…

Ultima cosa su Programma il Futuro
  •   Invita i ragazzi ad iscriversi (Volantino-PIF-Secondaria.pdf, Volantino-PIF-Primaria.pdf) al
      sito web del progetto.
  •   Dimentica che secondo l'articolo 2 del Codice Civile i minori non hanno libertà di agire.
  •   Un minore non potrebbe iscriversi a nessun sito web che comporti l'accettazione di una
      licenza.
  •   Le licenze software sono equiparate ai contratti e quindi un minore non potrebbe
      sottoscriverle.

code.org
  •   code.org in linea di principio è una buona iniziativa.
  •   I suoi scopi vanno oltre il mero coding e si rivolgono anche alla integrazione razziale o a
      colmare il gap tecnologico tra i sessi.
  •   Sponsor: Mark Zuckerberg and Priscilla Chan, Bill and Melinda Gates Foundation,
      Quadrivium Foundation, Sean N. Parker Foundation, BlackRock, Salesforce, Drew
      Houston, Verizon, Reid Hoffman, Diane Tang and Ben Smith, John and Ann Doerr, Bill
      Gates, Infosys Foundation USA, Ali and Hadi Partovi, Google, Microsoft, Omidyar
      Network, Ballmer Family Giving, Jeff Bezos.
  •   italia.code.org ci dice subito che 2.253.762 italiani hanno partecipato all'ora del codice e che
      chiunque può imparare (10/10/2016 17:20).
  •   https://en.wikipedia.org/wiki/Code.org

Fondatore principale
  •   Fondata da Hadi Partovi (https://en.wikipedia.org/wiki/Hadi_Partovi), Ali Partovi

                                                  5
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
(http://www.partovi.org) ed altri.
   •   Hadi Partovi (born 1972) is an Iranian-American businessperson. He has co-founded
       companies including Tellme Networks and iLike. Additionally, he was the group program
       manager for Internet Explorer as well as general manager of MSN at Microsoft, and later
       served as a Senior Vice President at MySpace. Partovi is an angel investor, as well as CEO
       and co-founder of the non-profit organization Code.org.

commenti entusiasti 1 (italia.code.org)
   •   Ho visto fuochi d'artificio accendersi sulle teste dei miei studenti, non lampadine. -
       Insegnante
   •   Il miglior prodotto educativo abbia mai visto. - Genitore e imprenditore
   •   Non ho MAI visto i miei studenti così entusiasti di imparare. - Insegnante
   •   Una delle due cose migliori accadute nel 2013. - Studente di seconda
   •   E poi sapevo che questa sarebbe stata una possibilità di quelle che capitano una sola volta
       nella vita. - Studentessa di quinta

commenti entusiasti 2 (italia.code.org)
   •   Adesso sto cercando di convincere altre scuole ad insegnare l'Ora del Codice perché è
       davvero un'esperienza meravigliosa. - Studente di quinta
   •   Gli studenti erano entusiasti e completamente presi. - Insegnante
   •   Oggi sono entrati di corsa nell'aula prima dell'inizio delle lezioni e mi hanno chiesto se
       potevano già iniziare. Sono rimasto sbigottito del loro entusiasmo e della loro curiosità per
       l'Ora del Codice. - Insegnante
   •   I miei tre figli son tornati a casa dalla scuola ieri gridando di entusiasmo per l'Ora del
       Codice. Quella di 6 anni mi ha spiegato come programmare Angry Birds, mentre quello di
       10 proclamava "Da grande farò l'ingegnere informatico. E' il lavoro che fa per me. E' il mio
       DESTINO!" - Genitore

commenti meno entusiasti
« I've seen things you people wouldn't believe,
attack ships on fire off the shoulder of Orion,
I watched c-beams glitter in the dark near the Tannhäuser Gates.
All those moments will be lost in time,
like tears in rain.
Time to die. »
(Roy Batty - Blade Runner, Ridley Scott 1982)

Scratch forever or only for first?
   •   MIT Media Lab's Lifelong Kindergarten group con a capo Resnick sviluppa Scratch nel
       2003
   •   Idee sulla programmazione visuale della metà degli anni novanta.

                                                  6
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
•    Linguaggio limitato, manca di strutture dei linguaggi di programmazione reali.
   •    Blocchi colorati drag and drop.

2003/2013
   •    Sviluppato in Squeak/Smalltalk.
   •    Multipiattaforma (Microsoft Windowstm, McOSXtm, Linux, …)
   •    Realmente open source (Squeak è Open Source) https://github.com/LLK/Scratch_1.4.
   •    Espandibile ed ispezionabile a runtime.

2013/oggi
   •    Sviluppato in ActionScript.
   •    Codice reperibile su github: https://github.com/LLK/scratch-flash
   •    Il compilatore Adobe Flex è un progetto Apache (https://flex.apache.org/).
   •    Il runtime Adobe Flash/Air è software proprietario.
   •    Adobe Flash e Adobe Air non sono più supportati in Linux (Adobe ha annunciato di voler
        rinnovare il supporto in data da destinarsi).

Pregi
   •    Ha favorito un movimento che ha colmato il tempo perso tra Seymour A. Papert
        (Mindstorms: Children, Computers, And Powerful Ideas - 1980) e la Jeannette Wing
        (Computational Thinking - 2006).
   •    Adatto a ragazzini la cui capacità di scrivere è limitata.
   •    Analogia con i ben noti mattoncini Legotm.
   •    Soddisfazione immediata per studenti ed insegnanti.
   •    Ce ne sono altri?

Difetti
   •    Scratch 2 non è un software da considerarsi Open Source: il runtime è proprietario.
   •    Linguaggio di programmazione limitato e di tipo imperativo.
   •    Non esistono funzioni ma solo procedure, ricorsione limitata.
   •    Frustrante e caotico su problemi appena poco complessi.
   •    Favorisce il Programming by example.
   •    Troppi strumenti di disegno integrati e ampia libreria di sprite.
   •    Non stimola l'utilizzo di altri software.
   •    Approccio prevalentemente ludico e modello didattico a tutor.

                                                    7
Coding, ovvero il delirio computazionale - Massimo Maria Ghisalberti - pragmas.org Linux Day 2016 - (22/10/2016) - GNU/Linux User ...
Studi sulla effettiva validità di Scratch
  •   Ci sono molti studi che analizzano la effettiva validità dell'approccio visuale Scratch-like.
  •   Molti discutono sull'effettiva validità e necessità del pensiero computazionale.
  •   Alcuni si interrogano su cosa sia davvero il pensiero computazionale.
  •   In Italia, il MIUR è verbo con i suoi evangelist, guru e angel investor.

Le strutture logiche di programmazione non vengono generalmente
usate in Scratch
  •   Do Code Smells Hamper Novice Programming? - (Efthimia Aivaloglou, Felienne Hermans)
  •   We find that procedures and conditional loops are not commonly used. We further
      investigate the presence of code smells, including code duplication, dead code, long method
      and large class smells. Our findings indicate that Scratch programs suffer from code smells
      and especially from dead code and code duplication.

La progressione delle capacità è limitata e presto gli studenti si
annoiano
  •   Skill progression demonstrated by users in the scratch animation environment - (Christopher
      Scaffidi, Christopher Chambers)
  •   What we found was a positive progression of social skills (Section 5.1) alongside a negative
      progression of demonstrated technical expertise, as reflected in a wide range of
      programming primitives (Sections 5.2 and 5.3).

La risposta del MIT allo studio precedente, che però si pone il dubbio
  •   Skill Progression in Scratch Revisited - (J. Nathan Matias e Sayamindu Dasgupta, MIT;
      Benjamin Mako Hill)
  •   Although Scaffidi and Chambers’s surprising results on depth and breadth seem to have
      been driven by a small dataset and an unlucky sample, their paper includes many other
      findings and detailed analyses that remain important for researchers of learning and
      programming in informal environments.

Scratch non causa nessuna significativa differenza nella capacità di
risolvere i problemi nei ragazzini
  •   The Effects of Teaching Programming via Scratch on Problem Solving Skills: A Discussion
      from Learners’ Perspective - (Filiz KALELIOĞLU, Yasemin GÜLBAHAR)
  •   According to the quantitative results, programming in Scratch platform did not cause any
      signicant differences in the problem solving skills of the primary school students. This result
      may show that programming in Scratch platform may not have an impact on their problem
      solving skills.

                                                 8
Una analisi della quantità di documenti pro o contro le attività
computazionali.
  •   A Framework for Computational Thinking Based on a Systematic Research Review - (Filiz
      Kalelioglu, Volkan Kukul, Yasemin Gulbahar)
  •   … 125 examined papers (…). 43 papers were about integration and discussion of courses or
      activities and CT in the curriculum. 34 papers discussed unplugged methods or
      computational activities (…) in order to promote and teach the learning of CT. 26 papers
      defined and criticised computation or CT in order to understand the notion of CT. 24 papers
      were found to describe an innovative educational system, design or module designed to
      engage students with CT concepts. Finally, 13 papers were about presenting a pedagogical
      framework and four were about CT pattern analysis.

Alternative a Scratch

Snap!
  •   Snap! (http://snap.berkeley.edu/) per rimanere nei cloni, ex nome BYOB.
  •   Ha tutte le strutture di un linguaggio di programmazione.
  •   Programmato in javascript è espandibile ed ispezionabile.

phratch
  •   phratch (http://www.phratch.com/) è un ulteriore clone.
  •   Deriva dal codice originale di Scratch in Smalltalk.
  •   Aggiunge i blocchi di BYOB
  •   Multipiattaforma, eseguito su Pharo una moderna piattaforma Open Source in Smalltalk.

Beetle Blocks
  •   Beetle Blocks (http://beetleblocks.com/) è basato su Snap!.
  •   Progettato per la programmazione 3D.
  •   Javascript

Blockly
  •   Blockly (https://developers.google.com/blockly/) è un progetto Google.
  •   Utilizzato dalla maggior parte delle piattaforme di tendenza.
  •   Code.org (e quindi programmailfuturo.it), App Inventor, Open Roberta e molti altri.
  •   Blockly lo utilizzano in molti senza saperlo.

Microsoft Research Touch Develop
  •   Touch Develop (https://www.touchdevelop.com/) è un ambiente ibrido.

                                                9
•     Editor semi strutturato con tre livelli di competenze:
        •   principiante a blocchi
        •   programmatore con codice semplificato
        •   esperto con codice simil-javascript
  •     TypeScript

Alice
  •     Alice (http://www.alice.org/index.php) è una piattaforma visuale.
  •     Il codice è affrontabile a più livelli: visuale e testuale.
  •     Programmato in Java.
  •     Ambiente 3D.

Hackety Hack
  •     Hackety Hack (http://hackety.com/) è un ambiente testuale.
  •     Sviluppato in Ruby ed utilizza Ruby.
  •     Il link non è attualmente raggiungibile.

Kids Ruby
  •     Kids Ruby (http://kidsruby.com/) è una evoluzione di Hackety Hack.
  •     Come il suo predecessore utilizza Ruby.
  •     Lo sviluppo è fermo al 2014, ma è usabile.
  •     Installatori per Microsoft Windowstm, Mac OSXtm, Debian Linux, Raspberry Pi.

Ruby e basta
  •     Perché?
  •     Ruby è divertente
  •     Programmazione elementare in Ruby.

EToys
  •     Etoys (http://www.squeakland.org/) è un ambiente visuale.
  •     Appoggiato sulla piattaforma Squeak/Smalltalk.
  •     Adatto a bambini di varie età.

LOGO
  •     LibreLogo (http://librelogo.org/en/), una implementazione LOGO su LibreOffice.

                                                     10
•    Il LOGO, all'origine del concetto (Papert - 1980) del pensiero computazionale e del
        costruzionismo.

Kojo
   •    Kojo (http://www.kogics.net/sf:kojo) un ambiente testuale.
   •    Sviluppato in Scala (un linguaggio funzionale) ed usa Scala.
   •    Unisce le idee del LOGO, di Processing (https://www.processing.org/) e di The Geometer's
        Sketchpad (http://www.dynamicgeometry.com/)
   •    Lo vedremo dopo.

Altri
   •    …
   •    Questi ambienti spuntano come funghi.

Il pensiero computazionale
   •    Da programmailfuturo.it: L'essenza del concetto, esemplificata magistralmente da questo
        video, è che con il pensiero computazionale si definiscono procedure che vengono poi
        attuate da un esecutore, che opera nell'ambito di un contesto prefissato, per raggiungere
        degli obiettivi assegnati. Il pensiero computazionale è un processo mentale per la
        risoluzione di problemi costituito dalla combinazione di metodi caratteristici e di strumenti
        intellettuali, entrambi di valore generale.
   •    Per rispondere a tono: … e quindi?
   •    La discussione su cosa sia il pensiero computazionale e sulla sua validità è fonte, come
        visto, di grosse discussioni all'estero ma non in Italia.

Computational Thinking, una definizione
   •    Computational thinking is the thought processes involved in formulating problems and
        expressing its solution as transformations to information that an agent can effectively carry
        out. [Cuny, Snyder, Wing]
   •    http://research.microsoft.com/en-
        us/um/redmond/events/asiafacsum2012/day1/Jeannette_Wing.pdf

Il Coding
   •    Il coding (un-modello-per-il-coding-a-scuola/) come è inteso può sviluppare il pensiero
        computazionale?
   •    Il curriculum in computing pare debba essere ispirato a quello inglese. (national-
        curriculum-in-england-computing-programmes-of-study)
   •    Al Key stage 2 dice
        •   use sequence, selection, and repetition in programs; work with variables and various
            forms of input and output.

                                                  11
•   Al Key stage 3 dice
      •   use 2 or more programming languages, at least one of which is textual, to solve a
          variety of computational problems.
  •   Non credo si riferisca a Scratch, ma forse noi vogliamo fermarci al Key stage 1.

MOOC
  •   I docenti oggi si formano prevalentemente con dei corsi online di poche ore (MOOC).
  •   Maestre alla porta della pensione che improvvisamente vedono la luce ed illuminano i loro
      studenti.
  •   Nessuno si chiede se serva una vera preparazione per poter insegnare il pensiero
      computazionale.
  •   Nessuno insegnerebbe italiano o storia o matematica senza saperla, ma il coding si.
  •   Qualcosa non torna…

Il gioco ed il pensiero computazionale
  •   Il gioco sviluppa il pensiero computazionale?
  •   Il gioco guidato (tutoring) stimola il ragazzo a pensare?
  •   Impilare centinaia di blocchetti colorati con logiche contorte serve davvero?
  •   Ci sono persone che rispondono no o perlomeno si interrogano, altre fanno i raduni.

Giocare quindi non serve a niente?
  •   Non è così semplice, la dimensione giocosa è importante specialmente con i ragazzini.
  •   Se un ragazzo sa scrivere dovrebbe farlo o perlomeno usare un ambiente ibrido.
  •   Scrivere porta a rileggere e rileggere porta a comprendere, comprendere porta a migliorare.
  •   Il ragazzo deve comprendere che pensare è anche fatica e non solo gioco.
  •   Non servono persone in grado di assemblare ma servono persone in grado di pensare.

Linguaggi di programmazione
  •   Sono come i linguaggi naturali e modellano le strutture mentali.
  •   Ogni paradigma ha un suo diverso approccio al dominio del problema.
  •   Alcuni paradigmi sono, a mio parere, migliori di altri nello stimolare il pensiero e
      l'astrazione.
  •   Se ne dovrebbero affrontare più di uno e con paradigmi diversi.

Il paradigma funzionale ed il pensiero computazionale
  •   Papert era un matematico ed il Logo un dialetto LISP.

                                                12
•   La Wing ha studiato il lambda calculus come dichiara: …we learned lambda calculus. And I
      was just blown away! I said, "Wow! This is something I've never seen before and I really
      like it." (…) And so then, I decided to switch from majoring in electrical engineering to
      majoring in computer science.
      (http://www.women.cs.cmu.edu/What/Interviews/jeannetteWing.php)
  •   La Wing a pagina 3 del documento http://research.microsoft.com/en-
      us/um/redmond/events/asiafacsum2012/day1/Jeannette_Wing.pdf cita espressamente: ML e
      Haskell, insieme a Java e Python.

l'approccio funzionale
  •   Il processo di astrazione e di comprensione dei problemi viene maggiormente stimolato
      dall'approccio funzionale.
  •   Rapporto concettuale diretto tra matematica e linguaggio funzionale.
  •   Trasformazione invece che mera computazione.
  •   Composizione.
  •   Generalizzazione.
  •   Elaborazione parallela.
  •   Immutabilità.
  •   Tipizzazione.

Linguaggi funzionali puri ed impuri
  •   Clojure, Racket/Scheme, Common LISP, LOGO e altri dialetti LISP
  •   Haskell, Clean, Curry, Agda, Miranda
  •   OCaml, F#, Alice, Standard ML, Coq e altri dialetti ML
  •   Erlang, Elixir, Scala, R, Rust
  •   Nemerle, Dylan, Idris, Mozart/Oz
  •   …

Kojo e Scala
  •   http://www.kogics.net/sf:kojo
  •   Open Source
  •   Documentato (http://www.kogics.net/kojo-ebooks)
  •   Disponibile in italiano (tartaruga) (Funzioni di Kojo in italiano).
  •   Usato in molti corsi in India, USA, Inghilterra, Svezia.
  •   Italia (Appunti su Scala e Kojo.).

                                                 13
Un ambiente dove attraverso la programmazione si può esplorare
  •   Matematica.
  •   Arte.
  •   Musica.
  •   Animazione.
  •   Giochi.
  •   Arduino, RaspberryPi.
  •   Il limite è la fantasia.

Caratteristiche
  •   Grafica LOGO (tartaruga).
  •   Tracciatura dell'esecuzione del programma.
  •   Supporto per le immagini.
  •   Laboratorio Matematico basato su Geogebra.
  •   Possibilità di costruire delle storie (Storytelling).
  •   Composizione musicale.
  •   Multilingua e Multipiattaforma.
  •   Open Source e GPL
  •   …

La programmazione
  •   Programmazione punta e clicca per iniziare.
  •   Supporto completo per la programmazione testuale in Scala.
  •   Potente REPL (Read Eval and Print Loop).
  •   Sintassi colorata ed autocompletamento del codice.
  •   Ispezione degli oggetti.
  •   Classpath JAVA personalizzabile per usare qualunque libreria JAVA.
  •   Salvataggio e caricamento degli script.
  •   …

Scala
  •   http://scala-lang.org/
  •   Moderno, Open Source e potente linguaggio funzionale e multiparadigma.
  •   a language with a low floor, an high ceiling, and wide walls

                                                  14
•   Il compilatore emette bytecode per la JVM.
  •   Usato da: Twitter, Linkedin, Foursquare, Coursera, Apple Inc, The Guardian, New York
      Times, Huffington Post, USB Bank, BitGold, Meetup, Remember the Milk, Verizon,
      AirBnB, Zalando, Databrick, Morgan Stanley, Google/Alphabet (Firebase), Unicredit, …

Schermate di Kojo

                                              15
16
17
18
Documenti su Kojo
  •   Funzioni di Kojo in italiano
  •   Appunti su Scala e Kojo.
  •   Challenges with Kojo (Sfide con Kojo) - Björn Regnell, Lund University, 2015
  •   Kojo Ebooks - Lalit Pant

Conclusioni
  •   … e quindi?

Contatti e ringraziamenti.
  •   Ringrazio lo GNU/Linux User group di Perugia per avermi ospitato.
  •   Ringrazio gli ascoltatori per avermi sopportato.
  •   Scrivetemi pure a massimo.ghisalberti@gmail.com o massimo.ghisalberti@pragmas.org.
  •   http://minimalprocedure.pragmas.org/
  •   github: https://github.com/minimalprocedure/linux_day_2016

                                                19
Puoi anche leggere