[...]dubito che si possa insegnare "bene" l'informatica.
[...]
la vastità degli argomenti è, ormai, quasi fuori controllo. Comincio a ritenere estremamente difficile padroneggiare --anche solo sufficientemente-- tutti i possibili ambiti applicativi. In questo senso --se ho capito il senso dell'osservazione-- concordo sul fatto che sia quasi impossibile insegnarla "tutta"...
Non ho seguito (anni '70) il corso di informatica della mia università, preferendo provare a usare (da solo) un mainframe senza sistema operativo, e a mio figlio, 52 anni meno di me, laurea triennale in tecnologie dell' ingegneria, curioso di informatica ed elettronica, sto consigliando di leggersi "IBM System 360 - Principles of Operation", per capire qualcosa / le basi di come funziona una macchina, perché a quel livello ci sono temi importanti da comprendere -- es. l'istruzione Test & Set -- mentre da lì in avanti le cose si sono fatte troppo tecniche da seguire.
Non ho studiato l'S/360... ma ho appena sfogliato quel manuale... che mi sembra molto orientato all'hardware e, quindi, al "linguaggio macchina" / "assembler".
Se questo è l'interesse di suo figlio, pero', gli suggerirei qualcosa di simile... ma leggermente piu' semplice e, soprattutto, estremamente piu' attuale: i microcontrollori. Personalmente partirei dagli AVR [1] che sono alla base degli Arduino [2] (Italiani... tra l'altro) e che possono essere programmati sia in modo relativamente semplice (ossia con ambienti di sviluppo "moderni" - tipo PlatformIO [3]), sia in modo un po' piu' "low-level", ossia come piace a lei :-), basandosi sul datasheet ufficiale [4]. Questo sarebbe, appunto, l'analogo del vecchio manuale S/360... con la differenza che gli skill su AVR (e microcontrollori...) sono spendibili, oggi, in tutta la IoT, a partire dall'automotive.
Esistono anche microcontrollori piu' sofisticati: 7/8 anni fa io
rimasi colpito dagli ESP8266 [5], di Espressif (Cinese), che
fornivano 80Mhz di clock e WiFi !!!! a ~5 euro!!!
E siccome sembrava poco... qualche anno dopo EspressIF ha lanciato
l'attuale ESP32 [6], che a meno di 10€ fornisce una architettura a
32 bit!
Venendo (io) da una laurea in Scienze dell'Informazione (e quindi NON ingegneria), ed avendo vissuto per oltre 20 anni quasi esclusivamente nel mondo del "software `alto`" (dove l'unita' di misura della RAM era il Megabyte, la frequenza di clock era il GigaHertz e dove l'applicazione piu' semplice necessitava di un intero sistema operativo con, sotto, un intero sistema di elaborazione da 80/90W di consumo....) lo scoprire che esistono oggetti che funzionano "raw" (senza sistema operativo), con ~30/60KB di memoria... è stato abbastanza scioccante. La cosa --tra l'altro-- mi ha anche ri-fasato sul concetto di "consumo energetico", che in precedenza era significativamente errato (verso l'alto): l'aver toccato con mano l'accanimento verso la minimizzazione dei consumi [7], mi ha fatto capire che anche con solo tre pile AA si possono fare un sacco di cose [8].
Il risultato di questa mia esperienza è difficile da
descrivere... ma certamente non posso non suggerirlo a tutti
coloro --specie se "ingegneri informatici"-- che mostrano passione
verso l'hardware ed il suo "controllo" ai livelli piu' bassi.
Mi viene anche in mente il mondo Nordic, con la relativa famiglia di chip BLE [9]. Parliamo di quei microcontrollori che stanno alla base di moltissimi smartwatch odierni (quelli il cui costo è inferiore ai 100/150 euro), programmabilissimi in modo "open" (il produttore mette a disposizione ir elativi datasheet e sdk) ma... rispetto agli smartwatch che stanno sul mercato, impossibili da modificare (perché design e software sono "chiusi").
Ultima citazione è quella di Kicad [10] un software open-source con il quale è possibile progettare dei PCB in modo da "ingegnerizzare" i propri esperimenti. Progettare con Kicad + Esportare il design in formato GERBER + spedire il GERBER a delle factory cinesi [11][12] e... attendere il corriere che porta il PCB stampato... è un'altra esperienza molto interessante, che consiglio senza esitazione.
Insomma, ripeto: se desidera che il focus sia il piu' vicino possibile all'hardware... allora, piu' che la strada S/360, suggerirei qualcosa che si possa realmente toccare con mano...
Probabilmente sono una specie di "relitto" (...o un vecchio saggio che tiene i contatti col passato che conta), ma avere oggi pezzi di software a portata di mano, e usarli per ottenere un risultato, senza sapere bene cosa c'è sotto, anche se utilissimo e pratico da un lato, non so quanto possa essere istruttivo dall'altro.
È tutto un altro problema. Diametralmente opposto a quello accennato sopra.
Sicuramente l'aver lavorato a dei "sensori di movimento" (microcontrollori) che acquisivano dati (accelerazioni e giroscopi) a 100 HZ, e quindi generavano DECINE DI MILIONI di campioni ad ogni "esperimento"... è stata un'esperienza interessante, e molto vicina all'hardware.
Ma allo stesso tempo, infilare quelle decine di milioni di dati
all'interno di un motore TimeScale [13] + costruire un front-end
web "moderno" (VueJS [14]) ed una API-REST di backend costruita
con Express [15], il tutto in modo tale da "zoommare" le decine di
milioni di punti al semplice "ruotare" della rotella del mouse,
con i dati che venivano selezionati e clusterizzati dal DB +
streammati dal backend al frontend + renderizzati sul frontend di
fatto real-time, utilizzando l'ennesima libreria javascript
(eCharts [16 - Cinese!])... è stato affascinante: nulla di neanche
lontanamente pensabile, gia solo 10 anni fa.
Chiaramente, una complessita' software che gia' solo la singola
libreria eCharts (...da sola! senza includere il resto), è ai
limiti dell'analizzabilita'.
Come dicevo: sono complessita' diverse, ma personalmente ritengo che l'una non sia migliore dell'altra (o viceversa). Sono solo "diverse". A me appassionano entrambe... ma in modo diverso, ripeto.
C'e qualcosa che rasenta la filosofia e/o la psicologia, oltre che la tecnica, nello spiegare a qualcuno come può approcciare la modellazione "concettuale" della realtà.
Se si spiega a qualcuno la modellazione a elementi finiti, quella è una tecnica, e di filosofia o psicologia non c'è traccia.
Ma quando si vede un problema affrontato da persone diverse in modi diversi -- con magari due modi fra i tanti che sembrano essere i migliori, e ciononostante "ortogonali" fra loro -- allora si vede che la "forma mentis" delle persona gioca un ruolo fondamentale nel come il problem solving viene affrontato (in generale prima, e poi nello specifico del tema informatico).
E la "forma mentis" né si insegna né si plasma in un corso informatico, necessariamente infarcito di tematiche tecniche (fra l'altro, sempre più complesse).
Non so se sono riuscito a spiegarmi...
Credo di si. Allo stesso tempo, spero anch'io di essere riuscito a descrivere cio' che volevo dire...
Piu' che "tecnico" e "complicato", per me è semplicemente troppo "vasto" (gia' solo in termini "tecnici"), e non è materialmente possibile padroneggiarlo tutto.In sintesi, il mondo informatico è troppo tecnico, e troppo (inutilmente? oggi?) complicato, perché "un" corso [...] possa sfiorare le tematiche concettuali che dell'informatica sono pilastri importanti.
Più importanti di quanto, a mio avviso, gli stessi informatici le ritengano.
Il problema serio, pero', a mio avviso... non è tanto l'interesse di suo figlio verso l'hardware e, quindi, l'indirizzo verso l'S/360 o l'AVR 328p.
Il problema *SERIO* è che i miei due figli, in eta' da scuola dell'obbligo, sono *COSTRETTI* ad utilizzare tecnologie proprietarie, lesive dei diritti che l'Europa vorrebbe garantire loro e, peggio, senza che io --loro padre-- possa realmente suggerire ai loro docenti, ai loro "presidi", o anche ai genitori dei loro compagni di classe, di utilizzare Matrix al posto di WhatsApp, oppure Mattermost al posto di Classroom, oppure PeerTube al posto di Youtube, oppure LibreOffice al posto di Google Docs, etc. etc. etc.
Francamente, se proprio dovessi indicare una priorita', sarebbe
propro quest'ultima... e forse è in questo senso che questo thread
è stato generato....
L'S/360 o l'AVR o l'ESP32, in confronto, sono una passeggiata...
Saluti,
DV
[1] https://en.wikipedia.org/wiki/AVR_microcontrollers
[2] https://www.arduino.cc/
[3] https://platformio.org/
[4]
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
[5] https://en.wikipedia.org/wiki/ESP8266
[6] https://en.wikipedia.org/wiki/ESP32
[7] http://www.gammon.com.au/power
[8] https://www.youtube.com/watch?v=IYuYTfO6iOs
[9]
https://www.nordicsemi.com/Products/Wireless/Bluetooth-Low-Energy
[10] https://www.kicad.org/
[11] https://www.pcbway.com/
[12] https://jlcpcb.com/
[13] https://github.com/timescale/timescaledb -
https://www.timescale.com/
[14] https://vuejs.org/
[15] https://expressjs.com/
[16] https://echarts.apache.org/en/index.html
--
Damiano Verzulli
e-mail: damiano@verzulli.it
---
possible?ok:while(!possible){open_mindedness++}
---
"...I realized that free software would not generate the kind of
income that was needed. Maybe in USA or Europe, you may be able
to get a well paying job as a free software developer, but not
here [in Africa]..." -- Guido Sohne - 1973-2008
http://ole.kenic.or.ke/pipermail/skunkworks/2008-April/005989.html