Informatica
Informatica
Hardware e software sono complementari l’uno all’altro (senza di uno, l’altro è inutile).
Negli ultimi anni, con lo sviluppo della tecnologia, l’hardware è diventato sempre più
compatto e potente: basti pensare ai dispositivi mobili come smartphone e tablet, che oggi
sono veri e propri computer in miniatura. Alcuni componenti hardware fondamentali sono la
CPU (il “cervello” del computer), la RAM (memoria a breve termine), il disco rigido o SSD
(memoria a lungo termine), e le periferiche (mouse, tastiera, stampante, ecc.).
Anche il software si è evoluto molto: oggi esistono anche software basati su cloud, cioè
programmi che non vengono installati fisicamente sul computer, ma usati tramite Internet
(come Google Docs o Microsoft 365 online). Questo tipo di software permette di lavorare da
qualsiasi dispositivo connesso alla rete.
Esiste inoltre una categoria chiamata firmware, che sta a metà tra hardware e software: si
tratta di un software molto essenziale memorizzato in modo permanente all’interno di alcuni
dispositivi hardware (come stampanti, modem, schede madri) e serve per farli funzionare
correttamente.
Infine, esistono sistemi operativi open source come Linux, che possono essere modificati e
distribuiti liberamente, e che vengono spesso usati in ambito educativo, scientifico o da
programmatori esperti.
I PRIMI COMPUTER
Definizione di computer: macchina in grado di elaborare dati e informazioni e memorizzarli,
eseguendo istruzioni fornite da programmi per svolgere compiti specifici in modo automatico
e veloce.
Colossus è stato il primo “computer” programmabile della storia dell’informatica, esso venne
inventato durante la fine della 2 guerra mondiale da uno scienziato di nome Turing, per
intercettare il codice (chiamato enigma) dei nazisti. Si dice che grazie a questa macchina la
seconda Guerra Mondiale finì prima. Questa macchina, però, non era un vero e proprio
computer, infatti esso era un decriptatore.
Colossus divenne operativo nel 1944 ed era composto da circa 2.500 valvole termoioniche.
Utilizzava nastri perforati e lavorava analizzando rapidamente grandi quantità di dati per
cercare schemi nei messaggi cifrati. Poteva essere "programmato" modificando
manualmente la configurazione dei cavi e degli interruttori, rendendolo il primo esempio di
computer programmabile, anche se non nel senso moderno di "programmabile da software".
Il contributo di Colossus fu cruciale. Grazie alla sua capacità di elaborare rapidamente i
messaggi cifrati tedeschi, gli Alleati riuscirono ad anticipare molte mosse strategiche del
nemico. Gli storici ritengono che la sua esistenza abbia accorciato la guerra di almeno due
anni e salvato milioni di vite.
Tuttavia, per motivi di sicurezza e segretezza, Colossus rimase sconosciuto al pubblico per
decenni. Dopo la guerra, le macchine vennero smantellate e il progetto fu tenuto top secret
fino agli anni '70. Questo ha causato un ritardo nel riconoscimento del suo ruolo pionieristico
nella storia dell'informatica.
Il primo computer venne inventato per la prima volta nel 1946 in Pennsylvania da un gruppo
di ricercatori universitari. Esso si chiamava ENIAC (acronimo di Electronic Numerical
Integrator and Computer) ed era in grado di eseguire solo le 4 operazioni di base (più,
meno, per e diviso). Era una macchina enorme, composta da circa 18.000 valvole e
occupava una superficie di oltre 140 metri quadrati. Sebbene molto limitato rispetto ai
computer moderni, rappresentava un'enorme innovazione per l’epoca: poteva eseguire
calcoli che avrebbero richiesto ore o giorni in pochi secondi. ENIAC è considerato il primo
computer elettronico a programma non memorizzato, cioè i programmi dovevano essere
inseriti manualmente collegando cavi e interruttori. Questo segna l'inizio dell'era
dell'informatica moderna.
LE GENERAZIONI
Ogni computer fa parte di una [Link] generazione è un periodo storico
caratterizzato da invenzioni e miglioramenti nel campo dell’informatica, in cui si registrano
sviluppi tecnologici significativi che segnano il progresso delle capacità di calcolo e delle
architetture dei computer. Ogni generazione è definita da un'innovazione chiave, come
l’introduzione di nuovi componenti hardware, software o paradigmi tecnologici, che ne
determinano le prestazioni, l'efficienza e le applicazioni. Questi cambiamenti hanno portato
all'evoluzione dei computer da macchine primordiali e ingombranti a dispositivi potenti,
compatti e sempre più accessibili, influenzando enormemente tutti gli aspetti della vita
quotidiana e delle attività professionali.
Oggi, sia le memorie magnetiche sia quelle ottiche sono state in gran parte sostituite da
memorie allo stato solido, come le chiavette USB e gli SSD (Solid State Drive), che offrono
una maggiore velocità di accesso ai dati, maggiore resistenza agli urti e dimensioni più
compatte.
Nonostante ciò, supporti ottici come i DVD e i Blu-ray vengono ancora utilizzati in ambito
cinematografico o per l'archiviazione a lungo termine, grazie alla loro buona stabilità nel
tempo.
Monitor = input
Scanner = output
Modem WIFI = input e output: modulatore demodulatore (trasforma da digitale ad analogico
in modo da far viaggiare i messaggi sulla linea analogica)
LE STAMPANTI
Le stampanti si dividono in due grandi categorie: a impatto e non ad impatto.
Le stampanti a getto d’inchiostro sono molto diffuse in ambito domestico perché hanno un
costo contenuto e garantiscono una buona qualità di stampa, anche a colori. Tuttavia, le
cartucce d’inchiostro possono esaurirsi rapidamente e asciugarsi se non usate per lunghi
periodi.
Le stampanti laser, invece, sono spesso utilizzate in uffici o ambienti professionali perché
sono più veloci, precise e convenienti per grandi volumi di stampa. Utilizzano un toner
(polvere finissima) che viene fissato al foglio tramite calore, garantendo stampe resistenti e
durature.
Esistono anche stampanti multifunzione, che combinano più dispositivi in uno solo:
stampante, scanner, fotocopiatrice e a volte anche fax.
Infine, negli ultimi anni si sono diffuse le stampanti 3D, che non stampano su carta, ma
creano oggetti tridimensionali partendo da materiali come plastica, resina o metallo. Queste
stampanti rappresentano un’evoluzione importante e trovano applicazioni in settori come
l’industria, la medicina, l’architettura e persino l’arte.
GLI ALGORITMI
Un algoritmo è una successione finita di passi contenenti delle istruzioni per risolvere un
problema o una classe di problemi.
Due algoritmi si dicono equivalenti quando per gli stessi dati in input corrispondono gli stessi
dati in output.
Due scienziati di nome Böhm e Jacopini crearono un teorema che si occupa degli algoritmi
equivalenti. Questo teorema afferma che un algoritmo può essere trasformato in uno
equivalente se fa uso di determinate strutture di controllo, esse sono sequenza, selezione e
iterazione o ciclo.
● Sequenza: una sequenza o un blocco di istruzioni da eseguire uno di seguito all’altra
(in modo lineare);
● Sezione: indica un bivio in cui si deve scegliere se fare una cosa oppure un'altra (se
è x fai questo, se è y fai quest’altro);
● Iterazione o ciclo: indica un blocco di istruzioni che viene ripetuto.
L'iterazione può essere di due tipi: determinata, quando si sa in anticipo quante volte deve
essere ripetuto il ciclo (ad esempio, "ripeti 10 volte"), oppure indeterminata, quando il ciclo si
ripete finché una certa condizione è vera (ad esempio, "ripeti finché il numero è maggiore di
zero").
METODI DI RICERCA
I metodi di ricerca sono procedure sistematiche utilizzate per trovare un elemento all’interno
di uno spazio di ricerca, cioè un insieme di possibili soluzioni. Si dividono in metodo
sequenziale e metodo dicotomico:
● Il metodo sequenziale avviene su un insieme non ordinato di dati, controllando gli
elementi uno alla volta.
● Il metodo dicotomico (o ricerca binaria) si applica su dati ordinati e divide
ripetutamente l’insieme a metà per trovare l’elemento.
METODI DI ORDINAMENTO
I metodi di ordinamento principali sono tre:
● Shellsort: algoritmo che migliora l’insertion sort confrontando elementi distanti tra
loro, usando un valore chiamato gap che si riduce ad ogni passaggio. Inizialmente
confronta elementi lontani, poi via via più vicini; quando il gap è 1, si comporta come
un normale insertion sort, inserendo ogni elemento nella sua posizione corretta nella
parte già ordinata della lista.
● Bubblesort: algoritmo semplice che confronta coppie di elementi adiacenti e li
scambia se sono nell’ordine sbagliato, ripetendo più volte il processo fino a quando
la lista è ordinata.
● Quicksort: algoritmo più efficiente che sceglie un elemento chiamato pivot e
riorganizza la lista in modo che tutti gli elementi inferiori al pivot siano a sinistra e
quelli maggiori a destra, quindi applica ricorsivamente lo stesso procedimento alle
due sottoliste.
SISTEMI DI NUMERAZIONE
● Binario: due cifre (0,1);
● Ottale: otto cifre (0,1,2,…, 7);
● Esadecimale: sedici cifre (0,1,2,…,9,a,b,c,…,f,10,11,12).
Il sistema di numerazione usato dai computer è il più semplice: quello binario (è il più
semplice perché è o acceso o spento, o è vero o è falso, o è aperto o è chiuso, etc.).
Moltiplicazione ottale
Quando si moltiplicano 2 numeri si fa prima la moltiplicazione in sistema decimale, poi si
aggiunge il numero delle decine moltiplicato per 2 ed infine si aggiunge il numero delle
decine in più rispetto al risultato decimale moltiplicato per 2.
Sottrazione ottale
Quando si sottraggono 2 numeri la cui differenza è maggiore di 7, si toglie 2.
Il sistema ASCII è stato per molti anni lo standard più utilizzato per la codifica di caratteri nei
computer, soprattutto nei paesi anglofoni, e permette di rappresentare lettere, numeri,
simboli di punteggiatura e alcuni caratteri di controllo (come “invio” o “tabulazione”). Oggi,
però, è spesso sostituito da codifiche più avanzate come UTF-8, che fa parte della codifica
Unicode e permette di rappresentare caratteri di tutte le lingue del mondo, inclusi simboli
speciali, emoji e alfabeti non latini.
Il processo di codifica è fondamentale per permettere al computer di memorizzare, elaborare
e trasmettere correttamente le informazioni. La scelta del tipo di codifica dipende dal tipo di
dati da rappresentare (numerici, testuali, binari, ecc.) e dal contesto in cui vengono utilizzati
(ad esempio, comunicazioni di rete, file di testo, basi di dati, ecc.).
Inoltre, accanto alla codifica esiste anche il processo opposto chiamato decodifica, che
consiste nel trasformare i dati codificati nuovamente in informazione comprensibile all’uomo
o ad altri sistemi.
LA CPU
Central Processing Unit (unità centrale di elaborazione o di processo), è il processore
(l’elemento tecnologico fondamentale di terza generazione), esso viene definito il “cervello
del sistema”.
La CPU comunica continuamente con la memoria principale (RAM) per prelevare dati e
istruzioni da elaborare. Per velocizzare questo processo, la CPU è spesso affiancata da una
memoria cache, anch’essa molto veloce, che funge da “ponte” tra la RAM e il processore.
Negli ultimi anni, le CPU sono diventate multi-core, ovvero contengono più unità di
elaborazione indipendenti (core) all’interno dello stesso chip. Questo consente di eseguire
più operazioni contemporaneamente, migliorando notevolmente le prestazioni del sistema,
soprattutto nelle applicazioni moderne che richiedono molta potenza di calcolo, come
videogiochi, grafica 3D o intelligenza artificiale.
PORTE DEI COMPUTER
Le porte dei computer sono ingressi per delle periferiche, in modo da collegare alla
macchina unità sia di input che di output.
PORTA PS2: (piccole porte rotonde antiche, una di colore verde e una viola) esse
nascevano con l’Idm2, una casa costruttrice di hardware di eccellenza; queste porte
collegavano mouse e tastiera al computer.
PORTA PARALLELA: antica porta che collegava la stampante. È monodirezionale.
PORTA SERIALE: antica porta che collegava il monitor. È bidirezionale.
PORTA ETHERNET: porta che consente di collegare il computer alla rete wi-fi. Essa collega
un cavo all’hub, uno smistatore a cui ogni luce corrisponde una macchina.
SCSI: una porta che collega periferiche ad alte prestazioni.
JACK: porta che collega qualsiasi periferica che opera nell’ambito acustico.
USB A: dispositivi mobile come computer, smart tv, console di gioco, lettori DVD, ecc.
USB B: utilizzato per collegare dispositivi periferici come stampanti, scanner e alcuni dischi
rigidi esterni a computer o laptop.
USB C: sostituisce i precedenti connettori USB. Questa tipologia di cavo consente di
trasmettere dati, audio e video, può trasferire file, collegare altoparlanti o persino funzionare
come uscita video per un monitor.
HDMI: porta che collega monitor ad alta definizione.
SCART: vecchia porta che collegava il videoregistratore e precedeva l’HDMI.
IL SISTEMA OPERATIVO
Il sistema operativo è il software più importante della macchina, infatti, fa parte del software
di base.
Esso è un insieme organizzato di programmi che gestisce l’uso delle risorse del computer.
Fa da interfaccia tra macchina e utente, è il software che permette di interagire con la
macchina.
IL DOS
Una volta, ogni casa costruttrice di computer, utilizzava un proprio sistema operativo per
ogni macchina costruita da loro, questo fino all’anno 1982, quando una casa di software, di
nome Microsoft, inventa un sistema operativo che chiama MS DOS (Microsoft Disk
Operating System), questo sistema operativo occupava da 1 a 8 megabyte di memoria.
Esso era 640 kilobyte di ram, e 384 kilobyte, meno 16 byte di rom.
Questo nuovo sistema operativo, venne valutato dalla casa più importante di hardware, IBM,
che si accorse che esso era migliore di tutti gli altri sistemi operativi di quel tempo, allora
contattò la Microsoft chiedendogli di usare il sistema operativo DOS come base per le
proprie macchine. A quel punto Microsoft accettò, però a costo di una percentuale di
guadagno per ogni macchina che vendeva la casa.
A questo punto, tutte le altre case di hardware iniziarono a fallire, quindi si cercò di fare in
modo che tutte le altre marche usassero il software per le loro macchine, sempre a costo di
una percentuale per la Microsoft.
Quindi il capo di Microsoft, Bill Gates, diventava più ricco ad ogni nuovo computer acquistato
in qualsiasi parte del mondo che utilizzasse DOS.
MS-DOS era un sistema operativo monotasking, il che significa che era in grado di eseguire
un solo processo alla volta. Questa caratteristica lo rendeva relativamente semplice, ma
limitato rispetto ai sistemi operativi successivi che supportavano il multitasking.
COMANDI DOS
Con DOS, quando si accendeva la macchina, compariva una scritta: “C:\” e qui si doveva
inserire dei comandi per accedere alle operazioni da svolgere dal computer.
Directory: contenitore di file e altre cartelle, equivale a “cartella” di Windows.
● Rd = elimina directory;
● Del = cancella il file;
● Rename = rinomina il file;
● Md = Crea directory;
● Cd = Cambia directory;
● Copy = copia file in un’altra posizione;
● Dir = visualizza il contenuto della directory;
● Fc = controlla contenuto file;
● Print = stampa file di testo;
● Copy con = crea file di testo;
● Find = cerca caratteri nel file;
● Erase = elimina uno o più file;
● If = esegue un’elaborazione condizionale in un programma batch;
● Diskcopy = copia il contenuto di un disco floppy su un altro;
● Exit = termina il programma [Link] (interprete dei comandi);
● Format = formatta un disco per l’utilizzo con Windows;
WINDOWS 95
Il DOS subisce evoluzioni negli anni, e dura fino al 1995 (14 anni).
Windows nasce come software applicativo, cioè un’applicazione che girava sul sistema
operativo DOS. Dopo qualche anno (nel 1995) esso diventa sistema operativo, e quindi
sostituisce DOS. Windows introduce novità importanti, come i colori, i primi giochi, e tutte
quelle cose che rendono l’esperienza di uso del computer più “piacevole”.
Windows è un sistema operativo
● Multitasking: può eseguire più applicazioni contemporaneamente;
● Multiutente: può essere usato da più utenti contemporaneamente;
● User Friendy: impatto amichevole.
In Windows, il DOS, è ancora presente, sotto forma di programma di utilità.
LINGUAGGI DI PROGRAMMAZIONE
I linguaggi di programmazione si dividono in compilatore e interprete, che sono tutti e due
programmi traduttori, cioè che traducono un linguaggio da alto livello a basso livello: il
linguaggio di alto livello è quello utilizzato dal programmatore per programmare la macchina,
si chiama di alto livello perché si avvicina al modo di pensare dell’uomo, e tanto più si
avvicina al modo di pensare dell’uomo più sarà considerato di livello alto, al contrario, tanto
più si distacca dal modo di pensare dell’uomo più sarà considerato di livello basso.
Sia il compilatore che l’interprete traducono da alto a basso livello;
● Il compilatore traduce l’intero programma (in blocco) in basso livello;
● L’interprete traduce un'istruzione alla volta in basso livello.
MEZZI TRASMISSIVI
Per far viaggiare le informazioni su grandi distanze, è necessario convertirle in segnali
elettrici o elettromagnetici, che vengono poi adattati al canale di trasmissione utilizzato.
La velocità di trasmissione nelle reti di comunicazione si misura in bit per secondo (bps) e
suoi multipli (Kbps, Mbps, Gbps).
Il parametro fondamentale che caratterizza un mezzo trasmissivo è il throughput, ovvero la
quantità di dati effettivamente trasmessa e ricevuta nell’unità di tempo, che può essere
influenzata da ritardi, perdite e interferenze.
● 4004 (1971)
Primo microprocessore commerciale a 4 bit. Bus dati a 4 bit, bus indirizzi a 12 bit. Fu
una rivoluzione che segnò l’inizio dell’era dei microprocessori.
● 8008 (1972)
Processore a 8 bit con bus dati a 8 bit e bus indirizzi a 14 bit. Permise elaborazioni
più complesse rispetto al 4004.
● 8086 (1978)
Processore a 16 bit (bus dati a 16 bit, bus indirizzi a 20 bit). È la base per
l’architettura x86 ancora oggi utilizzata.
● 8088 (1979)
Evoluzione dell’8086, con bus dati ridotto a 8 bit (bus indirizzi sempre a 20 bit).
Questa modifica lo rese più compatibile con le tecnologie dell’epoca.
● 80286 (1982)
Processore a 16 bit, bus dati a 16 bit e bus indirizzi a 24 bit. Introdusse la modalità
protetta, migliorando la gestione della memoria.
● 80386 (1985)
Processore a 32 bit, con bus dati e indirizzi a 32 bit. Introdusse la memory cache
(memoria temporanea veloce) e la gestione della memoria virtuale.
● 80486 (1989)
Processore a 32 bit, bus dati e indirizzi a 32 bit, con integrazione del coprocessore
matematico (FPU) sul chip, migliorando notevolmente le prestazioni nei calcoli.
● Pentium (1993)
Voleva essere chiamato 80586, ma per motivi di marchio è stato chiamato Pentium
(dal greco penta = cinque). Processore a 32 bit, con bus dati a 64 bit e bus indirizzi a
32 bit, offrendo un significativo incremento di prestazioni.
LE RETI DEI COMPUTER
Una rete è un collegamento tra due o più computer. Una rete serve a scambiare e
condividere dati, informazioni, software e hardware.
Quando ci sono stati i primi collegamenti con internet, funzionava tutto in modo analogico,
ed oltre all’abbonamento annuale, si pagava anche a consumo. Infatti, se si voleva guardare
un film, per esempio, bisognava pagare per l’abbonamento a Sky, e poi bisognava pagare il
prezzo per il film.
Inoltre, i collegamenti potevano contenere un certo numero di connessioni: se potevano
contenere, per esempio 5000 utenti, e si entrava per primi, quando si connetteva il 5001
utente, si veniva buttati fuori, quindi se si faceva il download di qualcosa (che duravano
anche ore), tutto il lavoro veniva perso.
Questo problema si risolve con il collegamento isdn (Integrated Services Digital Network),
che dava la possibilità di “sdoppiare” la linea telefonica, cioè connettersi ad internet e avere
la linea del telefono libera. Però era ancora una connessione lenta e non riusciva a
contenere il numero di persone che si collegavano. Questo problema si risolve con la linea
adsl (Asymmetric Digital Subscriber Line), quella che viene anche definita “banda larga”:
essa riusciva a contenere grandissime quantità di connessioni, ma mai quante e così veloci
come quella di oggi, cioè la fibra ottica.
EXCEL
Excel è un'applicazione che fa parte di un pacchetto applicativo che si chiama Office (Word,
Access, powerpoint, Outlook), se lo si vuole installare bisogna comprarlo.
Word > editore di testi (programma di videoscrittura)
Access > database (gestore di archivi, è un programma che permette di gestire tante
informazioni, usato da biblioteche, rivenditori di dischi (es. Feltrinelli), ecc..)
Excel > foglio di calcolo elettronico,
Excel si presenta come un enorme reticolato formato da righe e colonne, le righe sono
rappresentate da numeri, le colonne da lettere. Le celle sono le intersezioni fra righe e
colonne. La cella è predisposta a contenere dati e informazioni.
In Excel, ogni cella può contenere testo, numeri, formule o funzioni. Le formule permettono
di eseguire calcoli automatici (ad esempio somme, medie, moltiplicazioni), mentre le funzioni
sono formule predefinite da Excel che facilitano operazioni complesse, come ad esempio
=SOMMA(), =MEDIA(), =SE(), ecc.
Excel è particolarmente utile per la gestione di dati, la creazione di tabelle e grafici, e viene
utilizzato in moltissimi ambiti, come contabilità, statistica, analisi di bilancio, gestione di
inventari, e persino per attività personali, come tenere traccia delle spese.
Ogni file Excel è chiamato cartella di lavoro, e può contenere più fogli di lavoro, che sono le
singole pagine del reticolato di celle. Gli utenti possono anche formattare le celle (colori,
bordi, tipi di carattere) per rendere più leggibili i dati o evidenziare informazioni importanti.
Infine, Excel consente anche l’uso di strumenti avanzati come filtri, tabelle pivot, macro e
convalida dei dati, utili per analisi approfondite e automatizzazione di compiti ripetitivi.
ERRORI DI PROGRAMMAZIONE
Programmazione: insieme di regole che devono essere conosciute dal programmatore per
dialogare con la macchina
Algoritmo: successione di passi o istruzioni completa, finita, univa e deterministica.
Un programmatore quando scrive un algoritmo commette degli errori più semplici o più
difficili da individuare.
Classici errori che vengono commessi in programmazione sono:
1. Errori sintattici
Sono errori legati alla grammatica del linguaggio di programmazione utilizzato.
● Facili da individuare, perché generalmente il compilatore o l’interprete li
segnala subito.
● Esempi:
○ Dimenticare il punto e virgola alla fine di un’istruzione C/C++/Java.
○ Usare parentesi non bilanciate
○ Scrivere una parola chiave in modo errato (es. fucntion invece di
function in JavaScript).
2. Errori logici
Sono errori nella logica dell’algoritmo: il programma è sintatticamente corretto, ma
non fa ciò che dovrebbe.
● Difficili da individuare, perché il programma si esegue correttamente ma
produce risultati sbagliati.
● Esempi:
○ Usare l’operatore + invece di -.
○ Calcolare la media tra due numeri e dimenticare di dividere per due.
○ Si individuano con il testing, cioè confrontando i risultati ottenuti con
quelli attesi.
3. Errori semantici
Simili a quelli logici, ma derivano da un uso improprio delle istruzioni o da una cattiva
interpretazione del significato di un’istruzione o concetto.
● Esempi:
○ Utilizzare un ciclo for quando sarebbe necessario un while, ottenendo
un comportamento inatteso.
○ Chiamare una funzione con parametri nell’ordine sbagliato.
4. Errori di Runtime (esecuzione)
Sono errori che si verificano durante l’esecuzione del programma e che possono
causarne l’arresto.
● Possono dipendere da:
○ Conflitti tra applicazioni.
○ Accesso a memoria non valida.
○ Divisione per zero.
○ Accesso a file inesistenti.
● Si manifestano con messaggi di errore, crash o comportamenti imprevedibili.
● Esempi:
○ In Java: NullPointerException quando si tenta di accedere a un
oggetto che è null.
○ In Python: ZeroDivisionError
STRUMENTI DI SUPPORTO: IL DEBUGGER
Il debugger è uno strumento fondamentale che consente di:
● Eseguire il codice passo per passo.
● Controllare il valore delle variabili durante l’esecuzione.
● Mettere dei breakpoint per fermare l’esecuzione in punti specifici.
● Identificare facilmente la posizione e la causa degli errori.
ASSEMBLY
Assembly serve per scrivere programmi che controllano direttamente l’hardware del
computer, con istruzioni molto dettagliate e precise. Ogni istruzione Assembly corrisponde
quasi 1 a 1 a un'istruzione del processore.
Assembly si differenzia dagli altri programmi perché è molto semplice e si avvicina parecchio
al basso livello (pur essendo di alto livello), inoltre offre un controllo diretto e dettagliato
dell’hardware del computer, come la CPU e la memoria. Assembly utilizza codici mnemonici
che corrispondono quasi direttamente alle istruzioni macchina, permettendo programmi più
efficienti, più compatti e con un comportamento deterministico.
STRUTTURA DEL SISTEMA OPERATIVO
La struttura del sistema operativo è a buccia di cipolla: ha molteplici strati.
Lo strato principale, il nucleo si chiama kernel, e gestisce il cuore del sistema (la CPU), la
memoria e l’input/output. Poi ci sono il gestore della memoria, il gestore dei dispositivi di
input/output (periferiche), il gestore del file system, l’interfaccia utente, lo scheduler, e shell
(o interprete dei comandi).
● Kernel è il componente più interno e centrale (nucleo), è responsabile del controllo e
della gestione di tutte le risorse hardware del sistema, della memoria principale e
delle periferiche, è il livello più alto che più si avvicina al linguaggio hardware.
● Lo strato successivo è costituito dal gestore della memoria, esso si occupa di gestire
l’allocazione della memoria RAM ai processi in esecuzione inoltre gestisce anche la
memoria virtuale.
● Successivamente si trova il gestore delle periferiche, che permette la comunicazione
fra il sistema e le periferiche esterne utilizzando i driver per tradurre le richieste
generiche in comandi specifici.
● Poi c’è il file system, che organizza, memorizza e recupera i file su dispositivi di
memorie esterne.
● Proseguendo si trova l’interfaccia utente, lo strato più esterno e fornisce l’interazione
diretta tra l’utente e il sistema operativo.
Lo scheduler è una componente del sistema operativo che decide quale processo deve
essere eseguito dalla CPU e quando. Esso ha la funziona di gestire la CPU tra i vari
processi in esecuzione o in attesa, in modo efficiente e secondo una certa politica.
Uno dei virus più comuni è Trojan Horse, funziona ingannando l’utente facendogli credere
che sia una cosa sicura, il suo punto debole è che viene mandato durante la notte. Una volta
che il virus entra nella macchina, esso inizierà a mandare mail ai contatti, e così via via e si
diffonde.
Un altro ancora è Cryptolocker: un malware molto cattivo creato da cracker russi tra i migliori
al mondo. Questo virus è diffuso tramite email con allegati o link infetti: quando la vittima
apre l’allegato, il malware crittografa i file del computer e mostra una richiesta di riscatto,
solitamente in Bitcoin (moneta non rintracciabile), per ottenere la chiave di decrittazione. Il
suo obiettivo è estorsivo, non distruttivo, ma può rendere i dati irrecuperabili senza la chiave.
Esso è un ransomware (un tipo di trojan).
● Hacker: persona con grandi conoscenze informatiche, che esplora i sistemi per
curiosità o per metterne alla prova la sicurezza, senza causare danni.
● Cracker: individuo che viola i sistemi informatici con intenzioni criminose, come
rubare dati o denaro, o danneggiare.
● Lamer: persona che finge di essere un hacker o un cracker, ma non ha vere
competenze tecniche e spesso usa strumenti creati da altri.
Antivirus
● Norton è un antivirus sviluppato da Symantec (oggi Gen Digital) che protegge il
computer da virus, malware, spyware e ransomware, controllando file, email e siti
web per bloccare minacce e mantenere il sistema sicuro.
● McAfee è un antivirus che protegge il computer da virus, malware, spyware e
ransomware, offrendo anche sicurezza web e protezione della privacy online.
● NOD32 è un antivirus sviluppato da ESET che protegge il computer da virus,
malware, spyware e phishing, offrendo scansioni veloci e basso consumo di risorse
di sistema.
● Avast è un antivirus che offre protezione in tempo reale contro virus, malware,
spyware e ransomware, con funzioni aggiuntive come scansione web, firewall e
protezione della privacy online.
● VirIT è un antivirus italiano sviluppato da TG Soft, che protegge il computer da virus,
malware, trojan e ransomware, offrendo scansione e rimozione delle minacce in
modo semplice e leggero.
Spyware: quando si fa una ricerca di un prodotto e vengono mostrate molte notifiche su
esso. Letteralmente “spia”, esso spia le proprie abitudini per indurre l’utente a comprare un
prodotto. Non è un virus.
Fishing: notifica che ti fa credere di aver vinto un prodotto, quindi si mettono i dati di una
carta di credito e vengono rubati tutti i soldi su di essa. Non è un virus.
TOPOLOGIA DELLE RETI
Topologia: architettura e disposizione fisica delle macchine. Esistono diverse topologie di
rete:
● ad albero: a ciascun nodo ne sono collegati altri due di livello inferiore
● a bus: tutti i computer sono collegati ad un unico cavo
● ad anello: i nodi sono disposti a forma di cerchio creando un anello
● a stella: tanti nodi figli, tutti connessi a un nodo padre che si trova al centro della
stella
● peer-to-peer: tutti i nodi sono equivalenti e possono agire sia come client che come
server
● a maglia: tutti i nodi sono collegati tra loro e ciascuno di essi ne riesce a raggiungere
un altro attraverso un solo passaggio.
Architettura server/client
Client: (cliente) è il computer o programma che chiede un servizio o un’informazione
Server: (servente) è il computer o programma che fornisce il servizio o l’informazione
richiesta. Un computer server ha una capacità di magazzinaggio elevata, e generalmente ha
2 hard disk per la salvaguardia dei dati.
L’architettura server/client permette di condividere software e hardware a più macchine.
L’architettura server/client può essere:
● dedicato: fa solo ed esclusivamente le funzioni da servente
● non dedicato: fa anche da client
Il client può essere terminale (composti solo da monitor e tastiera > il server manda gli
output), e non terminale (funziona autonomamente e poi condivide i dati al server, se il
server è spento esso lavora in locale, e poi alla riaccensione del server, tutti i dati vengono
condivisi).
Il server è la prima macchina ad essere accesa e l’ultima ad essere spenta (non si spegna
quasi più ormai).
IL MODELLO ISO/OSI
È uno standard concettuale a 7 livelli che definisce come i sistemi di comunicazione
possano scambiarsi i dati in una retta. Quindi suddivide la complessità delle comunicazioni
di rete in livelli funzionali, ognuno di questi livelli svolge un compito specifico affinché venga
garantita l’operabilità tra i vari sistemi. Iso/osi è un acronimo che significa International
Standard Organization Open System Interconnection: è un protocollo standard per
l’interconnessione dei sistemi aperti.
Il modello viene sviluppato nel 1977 perché in quegli anni le reti informatiche erano gestite
soprattutto a livello governativo.
È strutturato in 7 livelli, a buccia di cipolla (gli strati sono adiacenti), dal basso verso l’alto:
● Livello 1: Fisico: Gestisce la trasmissione e ricezione di segnali elettrici e ottici e si
occupa delle caratteristiche fisiche del collegamento.
● Livello 2: Collegamento dati: Garantisce un trasferimento affidabile dei dati sul livello
fisico, facendo apparire la trasmissione come priva di errori.
● Livello 3: Rete: Si occupa dell'instradamento dei pacchetti attraverso reti
interconnesse, scegliendo il percorso migliore.
● Livello 4: Trasporto: Gestisce il trasferimento dei dati end-to-end, assicurando
l'affidabilità e il controllo degli errori.
● Livello 5: Sessione: Controlla le connessioni tra applicazioni, stabilendo, gestendo e
terminando le sessioni di dialogo.
● Livello 6: Presentazione: Traduce i dati tra il formato delle applicazioni e un formato
standard, occupandosi di crittografia, formattazione e compressione.
● Livello 7: Applicazione: È il livello più vicino all'utente e fornisce l'accesso ai servizi di
rete, gestendo i protocolli specifici delle applicazioni come HTTP, FTP, SMTP.
Possono comunicare fra di loro solo i livelli adiacenti (il fisico può comunicare con il
collegamento dati, ma non con il livello rete senza passare al data link).
Il modello ISO/OSI è stato inventato per creare uno standard universale che permettesse a
dispositivi di reti diverse di comunicare tra loro, superando la frammentazione delle reti
proprietarie.
PROTOCOLLO TCP/IP
Transmission Control Protocol e "IP" sta per Internet Protocol
Stabilisce le regole che rendono possibile la comunicazione e il trasferimento di dati in
internet sulla maggior parte delle reti, senza questo mandare e-mail sarebbe impossibile.
E’ formato da 4 livelli:
- Network: comprende il livello fisico e data link del modello ISO/OSI
- Internet/rete: livello di rete
- Trasporto: trasporto
- Applicazione: comprende i livelli di sessione, presentazione e applicazione
L’indirizzo IP si occupa dell'indirizzamento dei dati, che vengono chiamati pacchetti,
attraverso la rete, e si assicura che raggiungano la destinazione corretta. Invia pacchetti
senza garantire l’arrivo o l’ordine.
Il transmission control stabilisce una connessione logica e affidabile per la trasmissione ed è
responsabile della suddivisione dei dati in pacchetti per la trasmissione e verifica che il
pacchetto sia arrivato integro a destinazione.
HTML
- hyper textual mark-up language
Non è un linguaggio di programmazione. È stato inventato intorno agli anni ‘90 da Tim
Berners-Lee.
HTML è un linguaggio marcatore: abbiamo bisogno, per poter lavorare, di un editore di testi
e di un browser. Lavora in tutti i sistemi operativi.
L’editore di testi di windows è block notes perché fa parte del software di base (non Word
che fa parte di un software applicativo). In Linux si usa Pico. In iOS si usa Text Edit.
Questo linguaggio è stato inventato da un professore universitario perché voleva che si
volessero scambiare ricerche e lavori fatti in un'università con altre università del mondo.
Non avrebbe mai pensato di raggiungere un successo così grande (vinse il premio Turing).
Per ipertesto si intende un collegamento tra più pagine tramite una parola chiave
Per lavorare in HTML bisogna lavorare in blocco note, e salvare il file in un formato
particolare.
Il codice inizia con <html> e finisce con </html>
Bisogna conoscere elementi e tag.
Tag (<; >) il testo deve essere compreso in questi simboli e si parte con la scritta html.
Elemento: ciò definisce cosa deve essere visualizzato nella pagina web.
Attributi: elementi che definiscono una caratteristica fisica dell’elemento (come il grassetto).
Lista non ordinata (puntini): tag <ul> </ul>, ad ogni elemento <li> </li>
Lista ordinata (numeri): tag <ol> </ol>, ad ogni elemento <li> </li>
<head> serve a scrivere informazioni sulla pagina ma non contenuti che si vedono sullo
schermo
<title> è contenuto in <head> e definisce il nome della pagina
<body> tutto ciò che si vede sul sito
Nell’ambito delle reti informatiche, per bridge (letteralmente ponte) si intende un dispositivo –
che può essere sia hardware sia software – in grado di collegare tra di loro due o più reti
diverse (solitamente delle LAN) in modo che possano comunicare tra di loro.
Il bridge è un dispositivo di rete che si colloca al livello datalink del modello ISO/OSI che
connette e gestisce il flusso di dati tra due rete locali o tra due segmenti di una stessa rete
locale.
macOS & Linux
macOS e Linux sono sistemi operativi di nicchia (non utilizzati da tutti perché macOS è
costoso, e linux è difficile da usare).
- Linux
Linux è stato inventato da uno studente universitario chiamato Linus Torvalds, che utilizzò
Unix per crearlo, da questo il nome.
Per scaricare Linux bisogna fare una partizione del disco fisso (occupa spazio) e ogni volta
all’avvio bisogna decidere il sistema operativo da utilizzare, perché esso sovrasta il sistema
operativo della macchina.
I vantaggi di Linux sono la sicurezza: non prende virus perché non è utilizzato da nessuno.
Linux si usa tramite interfaccia grafica o con il terminale, dove scrivi comandi. I programmi si
installano con un gestore pacchetti (es. apt su Ubuntu). I file sono organizzati in cartelle
come /home, /etc, /usr.
- iOS
iOS è il sistema operativo degli iPhone, creato da Apple.
Ha un’interfaccia semplice e si usa toccando lo schermo.
Le app si scaricano dall’App Store.
È noto per sicurezza e aggiornamenti regolari.
Supporta funzioni come Face ID, iMessage e iCloud.
È ottimizzato per funzionare in modo fluido sui dispositivi Apple.
- macOS
macOS è il sistema operativo dei computer Mac, sviluppato da Apple.
Ha un’interfaccia semplice con Dock e Finder per gestire file e app.
Le applicazioni si scaricano dal Mac App Store o da internet.
È stabile, sicuro e ben integrato con iPhone e iPad.
Riceve aggiornamenti regolari e offre buone prestazioni.
I DATABASE
I database sono dei programmi che gestiscono grandi quantità di dati (archivi).
I database nascevano di tipo gerarchico, poi reticolari e poi sono diventati relazionali