Che materia stai cercando?

Riassunto esame Informatica, libro consigliato Introduzione all’informatica, Avalle, Console, Ribaudo

Riassunto basato sullo studio autonomo del testo Introduzione all’informatica, Avalle, Console, Ribaudo utilizzato per il test di ammissione al corso di laurea in Comunicazione pubblica e d'impresa (Università degli studi di Milano). Scarica il file in PDF!

Esame di Informatica docente Prof. P. Scienze matematiche

Anteprima

ESTRATTO DOCUMENTO

finché uno dei due la chiude (si pensi alla linea telefonica). Durante la

comunicazione tale circuito sarà dedicato e non potrà essere usato per altre

comunicazioni.

• Nei collegamenti con linea commutata, invece, il collegamento tra 2 nodi

viene creato solo quando serve. In questo caso si può usare la tecnica del

multiplexing, che permette di suddividere un canale di comunicazione in

sotto-canali, utilizzando così la stessa linea per più comunicazioni

simultanee. Non viene quindi creato alcun circuito, bensì il messaggio viene

suddiviso in pacchetti, spediti al destinatario.

E’ necessario sviluppare tecniche che consentano al destinatario di accorgersi di

eventuali errori:

• Il controllo di parità consiste nell’invio, assieme al byte trasmesso, di un bit

di parità (0 se il byte contiene un numero pari di uno, altrimenti 1), che

dovrà corrispondere al bit di parità calcolato dal ricevente.

• I codici a correzione di errore consentono invece al destinatario anche di

correggere l’errore individuato.

Per instaurare la comunicazione tra noti, questi vanno identificati individualmente

tramite indirizzamento dei nodi, tramite una tabella in ogni nome logico viene

associato al corrispondente indirizzo fisico.

Un altro problema da affrontare durante la progettazione di una rete riguarda il

percorso (routing) che il messaggio farà per raggiungere il nodo destinatario:

• Con l’instradamento fisso si scelgono percorsi che i messaggi seguono al

momento della costruzione della rete, scegliendo il cammino più corto che

eviti intasamenti.

• L’instradamento variabile permette invece di scegliere il percorso che i

messaggi faranno ad ogni sessione di lavoro.

• L’instradamento dinamico permette invece di scegliere il percorso

dinamicamente ogni volta che un messaggio viene inviato, ed è quindi più

flessibile soprattutto in caso di malfunzionamenti, sebbene più complesso

nella definizione dei protocolli di comunicazione.

• Il packet switching è una tecnica che suddivide il messaggio in pacchetti,

utile soprattutto il caso di messaggi grandi. Per ogni pacchetto si sceglierà

l’instradamento più opportuno, ottimizzando la distribuzione del traffico

nella rete.

Si possono creare conflitti di comunicazione, ossia situazioni in cui più nodi

tentano di trasmettere contemporaneamente sulla stessa linea. Abbiamo quindi

alcune tecniche per la gestione dei conflitti:

• Con il Token passing, sulla rete circola un gettone (token) passato da un

nodo all’altro nella direzione della trasmissione dei messaggi, che costringe

i nodi ad aspettare di possedere il gettone prima di iniziare la trasmissione,

rendendo impossibile avere più comunicazioni contemporaneamente.

• Il Treno di slot permette invece il movimento di più messaggi nella rete in

modo sincrono, evitando di occupare contemporaneamente lo stesso arco.

• Prevenzione e correzione mediante ascolto agiscono invece in modo tale

che ogni nodo, prima di inviare un messaggio su un arco, verifica che esso

sia libero; viceversa il nodo rimarrà in ascolto, così come i nodi che hanno

inviato un messaggio e necessitano quindi di verificare se il messaggio

arriva a destinazione o vi sono collisioni. Ethernet è la rete locale più nota

che implementa la tecnica dell’ascolto.

Alla base del funzionamento della rete vi è il sono modelli di interazione, tra cui

• quello client/server. Una risorsa deve quindi essere collegata ad un

elaboratore specifico (server, servitore della risorsa) su cui sarà in

esecuzione il programma di gestione della risorsa. Gli elaboratori che non

possiedono la risorsa sono detti client, poiché devono richiederla al server.

• Il modello peer-to-peer collega invece due calcolatori dotati di scheda

wireless o sistemi di connessione a infrarossi o bluetooth.

Esistono diverse classi di reti:

• Reti locali (Local Area Network – LAN), usate all’interno di un edificio;

• Reti metropolitane (Metropolitan Area Network – MAN), che collegano nodi

della stessa città;

• Reti geografiche (Wide Area Network – WAN), usate per la comunicazione

tra centri in città, nazioni o continenti diversi.

7. Reti locali e sistemi operativi distribuiti

Gli anni 80 hanno visto nascere l’era dell’informatica distribuita, che ha sostituito

il modello time-sharing multi-utente degli anni 70, che collega molti utenti ad un

unico elaboratore attraverso terminali. E’ infatti molto più conveniente acquistare

molti elaboratori personal e collegarli in rete, anziché un elaboratore potente in

grado di supportare più utenti. Si parla invece di elaboratori eterogenei quando

una rete di personal è collegata a un elaboratore potente da usare in caso di

bisogno di effettuare scambi di informazioni con altri utenti e di accedere a

banche dati remote.

Il modello di funzionamento di una rete locale prevede che un servizio venga

realizzato attraverso un programma di gestione (il software server di quel

servizio), che si occupa delle richieste degli utenti, effettuate tramite il

programma di accesso al servizio (il software client per quel servizio). Questi due

software si accordano su un protocollo di comunicazione con cui si scambiano le

richieste di accesso al servizio.

Per gestire l’elaboratore all’interno della rete si usa il sistema operativo di rete o

il sistema operativo distribuito negli elaboratori più sofisticati. Essi inglobano le

risorse disponibili nella rete, rendendole accessibili come se fossero locali.

Ad ogni elaboratore o risorsa viene associato un nome logico univoco tramite il

name server, che si occupa di mantenere la corrispondenza tra nomi logici e

localizzazione fisica.

Nel caso di rottura del server di una risorsa, è necessario

• cambiarla (ad esempio se si tratta del disco su cui si trovano i programmi

applicativi e i file degli utenti),

• oppure utilizzare la ridondanza: ogni file viene memorizzato su due dischi

nella rete (mirroring del disco), uno dei quali svolge il ruolo di backup.

Alcune reti locali, dette WLAN (Wireless Local Area Network) utilizzano la

tecnologia wireless (senza fili), il cui standard è il WiFi (wireless fidelty). I

dispositivi hardware essenziali per connettere la sottorete WLAN alla rete cablata

sono:

• il terminale wireless, ossia la scheda wireless installata in un dispositivo

intelligente,

• e l’access point, che fa da ponte tra le reti.

Per permettere ai computer di comunicare tra loro, ad ognuno va associato un

indirizzo univoco che lo identifica nella rete: l’indirizzo IP, a cui si aggiunge il

gateway (l’indirizzo del computer che permette l’accesso a internet). L’indirizzo IP

può essere fissato a priori (statico) o negoziato ogni volta che ci si collega alla

rete (dinamico).

Una intranet è una versione ridotta e privata di internet, che gira sulla rete locale

anziché su quella globale.

8. Reti geografiche e internet

La prima rete geografica, ARPAnet, venne sviluppata negli Stati Uniti dagli anni

70 per collegare centri di ricerca. In Italia, l’agenzia GARR (Gruppo

Armonizzatore Reti) con sede presso il Ministero dell’Università e della Ricerca

Scientifica, coordina la rete geografica che collega università e centri di ricerca.

Le reti commerciali sono invece gestite perlopiù dalle compagnie telefoniche.

I protocolli TCP (Transmission Control Protocol) e IP (Internet Protocol) sono alla

base del funzionamento della rete e sono conosciuti collettivamente con

l’acronimo TCP/IP. Mentre per internet si intende una qualunque rete di reti,

Internet ne indica una specifica.

L’assunzione di partenza per la definizione dei protocolli di inter-networking è che

ogni rete è dotata di un dispositivo detto router, che comunica con gli altri.

L’obiettivo dei protocolli è quindi fornire una visione astratta della comunicazione

all’utente.

La comunicazione nella rete Internet segue un modello formato da 5 livelli,

secondo quanto riportato dai documenti RFC (Request For Comments), redatti

dalla Internet Engineering Task Force, organismo che si occupa di definire gli

Internet standard, ossia le regole che governano la comunicazione in rete.

IP è il protocollo che si occupa della gestione e dell’instradamento di pacchetti

detti datagrammi (datagram). Esso è quindi

• un sistema di comunicazione a commutazione di pacchetto (packet

switching), in cui i messaggi vengono suddivisi in pacchetti instradati

indipendentemente;

• non orientato alla connessione (connectionless), ossia senza connessioni

dirette tra mittente e destinatario, collegati tramite router che non

conservano alcuna storia del percorso;

• non affidabile (unreliable), in quanto il protocollo non garantisce che i

pacchetti arrivino integri e non vi siano errori di trasmissione,

• e con modalità di invio best effort, in quanto il protocollo fa il possibile

affinché ogni pacchetto giunga a destinazione correttamente.

Ciascun elaboratore viene identificato tramite due informazioni che

rappresentano la rete a cui appartiene e un identificativo univoco dell’elaboratore

nella rete stessa. Gli indirizzi IP sono infatti numeri binari, che possono essere

acquistati dai gestori di connessione di rete, che a loro volta li acquistano dai

Registri regionali di Internet. Tali indirizzi

• definiscono il formato dei pacchetti spediti nella rete, essendo costituiti da

header con informazioni di controllo e dati (payload),

• e il loro instradamento tramite router, con cui essi fanno un balzo (hop)

verso la destinazione. Ogni router ha infatti una tabella di routing che

specifica per ogni indirizzo di destinazione quale sia il router migliore a cui

passare il pacchetto, all’interno del quale il campo “time to live” specifica il

numero di balzi entro cui va consegnato.

Il protocollo TCP intende invece la connessione come flusso di dati (byte stream),

ed è

• a commutazione di circuito virtuale: la connessione tra due nodi si

stabilisce in questo caso tramite la stretta di mano a tre vie (three-way

handshake), tra nodo chiamante e chiamato e canale appena aperto;

• orientato alla connessione (connection-oriented): essendo costruito su IP,

TCP fa viaggiare i dati su un canale creato tra i due nodi, ma usando i

protocolli IP sottostanti. Il flusso di byte in arrivo dal livello superiore viene

suddiviso in segmenti a cui si aggiunge un header TCP;

• affidabile (reliable), poiché pur utilizzando l’inaffidabile IP, TCP utilizza una

strategia detta comunicazione con messaggio di conferma di ricezione

(positive acknowledgement), che stabilisce un tempo entro cui ci si aspetta

di ricevere conferma dell’avvenuta ricezione del messaggio. Se superata, si

invia nuovamente il messaggio.

TCP è inoltre un protocollo full duplex, che permette una comunicazione

simultanea nelle due direzioni su un unico canale.

I servizi che usiamo comunemente sono resi possibili dall’uso di specifici

protocolli applicativi.

Uno di questi consente definizione ed uso di indirizzi logici in sostituzione di quelli

fisici, strutturando lo spazio dei nomi secondo un meccanismo gerarchico basato

sul concetto di domini, in cui gli elaboratori possono essere raggruppati. Ad ogni

elaboratore si assegna un nome logico unico nel dominio, che può diventare un

sotto-dominio se inserito in un altro. Per Internet si è quindi definito un insieme

di domini di primo livello (al di sotto di un’ipotetica radiche del dominio

universale):

• nazionali (it, uk, ecc.),

• trans-nazionali, legati all’attività svolta dalle organizzazioni (edu, org, gov,

ecc.).

il funzionamento della posta elettronica si basa invece sul protocollo SMTP

(Simple Mail Transfer Protocol), definito al di sopra di TCP. Gli indirizzi di posta

sono associati ai domini Internet (es.: nomecasella@nomedominio.it). Ogni

informazione viene trasferita in formato testo ristretto al codice ASCII.

L’estensione MIME (Multipurpose Internet Mail Extension) permette di associare

ai messaggi testuali informazioni trattate come allegati (attachment). La codifica

di trasferimento è spesso la quoted-printable, che codifica caratteri alfanumerici e

contenuti non ASCII. Inoltre, per evitare la dispersione dei messaggi, sono stati

introdotti due protocolli:

• POP3 (Post Office Protocol), che fa scaricare la posta in locale,

• ed IMAP (Internet Mail Access Protocol), che permette di mantenere i

messaggi sul server, dove l’utente può organizzarli in directory.

Per il trasferimento di file tra elaboratori in rete si usa il protocollo applicativo FTP

(File Transfer Protocol), al di sopra ci TCP/IP, che consente download

(trasferimenti da server a client) e upload (da client verso server), in forma

testuale o binaria. Solitamente l’elaboratore su cui viene installato il server FTP

viene a sua volta denominato ftp. Tale protocollo può essere utilizzato in diversi

modi:

• FTP con autenticazione,

• FTP anonimo, che consente l’accesso a qualunque utente con username

anonymous e come password il suo indirizzo email.

Il protocollo applicativo Telnet (anch’esso costruito su TCP/IP) consente invece di

effettuare una connessione per lavorare da remoto su un elaboratore della rete.

HTTP è invece il protocollo applicativo di Internet alla base del funzionamento del

World Wide Web, costruito su TCP/IP e sull’approccio client/server. Il web è un

deposito di informazioni collegate da legami ipertestuali. Lo standard del web

prevede la costruzione di tali documenti in linguaggio HTML, visualizzato per

mezzo di programmi applicativi detti browser, che forniscono strumenti per

supportare la navigazione (es.: bookmark). Il server HTTP si occupa di accettare

le richieste (HTTP request) e fornire i documenti richiesti o i messaggi di errore

(HTTP response). Il client invia una richiesta formata da header con informazioni

sull’indicazione del documento richiesto e il browser utilizzato, e un’entity body in

caso di moduli compilati online o upload di file. L’indirizzo specificato nella barra

degli indirizzi del browser è detta URL (Uniform Resource Locator), e contiene il

protocollo che si vuole utilizzare per la connessione, l’indirizzo del server e la

risorsa richiesta. Nel caso del web il nome assegnato all’elaboratore su cui viene

installato un server web è www. Il browser si collega ad esso per trasferire il

contenuto, usando strategie di velocizzazione:

• Memoria cache del browser (in RAM e/o su disco), in cui sono memorizzate

le ultime pagine caricate dall’utente, e che permette quindi di caricare

velocemente le pagine ad accesso frequente;

• Proxy server, nodi della rete che fanno da ponte nella connessione in rete

tra client e server, e cui vengono quindi delegati i compiti di scaricamento

di informazioni.

• Cookie, file di testo prodotto dai server e memorizzato sul calcolatore client

per identificare l’utente e proporre contenuti su misura.

Tra gli altri protocolli e servizi applicativi più usati ricordiamo il servizio di news

per la creazione di gruppi di discussione (newsgroups), in cui ognuno può vedere

i messaggi degli altri utenti e rispondere. Le liste di discussione sono

generalmente monotematiche e raggruppate per tema.

Ogni sito web è collegato ad altri, creando così la ragnatela ipertestuale in cui si

può navigare. Esistono poi

• indici e motori di ricerca che aiutano il navigatore a localizzare il sito di suo

interesse,

• e portali, punti di accesso generalisti o tematici, che forniscono

collegamenti ai siti di possibile interesse.

Il linguaggio per la costruzione delle pagine web è l’HTML (HyperText Markup

Language), introdotto da Tim Berners-Lee, che permette di realizzare legami

ipertestuali. Tale linguaggio appartiene alla famiglia dei markup, che permettono

di specificare come un insieme di informazioni deve essere impaginato e

visualizzato, tramite istruzioni dette tag o comandi.

I motori di ricerca usano software appositi detti crawler, spider o robot, che

scandagliano continuamente il web pubblico e includono nel proprio archivio gli

indirizzi di tutte le pagine web individuate. Ad ognuna viene attribuito un valore

che rappresenta un “indice di qualità” (ranking) basato sul testo e sui link

entranti da parte di altre pagine e siti che hanno a loro volta ranking alto. Al

contrario, i siti fittizi (link farm) sono penalizzanti poiché contengono un numero

elevato di link che puntano al sito o alla pagina web cui si vuole alzare la

popolarità.

L’insieme delle tecniche che permettono di migliorare la visibilità di un sito si

indica con referenziamento o posizionamento, che coinvolge titolo, formato

dell’url e parole chiave.

Una caratteristica importante di TCP/IP è che le informazioni viaggiano in chiaro,

ossia si mantengono in forma leggibile e possono quindi essere letti da chi li

intercetta. Tale operazione è detta sniff.

La crittografia è l’insieme di tecniche con cui si possono trasformare i messaggi in

forma cifrata, così che solo gli utenti che conoscono la tecnica usata per

trasformarli possono leggerli, in quanto possiedono la chiave di codifica e

decodifica. Tra tali tecniche abbiamo:

• La tabella di conversione, che contiene le chiavi di cifratura, ossia le

corrispondenze.

• La chiave simmetrica si basa su una funzione f, applicata da chi cifra e

legge il messaggio.

• La chiave asimmetrica prevede invece due chiavi di cifratura, una privata

ed una pubblica, disponibile a tutti gli altri utenti

Quest’ultima permette anche di definire un sistema di firma elettronica. Esistono

in rete Autorità di certificazione che verificano l’identità degli utenti, certificano la

corrispondenza tra chiave pubblica e individuo/azienda. Quando si firma un

documento, si può quindi aggiungere alla firma l’indirizzo del proprio certificato.

Esistono inoltre versioni sicure dei protocolli applicativi, tra cui HTTPS, SSL-Telnet

(che consente di creare connessioni remote sicure) e S-FTP (per trasferire

credenziali di autenticazione e dati).

Per connettersi da casa occorre scegliere il provider da utilizzare per il

collegamento, valutando il punto di accesso (POP) che essi hanno nel proprio

distretto telefonico. Ogni volta che si esegue il collegamento, tale provider dovrà

infatti assegnare al computer un indirizzo IP temporaneo.

L’uso di internet nelle aziende può essere diviso in 3 settori:

• Internet, per le relazioni col mondo esterno;

• Intranet, per il settore interno, ossia una rete privata per gli elaboratori

interni all’azienda, usata per fornire strumenti applicativi per

comunicazione, condivisone di informazioni e conoscenza aziendale tramite

il portale aziendale. A ciò spesso si aggiungono software specializzati per la

gestione del lavoro, l’analisi e l’editing simultaneo di documenti e il

supporto alle decisioni. Software detti firewall filtrano ogni messaggio che

transita dalla rete aziendale, scegliendo quali far passare e quali no in base

a indirizzo IP di partenza e destinazione, protocollo in uso, utente ed ora;

• Extranet, per le relazioni con le aziende partner, una rete virtuale con un

insieme di servizi.

Una rete VPN (Virtual Private Network) permette a computer dislocati in sedi

diverse di stabilire un collegamento tramite Internet, crittografando i dati e

inviandoli solo a un computer (o a un gruppo).

Per ogni tipologia di file, esistono elementi descrittivi diversi. Le informazioni che

descrivono le risorse sono meta-informazoni (o meta-dati) attribuiti agli autori e

termini contenuti nei documenti testuali. La realizzazione di un Web Semantico

prevede invece che agli oggetti presenti in rete siano associati meta-dati

significativi che permettano di descriverli e metterli in relazione reciproca. Da

tempo si lavora alla definizione di linguaggi standard tra cui il Resource

Description Framework (RDF), che permette codifica, scambio e riutilizzo di

meta-dati associati alle risorse web.

Le nuove forme lavorative portare da Internet sono principalmente le varie forme

di telelavoro (domiciliare, mobile, nei centri), nato in Svezia e non più basato in

luoghi aziendali. Con il termine Web 2.0 o Social web si indica invece l’evoluzione

nel modo dell’utente di interagire con alcuni siti internet da parte. Esso facilita la

collaborazione tra utenti e la condivisione dei contenuti, nonché un’esperienza di

navigazione più semplice e coinvolgente.

Se i siti web rappresentano l’aspetto informativo e le comunità virtuali quello

relazionale della rete, Wikipedia si può considerare a metà strada tra i due.

La Legge Urbani del 2004 vieta invece l’uso di reti peer-to-peer per scaricare ogni

tipo di file.

Per fare acquisti sicuri in rete occorre invece scegliere bene la password e tenere

in considerazione i feedback sulla serietà del venditore online, nonché sul

prodotto, di cui va analizzata la descrizione. Il pagamento online deve essere

effettuato con metodi sicuri che non coinvolgono false e-mail (phishing), in cui si

chiedono dati riservati

9. Sistemi operativi analisi delle principali famiglie

Il sistema operativo M/DOS nasce nell’81 per supportare i computer IBM. La

prima versione, Windows 2.0, esce nel 1985, per poi evolvere nei prodotti

commerciali in cui via via migliorerà la gestione della memoria, la sicurezza dei

dati e la connessione veloce a banda larga. Windows 2000 è stato il primo ad

essere commercializzato in più versioni, pensate per il mondo dei server e per

l’ambito professionale. Windows XP è stato invece la prima soluzione unica. Prima

di Vista, era obbligatorio integrare applicazioni di terze parti per difendersi da

virus e applicazioni dannose.

Le versioni del sistema subiscono aggiornamenti (Service Pack), distribuiti o

scaricabili dal sito della Microsoft. Gli aspetti di configurazione del sistema

operativo sono gestiti tramite il pannello di controllo, mentre per configurazioni

più sofisticate è necessario lavorare sul registro di sistema. La struttura

gerarchica riunisce in un unico file i parametri di configurazione, funzionamento,

monitoraggio hardware e software. La struttura di più alto livello è composta da 6

chiavi (key), che equivalgono a directory per: hardware/software e sicurezza,

utenti e profili, prestazioni, hardware e utente corrente. Abbiamo quindi due

grandi ambiente: il sistema operativo in senso stretto e il sottosistema ambiente.

I più importanti livelli sono:

• HAL (Hardware Abstraction Level), che rende compatibili sistema operativo

e hardware;

• L’area esecutiva, composta da gestore di oggetti (file, directory), di

dispositivi I/O (anche futuri), processi, memoria, sicurezza, cache,

Plug&Play (PnP), alimentazione (spegnimento e carica della batteria),

configurazione e di chiamate di procedure locali (comunicazione tra

processi);

• Servizi di sistema, in cui ogni sottosistema è dotato di una famiglia di API,

funzioni di libreria, che permettono di far lavorare correttamente prodotti

sviluppati per alcune versioni di Windows anche nelle versioni successive

del sistema operativo.

Windows 2000 permetteva inoltre di cifrare tutti i dati dell’hard disk per

proteggerli dalla lettura in caso di furto. Ogni utente è identificato da un SID

(Security ID) registrato in forma cifrata, che identifica tutte le operazioni richieste

da quell’utente.

.NET (dot net) è una piattaforma per la creazione e l’utilizzo di applicazioni

distribuite, pensata per essere integrata ad Internet e per risolvere il problema

della portabilità del codice.

Unix non è legato ad alcuna macchina hardware o architettura. Ad ogni utente è

riservata una home directory. Gli utenti sono suddivisi in gruppi, in modo da

poter specificare quali operazioni e file sono accessibili a quali utenti.

Linux nasce nel 91 come progetto di laurea di uno studente finlandese, che si

proponeva di creare un ambiente grafico espandibile, aperto e completo, basato

sul sistema Minix, ambiente operativo didattico e funzionale, derivato da Unix.

Linux è il primo sistema operativo libero, il cui codice sorgente veniva distribuito

insieme ai prodotti.

Le principali distribuzioni di Linux sono:

• Debian, con avanzato sistema di gestione dei pacchetti,

• Ubuntu, adatto agli utenti comuni per facilità d’uso e frequenti

aggiornamenti,

• Fedora, distribuita per utenti domestici;

• openSUSE, che prevede diverse modalità di installazione a seconda degli

obiettivi ed un panello di controllo grafico molto avanzato (YAST),

• slackware, con un’interfaccia molto semplice da usare.

Esistono due famiglie di kernel:

i microkernel, in cui la comunicazione tra moduli del sistema operativo sono

ottimizzati per la risoluzione di problematiche specifiche;

il kernel monolitico è invece usato da Linux, ed è organizzato in un unico file

contenente le sole parti scelte dall’installatore, ottimizzate, con conseguente

buona velocità di esecuzione.

Il file system, specialmente nella sua versione EXT3, ha meccanismi sofisticati

per gestire i file e l’integrità delle informazioni anche in caso di crash del sistema.

Per accede a un file secondario (remoto) si utilizza la tecnica del mount, ossia la

definizione di un collegamento in un punto di innesto nell’albero del file system

principale. Lo spazio del disco principale è organizzato secondo una struttura

chiamata FHS (File System Hierarchy Standard), che identifica la radice (root)

con il carattere /. Essa ha cinque directory fondamentali:

• /bin, per comandi di base e autenticazione;

• /sbin, per comandi basilari per la gestione del sistema;

• /dev, che contiene i dispositivi per accedere a periferiche e memorie

secondarie;

• /etc, per la configurazione del sistema;

• /home, in cui sono generate le sotto-directory dei singoli utenti;

• /lib per le librerie condivise;

• /tmp per i file temporanei;

• /var per dati variabili e code di stampa;

• /urs per i programmi.

Linux integra le periferiche nel file system trattandole come memorie secondarie

e permette la crittografia di documenti di testo con la doppia chiave pubblica e

privata. L’applicazione X Window funge da server grafico per i programmi. Il

compilatore compatibile con tale linguaggio scelto da Linux è GCC (GNU Compiler

Collection). Esistono inoltre strumenti offerti, tra cui OpenOffice e Gimp (per la

manipolazione delle immagini).

Mac OS X unisce le potenzialità di elaborazione di Unix con la filosofia Mac di

controllo delle funzioni utente tramite grafica avanzata e animazione

tridimensionale. Il rischio di virus qui è molto contenuto.

Esistono poi sistemi operativi per palmari e smartphone:

• Windows Mobile, che offre la suite Office in versione ridotta;

• Mac OS per iPhone, limitato dall’impossibilità di gestire più processi alla

volta, ma favorito da un unico negozio online da cui si possono scaricare le

applicazioni principali;

• Android, sistema operativo derivato da Linux;

• Symbian, utilizzato da Nokia, in cui finché non si scatena un evento

(pressione di un tasto, ecc.), la CPU si disabilita, risparmiando la carica

della batteria.

In sostanza,

• Windows è pratico, semplice da usare, con molti comunità di supporto,

servizi e software installabili. Essendo il più noto è più facile trovare

personale per assistenza e sviluppo.

• Linux offre una vasta scelta di interfacce e software free, permette di

ottimizzare il proprio sistema e ha una notevole facilità di aggiornamento.

• Mac è sicuro e attento a grafica, musica ed editing.

10. Software e programmazione

Se un programma è sviluppato per un particolare tipo di elaboratore, si dice che

non è portabile, poiché per essere eseguito su macchine diverse, va riscritto. I

primi linguaggi di programmazione sono nati assieme ai moderni elaboratori. Tali

programmi non sono direttamente eseguibili dall’elaboratore: si dovrà quindi

usare un meccanismo intermedio, che riconosca le istruzioni del linguaggio ad

alto livello e lo traduca in sequenze di istruzioni in linguaggio macchina.

Nei linguaggi di programmazione è fondamentale definire un lessico di parole

chiave.

Tali linguaggi sono caratterizzati da:

• Espressività, che determina la velocità con cui si risolvono i problemi;

• Leggibilità, possibilità di comprensione;

• Robustezza, capacità di prevenire gli errori;

• Modularità, capacità di favorire la suddivisione di un programma in parti di

codice per semplificare creazione, manutenzione e correzione degli errori;

• Flessibilità, possibilità di estendere un linguaggio con la definizione di nuovi

comandi;

• Generalità, facilità di utilizzo in diversi campi di applicazione;

• Efficienza, sia in termini di memoria che di velocità.

Gli analizzatori sintattici o parser sono in grado di analizzare le stringhe

(sequenze di parole) e scoprire se esse rispettano la grammatica del linguaggio di

programmazione. Tuttavia la conoscenza sintattica non è sufficiente per cogliere

le differenze fra frasi sintatticamente ambigue.

L’obiettivo del linguaggio di programmazione è una sintassi semplice, con un

livello di astrazione adeguato all’utente e meno frasi ambigue possibili. A partire

dalla grammatica di un linguaggio di programmazione è possibile costruire un

parser, un analizzatore sintattico, che individui le stringhe relative ai programmi.

Successivamente, tali istruzioni saranno tradotte in istruzioni equivalenti in

linguaggio macchina, grazie a:

• Compilazione, quando la traduzione viene eseguita da un programma che

fa parte del software di base, detta compilatore per un tale linguaggio su

una tale macchina. il programma sorgente viene quindi analizzato,

segnalando all’utente eventuali errori, per poi passare alla generazione del

programma equivalente in linguaggio macchina (programma oggetto).

• L’interpretazione si pone invece l’obiettivo di non tradurre il programma a-

priori, ma man mano che esso viene eseguito, tramite l’interprete per tale

linguaggio su tale macchina. Si allungano quindi i tempi di esecuzione.

I diagrammi di flusso permettono di descrivere in modo grafico le azioni che

costituiscono un algoritmo: ogni azione elementare è rappresentata da un blocco,

collegato da archi orientati. Distinguiamo:

• blocchi di inizio/fine, di forma ellissoidale,

• di azione da eseguire (in rettangoli),

• condizionali, per differenziare il flusso di esecuzione a seconda del risultato

della valutazione di una condizione (vero of falso), in figure romboidali,

• di input/output (parallelepipedo), usati per specificare le azioni di

ingresso/uscita di dati.

I diagrammi possono essere composti tra loro utilizzando i corretti costruttori,

dando quindi vita a diagrammi di flusso strutturati, che corrispondono a uno stile

di programmazione detto programmazione strutturata, poiché consentono una

descrizione ordinata degli algoritmi.

Si può utilizzare un linguaggio testuale (come in Pascal e C), basato sulle coppie

begin-end, if-then-else, ecc..

Si usa il termine complessità computazionale per indicare il tempo o la quantità

di memoria necessari per eseguire un algoritmo o programma. L’ingegneria del

software ha cercato di formalizzare i passi dello sviluppo di un programma:

1. Analisi del problema, del tipo di macchina e dei linguaggi di

programmazione utilizzabili su di essa;

2. Progettazione dello schema di base, con stesura dell’algoritmo per la

soluzione del problema seguendo solitamente un approccio top-down, ossia

definendo un algoritmo astratto le cui parti vengono poi raffinate;

3. Codifica dell’algoritmo, nel linguaggio di programmazione scelto;

4. Verifica di correttezza

5. Correzione (debugging), svolta provando su dati campione

l’algoritmo/programma (operazione di testing), tracciandone l’esecuzione

per comprenderne gli errori. Tutti i programmi in commercio hanno

comunque bug (o bachi), casi particolari in cui si comportano in modo non

corretto;

6. Stesura della documentazione e manualistica per l’uso del programma;

7. Manutenzione e revisione;

8. Aggiornamento del programma in risposta a nuove esigenze.

Tra gli strumenti per la programmazione ricordiamo, quindi:

• Editor, per la scrittura dei programmi, che forniscono comandi speciali per

facilitare il programmatore;

• Compilatori e interpreti per eseguire i programmi e individuare gli errori

sintattici;

• Debugger, strumenti di aiuto per la fase di verifica;

• Sistemi di mantenimento di versioni diverse dei programmi, in grado di

ricordare le modifiche fatte nel corso dello sviluppo del programma.

Tutti i linguaggi di programmazione condividono concetti di base:

• Astrazioni sui dati, che implicano il considerare la memoria non come

insieme di bit ma di strutture logiche di dati, ossia un insieme di celle con

indirizzo. Abbiamo quindi: la variabile (la cella di memoria che ha un nome

e un valore, ossia un’etichetta che indica l’indirizzo della locazione di

memoria e il dato), il tipo di dato (e le conseguenti operazioni effettuabili) e

le strutture dati.

• L’astrazione sul controllo offre invece strutture di controllo che permettono

di governare il flusso di esecuzione di un programma.

Esistono numerose famiglie di linguaggi di programmazione riconducibili a diversi

paradigmi di programmazione:

• Imperativi o procedurali (come C e Pascal), ossia i linguaggi che dicono

come il programma deve risolvere un problema, attraverso istruzioni dette

comandi.

• Logici o dichiarativi (come Prolog), linguaggi che descrivono cosa deve

essere risolto, dando un insieme di regole o clausole che descrivono

proprietà di dati e modi in cui questi possono trasformarsi.

• Funzionali (come Lisp), basati sul concetto di funzione matematica, in cui le

istruzioni sono funzioni che, dato un certo input, restituiscono un certo

output.

• Orientati agli oggetti (OOP - Object Oriented Programming, come Java e

C++), classi di linguaggi basati sul concetto di oggetto, dotato di proprietà

(dati) e metodi (procedure), che operano su oggetti che, a loro volta,

eseguono istruzioni e si scambiano i messaggi. Tale paradigma è diffuso in

ambito di progettazione e sviluppo di software.

Per software open source si intende un software i cui autori ne permettono lo

studio e la modifica, rendendo disponibili gli eseguibili dall’utente e i sorgenti.

Esistono alcune differenze tra:

• Linguaggi di programmazione, formali, che consentono di esprimere

strutture dati e sequenze di istruzioni per risolvere un problema;

• Linguaggi di scripting, per la stesura dei programmi;

• Linguaggio di markup, per formattare dati tramite l’uso di marcatori (tag).

11. Il software applicativo

Un programma applicativo mandato in esecuzione, crea un ambiente virtuale che

fornisce comandi specializzati per il compito da svolgere, e si sovrappone a quello

generato dal sistema operativo.

I programmi per l’elaborazione dei testi si distinguono in:

• Word processor, che forniscono comandi per la preparazione del testo e

operano in modalità WYSIWYG (What You See Is What You Get), ossia

permettono di vedere il documento sullo schermo.

• Nei formattatori di testo, invece, si devono inserire nel documento sia il

testo che i comandi per composizione e impaginazione.

• Abbiamo poi programmi per impaginazione e desktop publishing,

• Formati di interscambio che trasformano documenti impaginati con un

programma di elaborazione, in uno leggibile da un altro programma.

Un formato molto usato è l’RTF (Rich Text Format), che memorizza il testo e le

informazioni necessarie per impaginarlo utilizzando una codifica standard, ed è

quindi facilmente trasferibile.

Alcune stampanti (come le laser) stampano documenti salvati in formato

PostScript, un linguaggio di descrizione del documento stesso (larghezza di

margini, stile, ecc.), la cui traduzione viene effettuata automaticamente dal

programma di elaborazione di testi. Sarà quindi la stampante, dotata di un suo

processore, ad interpretare il linguaggio.

L’obiettivo di un sistema di gestione di una base di dati è di memorizzare in

forma strutturata grandi quantità di informazioni, rendendo possibile modifica e

reperimento. Sono quindi stati definiti programmi applicativi detti DBMS (Data

Base Management Systems), che necessitano di dati omogenei dal punto di vista

delle informazioni. Un linguaggio comunemente usato per definire le

caratteristiche concettuali di una base di dati è quello degli schemi entità-

relazione, che individua tutte le entità da gestire (con le loro proprietà dette

attributi) e le relazioni tra queste. Il nome di livello logico della base di dati è

indipendente dalla sua implementazione, ossia dal livello fisico, che si occupa

della memorizzazione delle informazioni in memoria secondaria. L’utente deve

quindi avere a disposizione i linguaggi di interrogazione, per cercare le

informazioni desiderate, in modo semplice. I dati memorizzati sono inoltre

soggetti a vincoli, che, se rispettati, rendono la base consistente, cosa che il

sistema di gestione si occupa di mantenere, gestendo correttamente l’accesso

multiplo ai dati per prevenire errori come modifiche simultanee. Il linguaggio SQl

(Structured Query Language) è di tipo testuale, e permette quindi di modificare,

inserire, cancellare e interrogare dati.

Le informazioni non strutturate, come quelli contenuti in un insieme di file di

testo, si gestiscono con strumenti di indicizzazione dei documenti: da ogni

documento vengono estratte una serie di parole, dette indici. All’interrogazione

dell’utente vengono cercati gli identificatori di tutti i documenti indicizzati da

quella parola. Tale principio è alla base delle tecniche di information retrieval:

• Normalizzazione, ossia eliminazione dal testo delle parole non rilevanti

(stopword), e conservazione delle radici, di cui verrà calcolata la frequenza

di occorrenza.

• La tecnica per cui si considerano indici quelle più ricorrenti è detta TF/IDF

(Term Frequency/Inverse Document Frequency).

• E’ opportuno inoltre individuare nei documenti le parole che occorrono nel

titolo e nei titoli dei capitoli/paragrafi.

• HTML e XML prevedono inoltre meta-tag nell’intestazione del documento,

con cui l’estensore del documento può fornire informazioni sulle parole da

usare come indice.

I fogli elettronici (spreadsheet) permettono di effettuare elaborazioni

matematiche su dati e realizzarne grafici, fornendo all’utente una matrice

bidimensionale di celle da riempire con informazioni di vario tipo e funzioni

matematiche, con conseguente possibilità di elaborare dati in forma di matrici.

Esistono inoltre molti programmi che consentono visualizzazione, elaborazione,

montaggio di immagini e/o filmati e/o suoni digitali, in determinati formati.

In un documento HTML, le principali istruzioni che possiamo trovare sono:

• HTML, che specifica che tutto ciò che è scritto tra i comandi <html> e

</html> è scritto in tale linguaggio;

• HEAD specifica che il testo compreso tra tali comandi è l’intestazione della

pagina;

• BODY si utilizza per il corpo della pagina;

• I comandi H1 … H6 permettono di definire i livelli dei titoli in un

documento;

• Il comando B specifica che il testo racchiuso è in grassetto;

• P che inizia un nuovo paragrafo;

• UL, un elenco non numerato;

• IMG serve per inserire delle immagini;

• A permette di specificare legami ipertestuali.

• I tag permettono inoltre di inserire tabelle, moduli (form), image Map con

parti cliccabili.

Lo stesso documento (se non valido) può tuttavia essere visualizzato in modo

inconsistente da browser diversi.

Agli inizi del Web, l’informazione inviata in risposta ad una richiesta dell’utente

era statica. Sono poi state introdotte estensioni, ossia la programmazione lato


ACQUISTATO

1 volte

PAGINE

31

PESO

300.40 KB

PUBBLICATO

10 mesi fa


DETTAGLI
Esame: Informatica
Corso di laurea: Corso di laurea magistrale in comunicazione pubblica e d'impresa
SSD:
Università: Milano - Unimi
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher GiovannaUrb di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Milano - Unimi o del prof Scienze matematiche Prof.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!