Due parole su linux

pinguini, gnu ed altre diavolerie

di Giuseppe Sottile
11/09/2018

Due parole su linux

pinguini, gnu ed altre diavolerie

di Giuseppe Sottile
11/09/2018

Due parole su linux

pinguini, gnu ed altre diavolerie

di Giuseppe Sottile
11/09/2018

Avete mai sentito parlare del "pinguino"? Sicuramente si, chissà quante volte... ma se siete degli informatici o degli sviluppatori o appassionati hacker e/o nerd, sicuramente è chiaro che il "pinguino" a cui mi riferisco non è quello di superquark o dell'enciclopedia degli animali ;). Il pinguino di cui parliamo si chiama "Linux" ed è quanto di più affascinante e complesso si possa immaginare... La storia che scalfiremo non è solo un viaggio nell'informatica, ma anche un'etica che ruota attorno a tutto il mondo della programmazione e dell'hacking.

$$ \diamond {\large \diamond}\diamond $$

Introduzione al mondo dei computer

Per prima cosa dobbiamo capire da dove iniziare. Quello di cui abbiamo bisogno è fare un po di chiarezza su cosa esattamente si intende con il termine computer. Detto in termini poco formali, un computer è un esecutore; voi gli date un compito e lui lo esegue. E' come ordinare ad un nostro schiavo dei compiti - solo che mentre allo schiavo possiamo impartire i compiti ad esempio in lingua italiana o in inglese, al computer bisogna assegnargli i compiti nel suo linguaggio, il linguaggio macchina.



$$ \diamond {\large \diamond}\diamond $$

Codice binario e Linguaggio macchina

Negli strati più a basso livello (cioè vicini al mondo delle macchine), i computer comprendono solo impulsi elettrici che viaggiano nelle piste di collegamento elettroniche su schede di silicio e circuiti integrati. Codificare due stati, passaggi e non passaggio di corrente, livello di tensione alto e basso è semplice, basta avere a disposizione un qualcosa a due stati che memorizzi questa dualità. Il sistema di numerazione binario e l'algebra booleana scoperta da George Boole nel 1850, asssieme alla logica di commutazione di Claude Shannon hanno reso possibile tutto questo. Lo strato matematico correlato al linguaggio macchina è il codice binario. Si tratta di un livello assolutamente pari a quello elettrico. Tanté che la stessa algebra di commutazione che Shannon introdusse, è la pura versione elettrica dell'algebra di Boole.

Programmare in codice binario è quasi impossibile. Per questo i programmatori si sono inventati il codice macchina, che seppur in corrispondenza con il codice binario, esso è costituito da parole chiave più comprensibili, sostanzialmente ad una parola chiave viene associato un gruppo di bit che realizza una particolare istruzione attivando i circuiti interni questo linguaggio si chiama assembly.

Infine lo strato superiore è costituito dai "linguaggi ad alto livello" come ad esempio C++, Java, Php ecc. In questi linguaggi un analizzatore di testo, il (lexer) trasforma una sintassi fatta di parole vicine al nostro linguaggio, in istruzioni macchina, comprensibili dalla CPU. Questo è il mondo della programmazione.

Codice Binario


Codice Binario

$$ \diamond {\large \diamond}\diamond $$

Il sistema operativo

In un computer, esiste un programma che svolge sostanzialemte 2 compiti fondamentali. Il primo consiste semplicemente nel semplificare la vita agli utenti, creando un'astrazione (macchina virtuale) sull'hardware, il secondo è far operare tutte le componenti in perfetta armonia. Questo programma si chiama sistema operativo ed è il programma più importante che risiede in un computer. Con molta probabilità il vostro sistema operativo è Windows, ma se volete addentrarvi o capire più a fondo cosa c'è dentro la "scatola", bisogna iniziare ad utilizzare Linux, il nostro pinguino, che rispetto a Windows permette di essere padrone assoluto della macchina "ovviamente se sapete cosa fare e come farlo..."

Per rispondere alla classica domanda: "Perchè bisogna imparare Linux per capire il computer?", vi faccio la seguente metafora: Utilizzare Windows per imparare il computer "seriamente" non è possibile. E' come cercare di imparare a suonare il pianoforte guardando chi lo suona realmente, voi non state suonando siete un semplice spettatore che osserva la scena da lontano e non da protagonista. Se volete (sicuramente credo di si), essere i protagonisti bisogna imparare a suonare... ed il manuale delle istruzioni, la porta, o la strada da iniziare è Linux.

Linux O.S.


Linux O.S.

GNU Not Unix


GNU Not Unix

$$ \diamond {\large \diamond}\diamond $$

Linux: kernel e distribuzioni

Se vi ho convinto, allora direi che è giunto il momento di dire qualcosa in più. Anzitutto Linux nasce dal suo autore Torvalds Linus, allievo del Prof. A. S. Tanenbaum, scrittore di quasi tutti i principali testi di riferimento di informatica utlizzati nelle università. L'obiettivo principale di Linux è quello di essere un sistema "assolutamente libero" open source, a codice aperto. Chiunque può modificare, ridistribuire, collaborare a rendere il sistema più moderno, efficiente rispettando i principi del software libero e della GNU-Sofware Foudation di Richard Stallmand. Inoltre se volete intraprendere una strada che chissà un domani possiate ritenervi hacker (anche se non esiste una guida per diventarlo!) linux è la giusta strada da seguire - è un sistema che vi permette di entrare in ogni angolo del vostro computer, viaggiare nelle reti informatiche, all'interno della memoria, scrivere codice a basso livello, insomma rende "nuda la vostra macchina" di modo che possiate avere il controllo totale su essa (un po come Neo nel film colossal Matrix).




Rimane da chiarire una cosa, prima di lasciarvi. La differenza tra le distribuzioni ed il kernel. Sono due cosa da non confondere di estrema importanza. Il kernel (nucleo) è il cuore del sistema che si occupa di svolgere le funzioni fondamentali (paginazione della memoria, gestione processi, multithreading, interfacciamento harware ecc...) è unico ed è condiviso da tutte le distribuzioni, le quali cambiano solo di alcune funzionalità a livello grafico ed interattivo; sono sostanzialemte delle interfacce virtuali che operano ad uno strato superiore a quello del kernel. Quando scaricate una distribuzione, il kernel che installate di solito è quasi sempre lo stesso (tranne per poche variazioni), pensate che il kernel linux, fa parte del cuore oramai di tantissime tecnologie come ad esempio android, ed apple per citarne alcune.

A questo punto non mi resta che chiudere con qualche riferimento alle principali distribuzioni.



The End