Passa ai contenuti principali

Che Lingua Parlano i Computer?

 


 

 

Vi siete mai chiesti come facciano i computer a decifrare quello che digitiamo sulla tastiera, i movimenti del mouse o i tocchi delle nostre dita sullo schermo? Per me è sempre stata magia pura vedere che tutti i nostri device possano quasi percepire ciò che gli diciamo. Andiamo a vedere insieme come questo fenomeno sia possibile!

Salve Feelers e bentornati sul mio Blog! Io sono Lorenzo e questo è il primo articolo del mio nuovo format Feel Geek, dove andremo ad approfondire le varie sfaccettature dell'Informatica e della Tecnologia. Oggi parleremo della lingua dei dispositivi elettronici! Restate con me fino alla fine, perché ne vedremo delle belle, ma prima di cominciare, lasciate che vi inviti ad Iscrivervi al Canale, attivando la campanella degli avvisi e di lasciare un bel mi piace per supportarmi, ma non perdiamoci in chiacchiere e diamoci dentro!



Una delle cose che ho imparato dal mio percorso di studi, è che ogni materia è un viaggio attraverso una sfaccettatura dell'Informatica. Nel caso specifico, ho imparato che ogni implementazione, ogni mattoncino di sapere, veniva sapientemente creato e posizionato al punto giusto, dopo aver risposto alle domande giuste. Di fatti, i computer hanno una storia complessa, ricca di colpi di scena, che ha origine nel lontano XVI Secolo, con Pascal. Di fatti, Pascal, creò la prima calcolatrice meccanica, in grado di eseguire somme e sottrazioni. Poi venne il tempo di Leibniz, che creò una macchina in grado di eseguire moltiplicazioni e divisioni e via discorrendo fino ad arrivare al padre dell'Informatica moderna: Alan Turing. A questo proposito mi sento di consigliare un film stupendo ispirato a lui: The Imitation Game. Alan Turing infatti fu il primo essere umano a riuscire ad inventare una macchina a valvole, che riuscisse ad eseguire degli algoritmi di decifrazione: COLOSSUS. Creato per decifrare ENIGMA, la macchina di comunicazione tedesca durante la Seconda Guerra Mondiale. Dopo Turing però ci fu un altro uomo in grado di rivoluzionare il pensiero informatico: Von Neumann, che introdusse l'idea di Programma Memorizzato e di programmi come dati. Successivamente la storia prosegue, con l'invenzione dei transistor, dei circuiti integrati, ecc ecc. Tuttavia l'invenzione probabilmente più strabiliante, che ci inizia ad indirizzare verso la decodifica dei dati dei computer è stata quella dei Transistor. Tra poco vedremo perché. Ma la domanda è: Come si programma un insieme di Transistor?


Un Programma è un insieme di istruzioni in sequenza che descrivono come portare a termine un certo compito. Ma una moderna CPU capisce forse il linguaggio Java? E se non lo fa, come funziona? Perché noi esseri umani usiamo linguaggi come Java, Rust, Python e non quello dalle singole componenti?


La verità è che dobbiamo capire che, anche se un computer è una macchina programmabile, non è direttamente utilizzabile dagli utenti, in quanto richiederebbe una conoscenza profonda dell'organizzazione fisica dello specifico device e del suo linguaggio macchina. Ogni macchina avrebbe quindi differenti caratteristiche, e il linguaggio macchina è estremamente complicato e di difficile gestione. Cioè?


I programmi vengono caicati in memoria sotto forma di di bit, il cui valore è un numero in base 2, ovvero un numero binario. Il Sistema Binario, è analogo a quello Decimale che tutti conosciamo (sarebbe quello usato nella matematica classica semplice). La differenza è che i numeri binari sono tutti multipli di 2, e vengono espressi come 2 elevato ad un numero. Per poter decifrare un numero binario memorizzato, devi disporre di uno strumento che effettua una rappresentazione Simbolica dei codici numerici delle istruzioni macchina: l'Assembler.


Quindi abbiamo compreso che c'è una sorta di sistema di traduzione, dal linguaggio di alto livello, come Java ad esempio, al linguaggio macchina, fino alle istruzioni dei singoli circuiti. Immaginiamo quindi di avere un computer suddiviso in livelli, che vanno dall'Utente fino ai circuiti della macchina, e che un'interazione dell'utente, debba attraversare una serie di "traduzioni" dal livello software fino ai circuiti. Questo perché un input deve essere gestito dal software, dal sistema operativo che deve disporre delle risorse adeguate, fino ad essere interpretato nel linguaggio macchina che si traduce nelle connessioni elettriche dei vari circuiti.


Come si passa da un livello ad un altro? Attraverso: Compilazione ed Interpretazione. L'Interpretazione è una traduzione di quello che si legge, che avviene nel momento stesso della lettura, in contemporanea. Esattamente come quando un interprete traduce quasi in tempo reale, cosa ci sta dicendo un'altra persona in un'altra lingua che non sia la nostra. La Compilazione, è una traduzione che avviene dopo la lettura di tutte le istruzioni, un po' come quando si traduce una missiva. Si legge il contenuto, si capisce e si traduce. Capirete che con questi due potenti strumenti, non è complicato riuscire a passare da un livello all'altro, anche se il sistema resta ancora complesso.


Chi o cosa decide quando compilare e quando interpretare? Il linguaggio usato. Avrete sicuramente sentito dire che C è un linguaggio compilato o che Javascript sia interpretato. Bene, il significato è quello che vi ho appena esposto. Tuttavia, c'è da comprendere che i circuiti non capiscono i linguaggi, le interpretazioni, le compilazioni o i numeri stessi. Non sono esseri pensanti in grado di comprendere i vari simboli, allora quale lingua parlano? Non abbiamo ancora risposto, ma ci stiamo avvicinando alla soluzione dell'enigma.


Abbiamo introdotto un elemento importante prima, quello dei numeri binari, o in base 2. I numeri binari, sono fondamentali in quanto l'entità minima di informazione all'interno di un elaboratore elettronico, si chiama bit = Binary Digit, Cifra Binaria. Mediante un bit possiamo distinguere 2 tipi di informazioni: 0 e 1. Tutte le informazioni, anche le più complesse sono rappresentate mediante sequenze di soli 1 e 0, ovvero in forma binaria o digitale. Però bisogna associare biunivocamente ad ogni informazione "elementare", caratteri, numeri, immagini, sequenze audio, ecc. Una sequenza binaria che la rappresenti. Per fare ciò, saper distinguere 2 diverse informazioni non basta. Le diverse configurazioni di n bit ci permette di individuare 2 alla n informazioni distinte. Una sequenza di 8 bit è definita Byte. Ed esattamente come per ogni sistema di misura, 2 alla 10 byte creano un KiloByte, 2 alla 20 byte un MegaByte, ecc ecc.


Abbiamo quindi capito che gli scienziati, avevano un sistema di codifica delle informazioni in grado di rappresentare potenzialmente qualsiasi tipo di informazioni, ma come implementarlo a livello architetturale? Come si fa a far comprendere i numeri ad un computer? Per lui non sono che simboli strani e assurdi, totalmente incomprensibili! Inoltre i numeri sono infiniti, le memorie dei computer no. Come fare quindi? Si usa una codifica. Per i calclatori la quantità di memoria dedicata alla memorizzazione di un numero è fissata. Si possono rappresentare numeri con una quantità fissata di cifre, questo comporta una certa precisione, anche per le operazioni elementari.


Ricapitolando: siamo in grado di rappresentare un numero gigantesco di informazioni tramite la codifica binaria, con una certa precisione, che però è abbastanza grande da permetterci di immagazzinare qualunque dato ci serva. Senza entrare troppo nella matematica del caso, che sarebbe anche alquanto noiosa, riusciamo a rappresentare quantità esponenziali di dati. Ci servirebbe qualcosa per trasmettere 2 alla n informazioni ai circuiti. Qualcosa come una lampadina, acceso-spento. Avete mai pensato al fatto che una lampadina semplicissima potesse rappresentare egregiamente le due informazioni che noi stiamo accatastando in sequenza? Acceso vuol dire 1, spento vuol dire 0. Sembra incredibile che sia così semplice eppure è la verità, basterebbero delle lampadine minuscole... E noi le abbiamo queste lampadine? Si! Sono i transistor!


Un transistor è un semiconduttore usato nell'elettronica analogica. Il fisico e ingegnere Julius Edgar Lilienfeld progettò il primo transistor in Canada nel 1925, descrivendo un dispositivo simile all'attuale transistor ad effetto di campo, ma fu brevettato nel 1934 dall'inventore tedesco Oskar Heil. Abbiamo il nostro interruttore acceso-spento. Messi in sequenza 8 transistor possono rappresentare un byte di informazione, capite dove voglio arrivare? Sembra quasi una magia, bisogna solo insegnare all'elaboratore che spento è 0 e acceso è 1, a quel punto il gioco è fatto! Ma un momento... Non ci stiamo scordando qualcosa? E le lettere? Le immagini? Gli Audio? Anche loro vengono tradotti in numeri? Certo che sì! Tutte le informazioni digitali vengono tradotte ed infine rappresentate come sequenze binarie, in modo da essere date in pasto ai circuiti e permettere l'elaborazione dei dati! Ovviamente ogni informazione viene tradotta in modo diverso, tuttavia, non è questo il video in cui ne parleremo. Abbiamo finalmente ottenuto un ponte che colleghi l'alto livello, quello utente, quello del programmatore, con il basso livello, quello della macchina, quello dei circuiti. Abbiamo viaggiato parlando lingue diverse, compilando ed interpretando le nostre istruzioni, sino a diventare dei numeri binari. La matematica ha sciolto il nostro enigma iniziale in un modo sorprendente e magico, che ci ha trascinato nella complessità e nella storia degli elaboratori elettronici, lasciando, almeno me, senza fiato.


Spero che questo Viaggio nel mondo dell'Informatica sia stato di vostro gradimento! Fatemi sapere cosa ne pensate con un commento. Se il video vi è piaciuto, condividetelo con i vostri amici! Se volete rimanere in contatto con me, vi invito a seguirmi sui vari social, trovate i link in descrizione. Vi ricordo inoltre di iscrivervi al mio Canale Telegram per ricevere la mia "Ogni Tanto Letter" con le news più interessanti del settore informatico. Se avete dubbi o consigli o se volete suggerirmi il tema del mio prossimo video, scrivetelo sempre qui sotto nei commenti! Io vi ringrazio, e noi, ci vediamo alla prossima!

Post popolari in questo blog

Recensione Endless OS - La Mia Personale Esperienza!

  Durante i mesi di Luglio e Agosto, mi avete spesso chiesto mediante i commenti, di cosa pensassi di Endless OS, la Distro Linux Debian-based. Al tempo non la conoscevo molto bene e pertanto, a parte sapere che fosse una derivata Debian, non potevo esprimere alcuna considerazione nei suoi riguardi. Ecco perché incuriosito dalla cosa, ho cominciato a cercare delle informazioni sul suo conto (per lo più in inglese visto che non è ancora una Distro molto popolare in Italia) ed infine mi sono deciso a provarla. Eccomi quindi a mostrarvi quella che è la mia personalissima impressione di Endless OS! Salve a tutti Amici del Web e bentornati sul mio Blog! Io sono Lorenzo, e oggi sono qui per mostrarvi la mia personale impressione su Endless OS! Mi avete chiesto in tantissimi nei commenti cosa ne pensassi e quindi, dopo un'accurata preparazione, eccomi qui a mostrarvi cosa ne penso. Per comodità, la recensione sarà effettuata in blocchi, pertanto vi invito a leggere l'articolo fino all...

KeyNote Apple: iPhone 13 e tutte le novità di casa Cupertino!

Ci eravamo lasciati, nel Finale di Stagione , con un tiepido ed abbastanza grigio WWDC 2021 di casa Apple, che non portava grandi novità degne di nota, se non alcuni aggiornamenti a piè di pagina dei prodotti che già conoscevamo. Anche per questo ho seguito la KeyNote del 14 Settembre 2021, perché non riesco a credere che questa azienda rimanga nel torpore generale e nell'indolenzimento più puro. Ma la vera domanda è: Mi Avrà Convinto? Andiamo a scoprirlo insieme nel corso di questo articolo! Salve Feelers, e Bentornati sul mio Blog! Io sono Lorenzo e in questo articolo andremo a sviscerare l'Evento Apple del 15 Settembre, che promette di rivoluzionare l'industria tecnologica. Restate con me fino alla fine perché ci sono tante cose di cui discutere, ma prima di cominciare, vi invito ad iscrivervi anche al mio Canale YouTube, per non perdere tutti i miei contenuti! Ma non perdiamoci in chiacchiere, e diamoci dentro! L'evento di casa Cupertino è stato annunciato e present...

Come Essere sempre Organizzati con Trello! Software Per la Produttività Digitale #4

  Viviamo nell'era della frenesia, della massima organizzazione, e saper organizzare il proprio tempo per poter massimizzare la produttività personale è diventato un requisito fondamentale per chiunque. Organizzarsi nel modo giusto e con criterio è un mantra persino per molte aziende e requisito fondamentale persino per le assunzioni lavorative. Ecco perché con la mia Rubrica Software per la Produttività Digitale, mi sono posto come missione quella di aiutarvi ad aumentare la vostra produttività quotidiana. Oggi lo faremo mostrandovi Trello, un servizio web fornito anche come App, che permette di organizzare il proprio WorkFlow in modo unico e assolutamente vincente! Salve a tutti Amici del Web e bentornati sul mio Blog! Io sono Lorenzo e con questo video, riparte con il nuovo anno la Rubrica: Software Per La Produttività Digitale, da oggi in poi SPPD. In questo video scopriremo una delle App che mi ha maggiormente colpito e che ho usato, e sto usando, per organizzare la programmaz...