Visualizzazione post con etichetta programmazione. Mostra tutti i post
Visualizzazione post con etichetta programmazione. Mostra tutti i post

mercoledì 23 marzo 2016

Come sarà il futuro, digitale o intelligente?

Treno locale nord Milano, di quelli belli e comodi, penultima generazione, di recente costruzione.
Lo scorrere delle stazioni è scandito con efficienza dalle indicazioni sul display digitale, accompagnate dalla suadente voce femminile che dell'altoparlante annuncia: "prossima fermata", "stiamo per arrivare a..."
Poi, come non di rado succede, durante una sosta in stazione le luci cominciano a lampeggiare in modo preoccupante, si spengono.
Oh no, adesso ci diranno che dobbiamo cambiare treno!
Per fortuna il blackout dura poco e la marcia riprende.
Treno di Trenord, ultima generazione!
Le informazioni però sballano. Il software ha ricominciato a contare le stazioni dal principio e crede di essere a Saronno sud, invece siamo a Quarto Oggiaro!
Con tutte le indicazioni sbagliate, ci potrebbero essere difficoltà per qualcuno, dato che lungo la bella e moderna linea i nomi delle stazioni, scritte in bianco sul verde delle eleganti pensiline, di notte non sono illuminati.

Una sola considerazione, a proposito di una parola che per molti oggi è sinonimo di progresso, tecnologia, perfezione: digitale!
Chi ha qualche idea di programmazione lo sa bene, ma anche quelli che hanno conosciuto i personal computer nei tempi in cui per usarli era consigliabile avere un'infarinatura di BASIC e di dos: le macchine digitali non pensano! Solo pedissequamente eseguono le istruzioni di un programmatore umano. Se queste sono sbagliate o incomplete, la macchina digitale non se ne accorge e il risultato, per l'utente, non è soddisfacente.
In questo caso, per esempio, servirebbe che qualcuno prevedesse un controllo incrociato tra le informazioni che vengono date sulle stazioni e un rilevatore GPS. E si eviterebbero situazioni imbarazzanti.
Treno regionale, Stazione Centrale di Milano

Un'altra cosa si usava dire negli anni in cui nella vita degli umani, come una novità, sempre più entravano i  computer, per evitare che gli umani stessi si abbandonassero a una fiducia eccessiva in quelle macchine. Li si definiva "utili idioti". Cioè, di nuovo, possono svolgere lavori pazzeschi, a velocità per gli umani impensabili ma, per l'appunto, non pensano.
Non a caso, dopo decenni di sperimentazione non sempre soddisfacente sulla cosiddetta intelligenza artificiale, i ricercatori sono orientati a puntare su macchine di concezione diversa, più analogiche, basate sulle "reti neurali". Perché digitale è, in definitiva, sinonimo di "stupido"!
Vero è che il discorso riguarda aggeggi che consentono comunque prestazioni mirabolanti e che, correttamente utilizzati, possono cambiare il modo di apprendere, comunicare, produrre. Ma ugualmente, data la sostanziale correttezza della equivalenza digitale = stupido, che per esempio la scuola del futuro venga immaginata come "digitale", fa un certo effetto!

sabato 21 marzo 2015

Potenza e pedanteria del pensiero digitale, 2

continua

La seconda parte di questo articolo, con il video dei bambini che giocano a programmare i computer, arriva nel blog con un molto ritardo sul previsto. C’erano altre cose da fare e una assillante presenza in rete non è necessariamente un fatto positivo, se non accompagnata da una effettiva consapevolezza di quello che si dice e si comunica.
Nel video si vede il professore mettere curiosità ai bambini e voglia di giocare con gli “automi” e i bambini stessi che, giocando e provando - così come imparano le cose i bambini - arrivano a capire come funziona la programmazione.
Discusso a più riprese in rete con un bravo professore, che nega che i bambini possano “programmare”. Certo, se uno ha in mente l'Assembly o il C++, la mente di una bambino non ci può arrivare. Ma dare a un computer le istruzioni  (testuali, righe di comando, non clic un po' a casaccio sulle icone) e correggerle fino a che la macchina non fa esattamente le cose che volevamo noi, che cos’è se non programmazione? Anche perché – e questa non è una cosa solo da bambini – si tratta comunque di applicare la giusta sintassi, e guai a sbagliare cose anche banalissime: la programmazione digitale è bellissima, ma estremamente pedante, anche quando si tratta del linguaggio Logo!
«Perché non andava?»
«Non abbiamo messo i due punti dopo “raggio”»

NOTA "DI SERVIZIO": A QUANTO PARE. GOOGLE, CON I SUOI CRITERI DI RICERCA, NON RIESCE A VEDERE IL VIDEO E A INSERIRMELO QUI (A CHE COSA SERVONO ALLORA IL CODICI DI CONDIVISIONE DI YOUTUBE, SE POI NON SI POSSONO USARE?).
NON RIMANE CHE COPIARE IL LINK, COSI', CHI VUOLE, SI GUARDA IL VIDEO DIRETTAMENTE NEL SUO CANALE:

https://youtu.be/634juQ-yC_4

I bambini hanno imparato dunque che il pensiero digitale non è andare per tentativi su un telefonino o su un tablet. Digitale è sinonimo di discreto (0, 1; sì, no), in contrapposizione ad analogico, che è sinonimo di continuo (tanto, poco; più, meno). Digitale è un ordine del pensiero, non migliore del nostro pensiero solito, ma semplicemente diverso, perché le macchine di oggi pensano così.
E quelle di domani? Beh, probabilmente questo è un altro discorso e per i bambini – che hanno meno fantasia degli adulti dotati di fantasia ma, a differenza della grande maggioranza degli “altri” adulti, non hanno perso il piacere e la capacità di usarla, la fantasia!  – forse non è neanche tanto difficile immaginare “futuri” diversi. E magari capire – il pensiero emotivo dei bambini, per intuizione, sa arrivare lontano! - che tanto, tantissimo, dipende da come noi tutti, oggi, viviamo con consapevolezza o meno il nostro presente.

lunedì 10 settembre 2012

Pensiero digitale: il linguaggio LOGO 3


Il linguaggio di programmazione LOGO - da quanto si è visto nei due post precedenti mi auguro si intuisca - nel confronto con il BASIC tradizionale è allo stesso tempo più digitale, ma anche molto più umano.
Per arrivare a disegnare il quadrato dell'esempio, si può procedere per passi successivi, ordinando magari inizialmente alla tartaruga di muoversi avanti 50, dx 90 avanti 50, dx 90 avanti 50, dx 90 avanti 50. I 90 gradi degli angoli di un quadrato non cambiano, ma la lunghezza del lato, quella ovviamente può variare, per cui viene da sé l'introduzione di una variabile, che si può indicare con la «x», Così come “istintivo” viene, in questo caso, il ricorso all'istruzione primitiva «ripeti», dopo aver osservato che al programma si chiede di eseguire 4 volte la stessa operazione.

Quando in LOGO ho scritto:

per quadrato :lato
ripeti 4 [avanti :lato destra 90]
fine

il computer adesso ricorda la definizione di “quadrato”, in modo che la prossima volta non dovrò ripetere le istruzioni ma basterà scrivere il nome. Cosa utilissima, nel caso di procedure lunghe.

Ma il “pensiero digitale” è esatto e molto pignolo.
Se infatti scrivo semplicemente “quadrato”, il vecchio LOGO MSX mi risponde: “quadrato vuole più oggetti”.
Io so che in questo caso l'”oggetto” è uno solo e non può che essere il lato, per cui scriverò “quadrato 40”, “quadrato 65” e così via, ottenendo un disegno con il lato della lunghezza indicata.

Posso anche replicare il primo programmino per ognuno dei poligoni conosciuti, per es:

per esagono :lato
ripeti 6 [av :lato dt 60]
fine

ancora ricordandomi a mente di immettere l'oggetto lato, oppure introdurre una seconda variabile, “numero dei lati”, e avere così una definizione valida per tutti i poligoni, scrivendo:

per poligono :lato :numero
ripeti : numero [av :lato dt 360 / :numero]
fine

Al comando “poligono”, stando così le cose, il computer mi chiederà più oggetti, e io mi dovrò ricordare di scrivere la lunghezza dei lati e il loro numero, le due cifre separate da uno spazio, in modo che il computer possa calcolare l'ampiezza degli angoli per ogni singola rotazione e disegnare in questo modo qualsiasi poligono regolare.
Ma se io non lo sapessi che devo indicare il lato e il numero?

Ecco, ora mi sta contagiando la natura “digitale” della programmazione, comincio a cercare il pelo nell'uovo, a farmi delle domande che prima probabilmente non mi sarei fatto!
Torno a guardare sullo sbrigativo manuale di quel LOGO antico se c'è un modo diretto, una istruzione primitiva che faccia anche specificare, nella richiesta di “più oggetti”, come si chiamano le variabili che mancano. Non la trovo, e quindi sarebbe da scrivere, mettendo assieme in modo congruo altre “primitive”. E qui servirebbe l'aiuto di un professore! Ma, da allievo, mi sento già abbastanza contento di essere riuscito, credo, a formulare in modo corretto il problema...

Molte altre versioni di LOGO sono state prodotte nel corso degli anni, per tutte le piattaforme informatiche.
Su Windows, MSW LOGO è un programma freeware sviluppato presso l'università di Berkeley, disponibile in inglese, tedesco, portoghese, giapponese (ma esistono anche riferimenti italiano). E' in grado di gestire il suono, il video e il multimediale e lo si può configurare anche con interfaccia grafica. Anche se l'ultima versione risale al 2002, sono state rilasciate riscrittura per Vista e Win 7, anche a 64 bit.
Omini in fila, cristina.01
Micromondi è un LOGO multimediale studiato specificamente per i bambini, che gira su Windows e (nelle ultime versioni) anche su Mac, a distribuzione commerciale, con interfaccia grafica, sviluppato in Italia da Garamond.

StarLogo ci riporta al mitico MIT di Boston, dove Papert cominciò negli anni Sessanta e con la sua tartaruga robot: «è progettato per aiutare gli studenti (e i ricercatori) a sviluppare nuovi modi di pensare e capire i sistemi decentralizzati. (…) permette di controllare centinaia di tartarughe grafiche in parallelo». Ne esiste anche la versione TNG, tridimensionale.

IperLogo, ideato in Italia dai Giovanni Toffoli e Giovanni Lariccia, vive attualmente soprattutto attraverso i “wiki” Iplozero e Qqstorie, dove gli utenti, soprattutto studenti, si scambiano e confrontano risorse, idee, progetti, realizzazioni.

giovedì 6 settembre 2012

Pensiero digitale: il linguaggio LOGO 2


Prima di introdurre la seconda parte sul linguaggio LOGO, due parole sulla terminologia.

La prima volta che mi spiegarono la distinzione tra analogico e digitale fu all'università, e a parlare era Umberto Eco. E forse sarà tanto “pedigree” che mi rende insopportabile la leggerezza e l'approssimazione con cui il termine “digitale” viene usato oggi, all'interno di discorsi spesso tanto zeppi di ideologia quanto carenti di sostanza. E mi dà fastidio che sull'approssimazione sistematica qualcuno ci sguazzi, ci marci, ci faccia i soldi, lasciando gli altri nella confusione.
Dalla "LOGO Art Gallery"
Dunque, un sistema analogico è per definizione continuo, si basa sul più e sul meno, sulle quantità, le sfumature; non permette una netta separazione in singoli elementi ed è complicato da modificare. Un sistema digitale invece è discreto, basato sulla presenza o assenza (sì no, 0 1) e, una volta separato nei suoi singoli elementi, consente elaborazioni virtualmente infinite. La musica e l'arte sono tradizionalmente analogiche, così come il pensiero, le lingue, i sensi degli umani. I computer e gli aggeggi elettronici che usiamo oggi, dentro sono digitali, e il progresso della tecnica ha permesso di digitalizzare, cioè rendere discreti, separabili e quindi elaborabili, anche sistemi tradizionalmente analogici, come la musica, le immagini, i video.
Questo però non significa affatto per gli umani, come qualcuno sembra credere, lo sviluppo necessario né tanto meno automatico di particolari e innovative “competenze digitali”, dato che i contenuti digitali (dentro) a noi arrivano (fuori) secondo le consuete modalità analogiche, tradotti, decodificati, resi accessibili ai nostri sensi. E anche i gadget dell'elettronica, non a caso vedono la loro stagione di massima diffusione nel momento in cui adottano interfacce come il touch screen, (“digitale” nelle modalità d'uso solo nel senso che si usano le dita!) tendenzialmente istintive, naturali, corporee, sempre più metaforiche e analogiche nell'approccio utente!

Anche negli anni Ottanta, non si scherzava con l'ideologia. Nei convegni – con la stessa sicumera con cui oggi qualcuno parla di “nuove specie in via d'apparizione” perché vede marmocchi che giocano fin da piccoli con i telefonini! - c'erano i soliti “lungimiranti” che sentenziavano che chi non fosse stato capace di programmare, nella nuova società dei computer si sarebbe ritrovato analfabeta! E qualcuno aveva definito il linguaggio di programmazione BASIC come il «latino del futuro»!
Certo è che, i linguaggi di programmazione cosiddetti di “basso livello”, così come quelli strutturati (un po' meno il suddetto BASIC), quelli sì costringono (o aiutano, dipende dal punto di di vista), gli umani ad imparare, ad assumere un modo di pensare in qualche modo digitale.
E può non essere affatto, per la capacità di comprendere meglio il mondo in cui viviamo, una cattiva cosa.

Dalla "LOGO Art Gallery"
Il confronto tra il BASIC e LOGO può essere illuminante.
Prendiamo l'esempio di un programmino per disegnare un quadrato con il BASIC Microsoft MSX2, uno dei più potenti tra quelli di prima generazione (poi sono arrivati i BASIC anche strutturati, moderni, che sono un'altra cosa). Per brevità, alcune istruzioni complesse grafiche e sonore venivano sintetizzate con lettere dell'alfabeto.

10 SCREEN 2
20 LINE (50,50) - (100-100), 15, B
30 GOTO 30 
 
Dopo aver definito un modo di schermo grafico, date due coordinate, usando il colore 15 viene disegnato un quadrato (B sta per block, e vale solo all'interno dell'istruzione LINE). La riga 30, richiamando se stessa, serve a far rimanere il quadrato sullo schermo. In modo analogo, all'interno dell'istruzione DRAW (ma solo in questo "dialetto" BASIC) valgono la "U" di up, la "D" di down, la "R" di right , la "L" di left. Così, per disegnare un quadrato, si può anche scrivere:

10 INPUT A
20 SCREEN 8
30 DRAW "D=A;R=A;U=A;L=A;"
40 GOTO 40 
 
Dove i parametri di DRAW sono indicati sotto forma di una «stringa di caratteri» al cui interno è ammessa la variabile A (la dimensione del lato, racchiusa tra i segni «=» e «;»), che va immessa da tastiera. Il su, giù, destra e sinistra sono dal punto di vista, relativo ed «esterno», di chi guarda lo schermo.
Latino del futuro? Direi che, anche per quei tempi, ci voleva un notevole sforzo di ottimismo!

Nel LOGO il punto di vista è sempre e solo quello della “tartaruga” (il cursore sullo schermo). Per cui, indicando con il segno «:» la variabile «lato», per disegnare un quadrato si può scrivere un programma così, rigoroso, pulito, semplicissimo:

per quadrato :lato
ripeti 4 [avanti :lato destra 90]
fine

Direi che anche l'assoluto neofita, umanista irriducibile e tecnofobo, che leggendo le pur semplicissime tre o quattro linee di istruzioni BASIC qui sopra avrà probabilmente avuto una istintiva reazione di rigetto, di fronte a un programmino così, probabilmente qualcosa capisce, immagina e, trovando magari anche la cosa interessante, si ritrova come per magia a “pensare digitale”...

lunedì 3 settembre 2012

Pensiero digitale: il linguaggio LOGO 1

Tra i compiti delle vacanze che non sono riuscito a fare c'era anche, all'interno di una serie di progetti in via di definizione, tornare a giocare con alcune versioni del LOGO, il linguaggio di programmazione per bambini che ebbe un certo seguito nei lontani anni Ottanta, quando per “cultura digitale” non si intendeva ancora scaricare dal web temi e suonerie per il telefonino!
Problemi miei di “overbooking” a parte, in tempi in cui a una apparente corsa sfrenata in avanti della tecnologia delle comunicazioni corrisponde un reale irrigidimento tra gli umani della capacità di comunicare, confrontarsi, progettare insieme (cioè, non sappiamo usare bene gli strumenti digitali, ma nemmeno il nostro cervello, basta vedere come gestiamo a livello mondiale la crisi economica!) forse l'idea di provare definire alcuni punti fermi, possibilmente evitando la pressione del mercato, non sarebbe male.
Dalla "LOGO Art Gallery"
E il LOGO può rivelarsi uno spunto di riflessione interessante.
Sul mio blog “Bambini Oggi” ne avevo scritto, ma da circa un mese tutti i miei 944 articoli sotto la bandiera del network Blogosfere sono, per scelte redazionali, irraggiungibili. Così, inizio oggi proprio con il LOGO e recuperare alcune cose, tra quelle meno legate all'attualità, che credo mantengano ancora un certo interesse generale.

Avevo dunque, e ho ancora il LOGO su cartuccia che girava sugli "home computer" MSX. Più dinamico della versione monocromatica MS Dos che ebbe una certa circolazione nelle scuole italiane, gestiva 16 colori, 2 canali sonori e soprattutto il movimento. Comandava fino a 30 tartarughe che potevano assumere ognuna una forma diversa, e si potevano programmare i loro spostamenti e anche gli «scontri».
Trovato il dischetto dove avevo salvato i dati, controllo sul manuale le istruzioni primitive, in italiano, scritte per esteso o abbreviate (vt = via testo; rg = ripristina grafico, ecc.), attacco il vecchio home computer e, dato che esce con un segnale video PAL, come la TV, provo a registrare un po', fino a quell'antico abbozzo di videogioco. Ahi! Non va! La tartaruga nera doveva essere comandata dal joystick e attraversare schivando il traffico, e invece è andata «diritta al cuore»! Evidentemente avevo sbagliato qualcosa.


Il LOGO è un linguaggio di programmazione strutturato.
Ideato presso il mitico MIT da Seymour Papert, allievo di Piaget, ancora negli anni '60, con il fine insegnare la matematica e la geometria ai bambini come una lingua naturale, in origine permetteva di programmare i movimenti di una tartaruga robot. Poi è stato portato sui personal computer. A partire da una serie di istruzioni primitive che - a differenza di altri linguaggi anche popolari come il BASIC, non sono solo in inglese ma disponibili nelle diverse lingue - consente di definirne di sempre più complesse, che «incorporano» le precedenti e che il computer impara. Fino alla realizzazione di veri e propri programmi che, come quelli «veri» utilizzano routine che possono venire tranquillamente portate da un software a un altro.
Con il LOGO, i bambini e ai ragazzi non solo sperimentano la possibilità di «impartire ordini» alla macchina, ma anche sono costretti a pensare in modo preciso, ordinato e logico, davvero «digitale», se no il computer non capisce. Quando un comando è sconosciuto, o manca qualcosa, il LOGO te lo dice: «non so cosa fare con....», oppure «destra vuole più oggetti» (cioè, bisogna specificare di quanti gradi la tartaruga deve girare). E basta una istruzione approssimativa per produrre risultati assolutamente strampalati. Nel mio video, per esempio, quando lanciando il programmino «incidente» vedo che le tartarughe si inciampano l'una nell'altra, è perché probabilmente l'orientamento era rimasto condizionato da un comando precedente e così, per ottenere il risultato che voglio, dovrei aggiungere al programma una riga in cui gli si ricordi di ripristinare sempre la situazione iniziale: "rg = ripristina grafico"! In questo caso, per brevità, l'ho fatto da tastiera.