Grazie a te Sonar, in queste settimane caldissime i video escono un po' più a rilento, ma sto cercando di pubblicare con continuità. Il ciclo di lezioni sulla programmazione del computer è abbastanza lungo ma vale la pena seguirlo anche solo per capire quali siano i meccanismi che determinano il funzionamento dei computer
Grazie Gabriele, quando mi chiedono di insegnargli a programmare il computer, parto sempre dalla architettura hardware. Un po' come a scuola guida ti fanno vedere cosa c'è dentro il motore, se non sai cosa c'è dentro a un computer è difficile astrarre le procedure e descrivere gli algoritmi.
Veramente un bel video, stavo impazzendo nel tentativo di capire bene come funzionasse la CPU e che ruolo avessero i BUS. È stato un miracolo trovare un video così esaustivo, grandissima idea quella di affiancare schemi/rappresentazioni grafiche alla spiegazione teorica, aiuta enormemente la comprensione. Una sola domanda: ma per le notazioni non dovrebbe essere il contrario? Ovvero, la notazione BIG-ENDIAN non dovrebbe far si che venga memorizzato prima il byte più significativo, e dunque 12, alla locazione di memoria inferiore?
Per essere ancora più esplicativi: In una RAM con bus dati a 8 bit, ogni indirizzo di memoria può contenere 8 bit (1 byte) di dati. Quindi, per memorizzare il numero 0x12345678, occorrono quattro indirizzi di memoria consecutivi, ognuno contenente 8 bit del numero. Il modo in cui i byte vengono memorizzati dipenderà dalla scelta dell'architettura del processore. Ad esempio, in un'architettura little-endian, il byte meno significativo (78 in questo caso) verrà memorizzato all'indirizzo di memoria più basso, seguito dai byte successivi nell'ordine inverso. In questo caso, il numero sarebbe memorizzato come: Indirizzo di memoria | Contenuto 0x00000000 | 0x78 0x00000001 | 0x56 0x00000002 | 0x34 0x00000003 | 0x12 Invece, in un'architettura big-endian, il byte più significativo (12 in questo caso) verrà memorizzato all'indirizzo di memoria più basso, seguito dai byte successivi nell'ordine inverso. In questo caso, il numero sarebbe memorizzato come: Indirizzo di memoria | Contenuto 0x00000000 | 0x12 0x00000001 | 0x34 0x00000002 | 0x56 0x00000003 | 0x78 Quindi, è esattamente corretto quello che dici.
Grazie per il tuo riscontro, se serve qualche ulteriore approfondimento sulla CPU o sulla architettura di Von Neumann chiedi pure, ci sono tante cose ancora da raccontare
tutto molto chiaro, non capisco una casa, quando parli di bus dati a 16/32/64 bit vuol dire che ci sono 16/32/64 "fili/collegamenti/Pin" e quindi possono reperire 16/32/64 bit alla volta? grazie
Bravo, proprio così, esattamente 👍🏻 Il numero di bit di un bus dati esprime la potenza di calcolo, più bit ci sono nel bus dati e maggiore sarà il numero di operazioni al secondo che la CPU sarà in grado di calcolare. Il numero di bit del bus indirizzi invece esprime la capacità di memorizzazione, più bit ci sono nel bus indirizzi e maggiore sarà il numero di celle di memoria allocabili (senza bisogno di impaginare... magari un giorno vediamo anche questo cosa vuol dire questa cosa delle pagine)
@@fremsoft ok, quindi quello che non capisco è, se ho una cpu a 32 bit, vuoil dire ho che ho 32 pin di entrata giusto? ok, a questo punto non ho 32 bus? cioè ogni bus non può trasportare solo un bit alla volta e quindi un bus per bit! oppure un bus è anche largo? qualcosa mi sfugge... il procidemnte se ben ho capito è: la ram prende in carica il programma da fare, poi la CU prende le ijformzino della RAM e decide cosa farne.. mentre i calcoli li fa la ALU... il risulato lo mette nei registri e poi o li ritorna alla RAM per farne quel che vuole o lo manda ai diversi output tipio stampante ecc? è corretto il funzionamento dei dati? e il bus a questo punto, serve per potrare questi bit e quindi un bit per ogni bus? grazie
@@RenatoCaruso sostanzialmente sì, penso che tu abbia capito bene. In una CPU a 32 bit il bus dati è costituito da 32 fili di rame (un filo per ogni bit). Il Bus indirizzi può avere anche un numero di bit diverso dal Bus dati.
Ciao, bel video e molto interessante. Una domanda però te la voglio porre. Secondo te se è impossibile ricreare il funzionamento di una tastiera per PC ? Questa cosa come è stata realizzabile invece da grandi studiosi come Babbage, Von Newmann e Turing ? Avevano delle genialità di invenzione rispetto a oggi ? Io non intendo solo assemblare i componenti ma in un certo senso riuscirla a programmare come per esempio premere un tasto e visualizzare il suo carattere sullo schermo e precisamente all'interno della videata di un editor di testo come ad esempio il Blocco Note di Windows. So che è complesso ma c'è comunque un modo per intuire questa cosa ?
La domanda è la seguente: secondo la sua esperienza, uno studioso come quelli che le ho citato(Babbage, Von Newmann, Turing ) come avrebbe minimamente immaginato di inventare una cosa del genere quando in quei tempi non credo ci sia stata così tanta istruzione come quella che oggi c'è perché come ovviamente sappiamo, oggi c'è evoluzione nelle discipline scientifiche e nei tempi antichi non credo proprio ce ne sia stata . Allora le domande sono due, o erano prodigi come in effetti lo erano oppure non si può dare una risposta certa e dimostrabile per tutte le opere che sono state fatte. Lo so è abbastanza difficile spiegare cosa che per me è l'inspiegabile ma dovrà esserci pure un modo che deve mostrare l'autenticità dei fatti accaduti . Tutto qui e grazie mille
@@claudiosilvestri8485 premesso che non conosco la risposta, in generale le innovazioni avvengono per approssimazioni successive. Per esempio non credo che l'inventore del cavallo vapore si sarebbe mai immaginato che venisse realizzata la moka per il caffè... A volte ci sono visionari come Jules Verne che riescono a scrivere cose che gli scienziati e gli inventori riescono a mettere in pratica solo secoli dopo. Una cosa è certa, ai loro tempi si studiava in modo più intenso, non c'erano le notifiche sul cellulare a disturbare, e neanche la Maria de Filippi, e quando si mettevano a pensare, riuscivano davvero a entrare nel flusso! Avevano modo di vedere il cielo senza inquinamento luminoso, e riuscivano ad apprezzare meglio di noi le meraviglie dell'universo anche senza telescopio. Non avevano niente di quello che abbiamo oggi, ma qualcuno è stato in grado di immaginarsi cose che oggi usiamo quotidianamente senza nemmeno pensare a come si poteva fare un tempo quando quel "gadget" non esisteva! Il processo creativo è molto più facile quando uno è un esperto in una certa materia, ne conosce le problematiche intimamente e spesso si cerca di riprodurre in un modo più tecnologico, qualcosa che già si conosce. L'invenzione della tastiera, sicuramente è ispirata dalla macchina da scrivere... Ci sono poi concept completamente da fantascienza come il telefono cellulare senza fili o le auto che si guidano da sole, che sono il frutto di menti assolutamente geniali... Il localizzatore che usava l'ispettore Zenigata per intercettare la machina di Lupin III era un gadget di pura fantasia al tempo in cui guardavo i cartoni animati da bambino, ma oggi ognuno di noi può installare l'app del cerca persone o cerca oggetti con radar, sul proprio smartphone...
La logica booleana che è la base della macchina di Von Neumann, fu inventata quasi un secolo prima dell'invenzione del computer. Fourier era un matematico che ha inventato la sua teoria più di cento anni prima della radio FM... che grazie alla trasformata di Fourier riesce a modulare tantissime stazioni in un solo mezzo: "l'etere"
Attenzione Ciccio, la CPU non ha una volontà, ha un circuito elettronico che fa proprio quelle funzioni. Quando inizierò a parlare di elettronica e di porte logiche tutto ti sarà più chiaro, era inopportuno parlarne in questa sede, avrei messo troppa carne al fuoco. Se invece ti riferisci al processo di caricamento di un programma eseguibile come un gioco o un programma qualunque, considera il processo di caricamento che avviene quando accendi il tuo computer. Per prima cosa la CPU configura le risorse hardware mediante un programma chiamato in gergo firmware, scrtto nella BIOS: una memoria non volatile installata sulla scheda madre. Dopodiché viene caricato il sistema operativo. Il sistema operativo è un programma che ha il compito di avviare gli altri programmi. Quando fai click su una icona per avviare un programma, di fatto stai usando il programma che si chiama sistema operativo ed è quello che chiede alla CPU di caricare un programma ad un certo indirizzo di memoria. Dimmi, ho risposto alla tua domanda?
Grazie per il tuo riscontro, la musica di accompagnamento è una scelta editoriale, ad alcuni risulta fastidiosa, purtroppo non si può piacere a tutti. Sicuramente su RUclips troverai anche altri canali senza musica, buona navigazione
Ciao Lorenzo, credo che tu voglia dire: «si scrive Boole e NON Bool». Hai perfettamente ragione, come in ogni video inserisco almeno un errore 😀 (scherzo) un giorno indirò un concorso e premierò chi mi trova più errori sul canale ... ah ah ah! Credo che il mio lapsus derivi dal fatto che in molti linguaggi di programmazione il tipo di variabile per grandezze binarie (dette anche booleane) che possono assumere solo due valori "Vero" o "Falso" vengono dichiarate con una istruzione chiamata appunto "bool". Grazie per il tuo contributo
Grazie per il tuo commento. Ti invito ad aggiungere valore a questo video, scrivendo in un commento tutto quello che manca sulla macchina di Von Neumann che ho evitato di raccontare che ritieni importante
Apprezzato davvero molto un bel ripasso preesame leggero e conciso ma pur sempre completo.
Grazie mille, a volte ho paura di essere troppo prolisso!
Una spiegazione molto chiara e di facile comprensione...Grazie mille
Grazie a te Sonar, in queste settimane caldissime i video escono un po' più a rilento, ma sto cercando di pubblicare con continuità. Il ciclo di lezioni sulla programmazione del computer è abbastanza lungo ma vale la pena seguirlo anche solo per capire quali siano i meccanismi che determinano il funzionamento dei computer
@@fremsoftplp
grande manuuu
Fantastico!
Fammi poi sapere come è andata! 😄
@@fremsoft cosi cosi ho preso 6
@@tartaglionenazionale1486 bravo, il voto è solo un numero come tanti altri, quel che conta è se hai capito e soprattutto se ti sei divertito
Spiegazione chiara e ordinata...magari avere un prof così a scuola
Grazie Gabriele, quando mi chiedono di insegnargli a programmare il computer, parto sempre dalla architettura hardware. Un po' come a scuola guida ti fanno vedere cosa c'è dentro il motore, se non sai cosa c'è dentro a un computer è difficile astrarre le procedure e descrivere gli algoritmi.
Veramente bravo!!!!
Grazie Massimo
Veramente un bel video, stavo impazzendo nel tentativo di capire bene come funzionasse la CPU e che ruolo avessero i BUS. È stato un miracolo trovare un video così esaustivo, grandissima idea quella di affiancare schemi/rappresentazioni grafiche alla spiegazione teorica, aiuta enormemente la comprensione. Una sola domanda: ma per le notazioni non dovrebbe essere il contrario? Ovvero, la notazione BIG-ENDIAN non dovrebbe far si che venga memorizzato prima il byte più significativo, e dunque 12, alla locazione di memoria inferiore?
Grazie per il tuo commento. Big endian significa che la parte alta MSB è scritta dopo, e la parte bassa LSB è scritta prima
Per essere ancora più esplicativi:
In una RAM con bus dati a 8 bit, ogni indirizzo di memoria può contenere 8 bit (1 byte) di dati.
Quindi, per memorizzare il numero 0x12345678, occorrono quattro indirizzi di memoria consecutivi, ognuno contenente 8 bit del numero.
Il modo in cui i byte vengono memorizzati dipenderà dalla scelta dell'architettura del processore.
Ad esempio, in un'architettura little-endian, il byte meno significativo (78 in questo caso) verrà memorizzato all'indirizzo di memoria più basso, seguito dai byte successivi nell'ordine inverso. In questo caso, il numero sarebbe memorizzato come:
Indirizzo di memoria | Contenuto
0x00000000 | 0x78
0x00000001 | 0x56
0x00000002 | 0x34
0x00000003 | 0x12
Invece, in un'architettura big-endian, il byte più significativo (12 in questo caso) verrà memorizzato all'indirizzo di memoria più basso, seguito dai byte successivi nell'ordine inverso. In questo caso, il numero sarebbe memorizzato come:
Indirizzo di memoria | Contenuto
0x00000000 | 0x12
0x00000001 | 0x34
0x00000002 | 0x56
0x00000003 | 0x78
Quindi, è esattamente corretto quello che dici.
@@fremsoft Grazie mille, un lavorone anche per questo commento. Davvero grazie, anche per la celerità nel rispondere.
Ovviamente iscritto!👏
@@ChristianCitarella ho un po' barato per il commento mi son fatto aiutare da ChatGPT, ormai è diventato il mio assistente personale 😄
Video utilissimo, grazie.
Grazie per il tuo riscontro, se serve qualche ulteriore approfondimento sulla CPU o sulla architettura di Von Neumann chiedi pure, ci sono tante cose ancora da raccontare
tutto molto chiaro, non capisco una casa, quando parli di bus dati a 16/32/64 bit vuol dire che ci sono 16/32/64 "fili/collegamenti/Pin" e quindi possono reperire 16/32/64 bit alla volta? grazie
Bravo, proprio così, esattamente 👍🏻
Il numero di bit di un bus dati esprime la potenza di calcolo, più bit ci sono nel bus dati e maggiore sarà il numero di operazioni al secondo che la CPU sarà in grado di calcolare.
Il numero di bit del bus indirizzi invece esprime la capacità di memorizzazione, più bit ci sono nel bus indirizzi e maggiore sarà il numero di celle di memoria allocabili (senza bisogno di impaginare... magari un giorno vediamo anche questo cosa vuol dire questa cosa delle pagine)
@@fremsoft ok, quindi quello che non capisco è, se ho una cpu a 32 bit, vuoil dire ho che ho 32 pin di entrata giusto? ok, a questo punto non ho 32 bus? cioè ogni bus non può trasportare solo un bit alla volta e quindi un bus per bit! oppure un bus è anche largo? qualcosa mi sfugge... il procidemnte se ben ho capito è: la ram prende in carica il programma da fare, poi la CU prende le ijformzino della RAM e decide cosa farne.. mentre i calcoli li fa la ALU... il risulato lo mette nei registri e poi o li ritorna alla RAM per farne quel che vuole o lo manda ai diversi output tipio stampante ecc? è corretto il funzionamento dei dati? e il bus a questo punto, serve per potrare questi bit e quindi un bit per ogni bus? grazie
@@RenatoCaruso sostanzialmente sì, penso che tu abbia capito bene. In una CPU a 32 bit il bus dati è costituito da 32 fili di rame (un filo per ogni bit). Il Bus indirizzi può avere anche un numero di bit diverso dal Bus dati.
Io che sono qua prima dell’interrogazione
Ciao, bel video e molto interessante. Una domanda però te la voglio porre. Secondo te se è impossibile ricreare il funzionamento di una tastiera per PC ? Questa cosa come è stata realizzabile invece da grandi studiosi come Babbage, Von Newmann e Turing ? Avevano delle genialità di invenzione rispetto a oggi ? Io non intendo solo assemblare i componenti ma in un certo senso riuscirla a programmare come per esempio premere un tasto e visualizzare il suo carattere sullo schermo e precisamente all'interno della videata di un editor di testo come ad esempio il Blocco Note di Windows. So che è complesso ma c'è comunque un modo per intuire questa cosa ?
Ciao Claudio, temo di non aver capito la domanda, saresti così gentile da rifarmela?
La domanda è la seguente:
secondo la sua esperienza, uno studioso come quelli che le ho citato(Babbage, Von Newmann, Turing ) come avrebbe minimamente immaginato di inventare una cosa del genere quando in quei tempi non credo ci sia stata così tanta istruzione come quella che oggi c'è perché come ovviamente sappiamo, oggi c'è evoluzione nelle discipline scientifiche e nei tempi antichi non credo proprio ce ne sia stata . Allora le domande sono due, o erano prodigi come in effetti lo erano oppure non si può dare una risposta certa e dimostrabile per tutte le opere che sono state fatte. Lo so è abbastanza difficile spiegare cosa che per me è l'inspiegabile ma dovrà esserci pure un modo che deve mostrare l'autenticità dei fatti accaduti . Tutto qui e grazie mille
@@claudiosilvestri8485 premesso che non conosco la risposta, in generale le innovazioni avvengono per approssimazioni successive.
Per esempio non credo che l'inventore del cavallo vapore si sarebbe mai immaginato che venisse realizzata la moka per il caffè...
A volte ci sono visionari come Jules Verne che riescono a scrivere cose che gli scienziati e gli inventori riescono a mettere in pratica solo secoli dopo.
Una cosa è certa, ai loro tempi si studiava in modo più intenso, non c'erano le notifiche sul cellulare a disturbare, e neanche la Maria de Filippi, e quando si mettevano a pensare, riuscivano davvero a entrare nel flusso!
Avevano modo di vedere il cielo senza inquinamento luminoso, e riuscivano ad apprezzare meglio di noi le meraviglie dell'universo anche senza telescopio.
Non avevano niente di quello che abbiamo oggi, ma qualcuno è stato in grado di immaginarsi cose che oggi usiamo quotidianamente senza nemmeno pensare a come si poteva fare un tempo quando quel "gadget" non esisteva!
Il processo creativo è molto più facile quando uno è un esperto in una certa materia, ne conosce le problematiche intimamente e spesso si cerca di riprodurre in un modo più tecnologico, qualcosa che già si conosce.
L'invenzione della tastiera, sicuramente è ispirata dalla macchina da scrivere...
Ci sono poi concept completamente da fantascienza come il telefono cellulare senza fili o le auto che si guidano da sole, che sono il frutto di menti assolutamente geniali...
Il localizzatore che usava l'ispettore Zenigata per intercettare la machina di Lupin III era un gadget di pura fantasia al tempo in cui guardavo i cartoni animati da bambino, ma oggi ognuno di noi può installare l'app del cerca persone o cerca oggetti con radar, sul proprio smartphone...
La logica booleana che è la base della macchina di Von Neumann, fu inventata quasi un secolo prima dell'invenzione del computer.
Fourier era un matematico che ha inventato la sua teoria più di cento anni prima della radio FM... che grazie alla trasformata di Fourier riesce a modulare tantissime stazioni in un solo mezzo: "l'etere"
Io non ho capito solo una cosa: la CPU come fa di sua spontanea volontà a caricare ed eseguire un programma ad un determinato indirizzo di memoria??
Attenzione Ciccio, la CPU non ha una volontà, ha un circuito elettronico che fa proprio quelle funzioni.
Quando inizierò a parlare di elettronica e di porte logiche tutto ti sarà più chiaro, era inopportuno parlarne in questa sede, avrei messo troppa carne al fuoco.
Se invece ti riferisci al processo di caricamento di un programma eseguibile come un gioco o un programma qualunque, considera il processo di caricamento che avviene quando accendi il tuo computer.
Per prima cosa la CPU configura le risorse hardware mediante un programma chiamato in gergo firmware, scrtto nella BIOS: una memoria non volatile installata sulla scheda madre.
Dopodiché viene caricato il sistema operativo.
Il sistema operativo è un programma che ha il compito di avviare gli altri programmi.
Quando fai click su una icona per avviare un programma, di fatto stai usando il programma che si chiama sistema operativo ed è quello che chiede alla CPU di caricare un programma ad un certo indirizzo di memoria.
Dimmi, ho risposto alla tua domanda?
@@fremsoft Sì certo, aspetto il suo video riguardo Circuiti Elettronici e Porte Logiche!
Hai descritto il ciclo di fetch 😉
Grazie Rotokas, mi ero dimenticato di dirlo nel video, nella prima parte è descritto proprio il Ciclo di Fetch in una macchina di Von Neumann
Serial killer John
non capisco perchè la musica che disturba
Grazie per il tuo riscontro, la musica di accompagnamento è una scelta editoriale, ad alcuni risulta fastidiosa, purtroppo non si può piacere a tutti. Sicuramente su RUclips troverai anche altri canali senza musica, buona navigazione
Tutto molto chiaro: una cosa, si scrive Boole e non Bool.
Ciao Lorenzo, credo che tu voglia dire: «si scrive Boole e NON Bool». Hai perfettamente ragione, come in ogni video inserisco almeno un errore 😀 (scherzo) un giorno indirò un concorso e premierò chi mi trova più errori sul canale ... ah ah ah!
Credo che il mio lapsus derivi dal fatto che in molti linguaggi di programmazione il tipo di variabile per grandezze binarie (dette anche booleane) che possono assumere solo due valori "Vero" o "Falso" vengono dichiarate con una istruzione chiamata appunto "bool".
Grazie per il tuo contributo
@@fremsoft Si grazie :) Intendevo quello. Comunque complimenti per i video :)
Weee sei bolognese
Ma non hai detto quasi niente di com'è l'architettura della.cpu o macchina di von Neumann
Grazie per il tuo commento. Ti invito ad aggiungere valore a questo video, scrivendo in un commento tutto quello che manca sulla macchina di Von Neumann che ho evitato di raccontare che ritieni importante