Informatica
Luca Mennella
Date: September 11, 2023
University of Trento
Biomolecular Science and Technology
Via Sommarive 9, 38123 Povo (TN), Italy
1
Informatica: introduzione
- Nozioni basilari sul linguaggio Python
- Obiettivo: creare semplici programmi in linguaggio Python
- Introduzione a vari sistemi operativi come Linux
- Algoritmi e programmazione
- Programmi utili in biologia computazionale (non sono programma di esame, servono solo a mostrarne le applicazioni pratiche
- C’è un libro di testo, ma sono sufficienti le lezioni caricate su Moodle e gli appunti
- Il corso è strutturato in 24 ore di lezioni frontali e 36 ore di laboratorio
- C’è tutorato
- Mail: luca.turchet@unitn.it
- Esame composto da due parti: la parte 1 consiste in una prova scritta su carta con domande di teoria sul contenuto del corso ed esercizi in Python da risolvere (punteggio da 0 a 11). La parte 2 consiste in una prova a terminale dove verrà chiesto di scrivere un programma Python secondo una consegna (punteggio da 0 a 20). La parte 2 dell’esame è corretta solo se la parte 1 è almeno sufficiente (almeno 6 punti per la prima parte; almeno 11 per la parte 2 ma il punteggio totale deve essere maggiore o uguale a 18.
- Non ci sono prove parziali
- Non ci sono prove aggiuntive: appelli sono 5 all’anno
Sistemi operativi
Il sistema operativo (SO) è un’infrastruttura software che si pone come interfaccia tra l’infrastruttura hardware e l’utente (o il software applicativo: editor di testi, browser web, ecc.). Esso consente di utilizzare le risorse del sistema informatico senza preoccuparsi delle loro caratteristiche fisiche (es. tipo di processore, dimensione del bus dati, tipo di schermo). Inoltre, consente l’utilizzo concorrente del sistema da parte di più programmi (multitasking: si possono usare più programmi contemporaneamente) ed eventualmente utenti (sistemi multiutente, ovvero che ci possono essere più utenti collegati alla stessa macchina) rendendo trasparente la gestione della concorrenza nell’utilizzo delle risorse. Esiste una grande quantità di sistemi operativi diversi: UNIX, Ubuntu GNU/Linux, Apple Mac OS X, Microsoft Windows, Android, Apple iOS.
Sistema UNIX
Il sistema UNIX è nato in America ed è stato sviluppato da ricercatori dei lavoratori AT&T e Bell Labs negli anni sessanta, ed è stato un passo avanti significativo nel panorama dei sistemi operativi. È un sistema multiutente, multitasking, portatile su varie architetture hardware e orientato alla programmazione. Il sistema si è diffuso notevolmente in ambito accademico, poiché veniva distribuito gratuitamente da AT&T ed era particolarmente adatto a supportare applicazioni scientifiche. Attualmente esso è alla base di numerosi sistemi operativi moderni, quali Mac OS X e GNU/Linux. Mac OS ha un’integrazione molto solida tra software e hardware.
Sistema Microsoft Windows
I sistemi Microsoft Windows hanno avuto larghissima diffusione tra gli utenti domestici e nelle aziende. Come tutti i moderni sistemi operativi, si basano su un’interfaccia grafica a finestre e gestiscono il multitasking. Microsoft ha rilasciato una serie di sistemi operativi a partire dalla metà degli anni ’90: Windows 95, 98, 2000, XP, Vista, 7, 8, 10. Inizialmente concepiti per l’uso domestico privo di connessione Internet, tali sistemi sono sempre stati fortemente soggetti a problemi di sicurezza, anche in virtù della loro diffusione che incentivava lo sviluppo di virus ad-hoc.
2
Sistemi Mac
I sistemi Mac sono sviluppati da Apple specificatamente per computer Macintosh. Tali sistemi sono caratterizzati da una forte integrazione tra hardware e software, elevate prestazioni come sistemi utente e un’attenzione particolare alla grafica. Le versioni attuali del sistema operativo sono varianti del sistema Mac OS X (leggi dieci). Il kernel del sistema è derivato dal sistema operativo UNIX.
Sistema GNU/Linux
Il sistema GNU/Linux è nato dal connubio del kernel Linux, sviluppato da Linus Torvald a partire dal 1991, e del progetto GNU, lanciato da Richard Stallman nel 1983 per sviluppare un sistema operativo libero. Il sistema è libero nel senso che la sua licenza, denominata GNU General Public License (GNU GPL) è concepita appositamente per proteggere la libertà di utilizzo e modifica del sistema. Il sistema viene fornito comprensivo del codice sorgente (a differenza dei sistemi proprietari, quali Microsoft Windows, che forniscono solo gli eseguibili, ossia il codice macchina), ed è permesso modificare il codice e redistribuirlo liberamente, con il vincolo che la versione modificata mantenga la licenza GNU GPL (quella originale). Questo è possibile solo se il sistema operativo fornisce il codice sorgente. Questo non avviene con gli altri SO come Windows e MAC.
È un sistema operativo open source: è disponibile il codice sorgente, quindi può essere cambiato. Questo può dare anche vantaggi in campo di sicurezza: si può accedere ad un mondo che rende fruibile e gratuito una serie di risorse per gli informatici. Quando si parla Linux, non si parla di SO ma di distribuzione, poiché ci sono tante versioni di questo sistema. Siccome Linux è gratuito, tutto ciò che è stato sviluppato in Linux deve seguire delle regole dettate da una licenza, che tutela l’opensource.
La politica del software libero ha permesso la nascita di una grande comunità di sviluppatori, che lavorano per fornire funzionalità, applicativi e modifiche al sistema per migliorarne l’utilizzo. GNU/Linux è derivato dal sistema UNIX, e ne condivide le caratteristiche di multiutenza, programmabilità, etc. Rispetto a UNIX, i moderni sistemi GNU/Linux hanno notevolmente migliorato l’interfaccia grafica e la semplicità di utilizzo, permettendone la diffusione anche tra i non esperti. Esistono svariate distribuzioni GNU/Linux, che condividono kernel e (tendenzialmente) filosofia di base, ma si differenziano per gli applicativi forniti, le interfacce grafiche, etc.
Sistema GNU/Linux: Ubuntu
Ci sono tante distribuzioni di Linux: quello che useremo noi è Ubuntu che ha acquistato notevole popolarità per la facilità di utilizzo ed il supporto hardware. Ubuntu è una parola africana che significa “fratellanza”.
Ubuntu è una recente distribuzione GNU/Linux che ha acquistato notevole popolarità per la facilità di utilizzo ed il supporto hardware. Il supporto hardware in particolare implica la notevole capacità di riconoscere e configurare le componenti hardware del sistema, e renderlo quindi totalmente fruibile. Il supporto hardware è sempre stato un problema complesso per i sistemi liberi, in quanto i produttori di hardware tendono a fornire driver per i sistemi proprietari (in particolar modo Microsoft Windows) ma non per quelli liberi, e spesso non rilasciano le specifiche tecniche sufficienti per permettere alla comunità di sviluppatori di programmare i driver adatti.
Autenticazione utente
Come tutti i sistemi GNU/Linux (e UNIX), Ubuntu è un sistema multiutente. In fase di installazione, viene creato un utente che corrisponderà all’utilizzatore standard del sistema. L’utente è caratterizzato da un nome e da una password, che vanno forniti all’avvio per poter accedere al sistema.
Autenticazione amministratore
Oltre alla modalità utente, esiste una modalità amministratore che ha i permessi necessari ad eseguire operazioni particolari quali aggiornare il sistema, installare software, etc. Al momento di eseguire operazioni di amministrazione, il sistema richiede la password di amministratore. Di default, Ubuntu garantisce all’utente standard la possibilità di agire da amministratore, quindi la password da fornire è la password utente stessa. La cosa non sarà vera sui sistemi configurati per la multiutenza (quali i computer di laboratorio), in cui l’amministratore ha login e password propri.
3
File system
Il programma grafico di esplorazione del file system permette di navigare nel file system ed aprire file. Il sistema fornisce una rappresentazione ad icone dei file con una preview del loro contenuto. Inoltre, associa di default ad ogni file un programma per aprirlo, che dipende dal tipo del file stesso (file di testo, immagine, etc.). Cliccando due volte con il tasto sinistro sull’icona di un file, si apre con l’applicazione di default. Cliccando con il tasto destro sull’icona, si possono recuperare informazioni sul file o aprirlo con un programma diverso da quello di default.
Aggiornamenti
Ubuntu si installa con tutta una serie di applicativi di utilità, ben più numerosi di una tipica installazione Microsoft Windows (in quanto si tratta di software libero). Spesso è però necessario installare applicativi specifici, che non sono disponibili in una installazione standard. Ubuntu fornisce un sistema di aggiornamento ed installazione di software estremamente semplice ed efficace tramite il Synaptic Package Manager. Tale sistema permette di cercare in un grande archivio online di applicazioni disponibili ma non installate, in cui si trova in genere la maggior parte del software necessario. È sempre possibile scaricare da Internet ed installare software non disponibile tramite tale interfaccia.
Applicazioni
Suite Office
Ubuntu fornisce una versione libera della suite Office, denominata OpenOffice, tendenzialmente compatibile con i formati Microsoft Office. Tale versione fornisce:
- Un software per la realizzazione di testi formattati tipo Word
- Un software per la realizzazione di presentazioni stile PowerPoint
- Un foglio di calcolo stile Excel
Editor di testi
Word serve a realizzare documenti con formattazioni quali titolo sottolineatura, grassetto, etc. e salva tali file in un formato proprio non puramente testuale. Nella programmazione è necessario scrivere file di testo puro che non siano formattati come documento. A tale scopo si devono usare editor di testi che non includano informazione di formattazione, e salvino in testo puro. Per esempio, emacs è un editor di testi che ha il vantaggio di fornire automaticamente funzionalità che facilitano la programmazione.
Applicazioni Internet
- Firefox web browser per la navigazione su Internet
- Mozilla thunderbird o Evolution per la gestione della posta elettronica
- Skype per la comunicazione multimediale a distanza
- E molti altri applicativi
Interprete di comandi
È possibile interagire con il sistema tramite un interprete di comandi a linea aprendo un’applicazione terminale. L’interprete a linea di comandi, rispetto a quello grafico, è meno accattivante, ma se lo si conosce bene diventa tipicamente più rapido e versatile. È sempre possibile lanciare un programma, che è disponibile tramite l’interfaccia grafica (es. OpenOffice), scrivendo il nome dell’eseguibile sulla linea di comando (e premendo Invio).
L’interprete dei comandi agisce in maniera interattiva, eseguendo immediatamente un comando che l’utente scrive al prompt (una volta premuto Invio). Ubuntu, come tutti i sistemi derivati da UNIX, fornisce una vasta gamma di comandi di base disponibili da linea di comando, che permettono di esplorare il file system, modificare files, recuperare informazione selezionata, e fare un gran numero di operazioni. Ogni comando ha un set di opzioni per decidere i dettagli di cosa deve fare, ed un certo numero (anche nessuno) di argomenti su cui opera.
4
Esplorazione del file system: ls
ls (LiSt) elenca il contenuto di una directory.
All’avvio di un terminale, la directory corrente viene fissata alla home dell’utente, al di sotto della quale si trovano tutti i file dell’utente stesso, organizzati in directories.
L’opzione -l (sta per long) permette di stampare informazioni aggiuntive su ciascun file, inclusi:
- Operazioni permesse, per proprietario, gruppo ed altri
- Proprietario e gruppo
- Dimensione
- Data dell’ultima modifica 5
L’opzione -h (sta per human readable) permette di stampare in maniera più comprensibile l’informazione sulla dimensione dei file (implica l’opzione -l). Le opzioni possono essere combinate arbitrariamente (es. -lh).
Aiuto sui comandi: man
Il comando man (MANual) seguito dal nome di un comando stampa informazione relativa al comando stesso. L’informazione contiene la spiegazione di cosa il comando fa, come va lanciato, la descrizione delle opzioni disponibili ed in genere esempi di utilizzo. Man è molto utile per esplorare il funzionamento dei vari comandi di shell, e trovare opzioni nuove o che non si ricordano. Es: eseguendo man ls si ottiene una pagina di manuale relativa ad ls. Tipicamente l’output di man è più lungo dello spazio disponibile nel terminale. Si scorre l’output premendo la barra, se ne esce premendo q (quit).
Esplorazione del file system: cd
Per spostarsi all’interno della struttura a directory del file system, si usa il comando cd (Change Directory). Cd ha come unico argomento la directory in cui si desidera spostarsi. Come per tutti i comandi che prendono come argomenti file, a cd si deve specificare il percorso del file.
Se specificato senza argomenti, cd sposta nella home dell’utente. L’argomento speciale – indica di spostarsi nella directory in cui si era prima di aver eseguito l’ultimo cd (e stampa il nome di tale directory in output). 6
Percorsi di file
Qualunque file, regolare o directory che sia, viene identificato all’interno del file system tramite un percorso di directory, dalla radice al file stesso. Nei sistemi UNIX, la radice del file system è indicata con / ed i separatori tra directory si indicano anch’essi con /. Esistono due modi per specificare il percorso di un file:
- Percorso assoluto: è il percorso complessivo del file, dalla radice fino alla sua posizione nel file system (es. /home/luca/Data)
- Percorso relativo: è il percorso del file a partire dalla directory corrente (es. Labels/label.txt)
Esistono alcuni caratteri che hanno un significato particolare se usati nel percorso di un file. Il carattere tilde ~ indica la home dell’utente, e può essere usato ogni qualvolta si voglia riferirsi ad esse (es. nel mio computer ~ corrisponde a /home/luca).
La sequenza .. indica la directory subito sopra a quella corrente nella gerarchia. Tale sequenza può essere usata più di una volta per risalire la gerarchia in un solo passo.
Modifica del file system: cp
cp (CoPy) serve a copiare file da un posto all’altro. Cp prende come argomenti: un file da copiare, ed un file o una directory di destinazione. Come sempre si specifica un nome di file, si può usare un percorso assoluto, o relativo alla directory corrente.
- Se la destinazione è un file, cp crea un file con quel nome e vi copia il contenuto del file dato come primo argomento
- Se la destinazione è una directory, cp crea in tale directory un file con lo stesso nome del file da copiare, e vi copia il contenuto
cp permette di copiare più files in una directory con un solo comando. Cp si aspetta infatti di avere un numero variabile di argomenti, minimo due. L’ultimo argomento sarà sempre la destinazione in cui copiare. Tutti gli argomenti precedenti sono i file da copiare. Il risultato è che ciascun file viene copiato nella destinazione. Se più di un file viene copiato, la destinazione dovrà essere un nome di directory (in cui verranno copiati i file).
Se la directory di destinazione non esiste, si genera un errore.
Se la destinazione è un file normale e non una directory, si genera un errore.
Di base, cp copia files e non directories.
L’opzione –r (ricorsivo) permette deve essere un nome di directory, che se non esiste verrà creata ed in cui verranno copiati ricorsivamente tutte le directory ed i file contenuti nella sorgente. 7
Se la cartella di destinazione esiste è possibile copiare o il contenuto della cartella sorgente oppure la directory sorgente stessa. Nel primo caso basta aggiungere il carattere / al nome della cartella sorgente, nel secondo caso non bisogna aggiungerlo. Esempio del primo caso, quello con / (qui la cartella di destinazione analysis2 esiste ed è vuota):
Esempio del secondo caso, quello senza / (anche qui la cartella di destinazione analysis2 ed è vuota; alla fine conterrà la cartella analysis1):
Modifica del file system: mv
Il comando mv (MoVe) serve a spostare file all’interno del sistema, o a rinominarli. mv prende come argomenti uno o più file o directory, ed un file o directory di destinazione, come cp. Con un argomento di ingresso (file o directory) ed un argomento di destinazione che non esiste, mv rinomina l’ingresso con il nome della destinazione.
Con un file in ingresso ed un file destinazione già esistente, mv sposta l’ingresso nell’uscita, sovrascrivendo il suo contenuto. 8
Con uno o più file o directory in ingresso ed una destinazione che è una directory, mv sposta gli ingressi nella destinazione.
Se la directory di destinazione non esiste, si genera un errore.
Se la destinazione è un file normale e non una directory, si genera un errore.
Altri comandi e procedimenti
La “freccia in su” permette di navigare la history di tutti i comandi.
pwd: print working directory → permette di vedere dove si trova in questo momento.
. . (due punti) è il comando per entrare nella cartella precedente.
L’ultimo argomento deve essere la destinazione.
Control r: cerca un comando all’interno dell’history.
Cos’è l’informatica?
È una scienza che studia l’informazione. È nata per studiare gli algoritmi, i procedimenti ovve
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.