1.2 Lezione 1
Certificazione: |
Linux Essentials |
---|---|
Versione: |
1.6 |
Argomento: |
1 La Comunità Linux e una Carriera nell’Open Source |
Obiettivo: |
1.2 Principali Applicazioni Open Source |
Lezione: |
1 di 1 |
Introduzione
Una applicazione è un programma per computer il cui scopo non è direttamente legato al funzionamento interno del computer, ma ai compiti eseguiti dall’utente. Le distribuzioni Linux offrono molti tipi di applicazioni per eseguire molteplici attività: applicazioni per ufficio, browser web, lettori ed editor multimediali, etc. Spesso c’è più di una applicazione o di uno strumento per eseguire un particolare lavoro: spetta all’utente scegliere l’applicazione più adatta alle proprie esigenze.
Pacchetti Software
Quasi ogni distribuzione Linux offre un insieme preinstallato di applicazioni predefinite. Oltre alle applicazioni preinstallate, una distribuzione ha un repository di pacchetti con un’ampia raccolta di applicazioni disponibili per l’installazione tramite il package manager. Sebbene le varie distribuzioni offrano più o meno le stesse applicazioni, esistono diversi sistemi di gestione dei pacchetti per le varie distribuzioni. Per esempio Debian, Ubuntu e Linux Mint, utilizzano gli strumenti dpkg
, apt-get
e apt
per installare pacchetti software, generalmente indicati come pacchetti DEB. Distribuzioni come Red Hat, Fedora e CentOS utilizzano invece i comandi rpm
, yum
e dnf
, che a loro volta installano pacchetti RPM. Poiché il pacchetto di una applicazione è diverso per ciascuna famiglia di distribuzione, è molto importante installare i pacchetti dal repository corretto progettato per la specifica distribuzione. L’utente finale di solito non deve preoccuparsi di questi dettagli, poiché il gestore dei pacchetti della distribuzione sceglierà i pacchetti giusti, le dipendenze richieste e gli aggiornamenti futuri. Le dipendenze sono pacchetti aggiuntivi richiesti dai programmi. Per esempio, se una libreria fornisce funzioni per gestire le immagini JPEG utilizzate da vari programmi, è probabile che tale libreria venga “impacchettata” nello stesso pacchetto da cui dipendono tutte le applicazioni che usano la libreria.
I comandi dpkg
e rpm
operano su singoli file di pacchetto. In pratica, quasi tutte le attività di gestione dei pacchetti sono eseguite dai comandi apt-get
o apt
su sistemi che utilizzano pacchetti DEB o da yum
o dnf
su sistemi che utilizzano pacchetti RPM. Questi comandi funzionano con cataloghi di pacchetti, possono scaricare nuovi pacchetti e le loro dipendenze, verificare la presenza di versioni più recenti dei pacchetti installati.
Installazione di un Pacchetto
Supponi di aver sentito parlare di un comando chiamato figlet
che stampa il testo ingrandito sul terminale e che tu voglia provarlo. Tuttavia, dopo aver eseguito il comando figlet
si ottiene il seguente messaggio:
$ figlet -bash: figlet: command not found
Questo probabilmente significa che il pacchetto non è installato sul tuo sistema. Se la tua distribuzione funziona con i pacchetti DEB, puoi cercare nei suoi repository usando apt-cache search nome_pacchetto
o apt search nome_pacchetto
. Il comando apt-cache
è usato per cercare i pacchetti e per mostrare informazioni sui pacchetti disponibili. Il seguente comando cerca una qualunque occorrenza del termine “figlet” nei nomi e nelle descrizioni dei pacchetti:
$ apt-cache search figlet figlet - Make large character ASCII banners out of ordinary text
La ricerca individua un pacchetto chiamato figlet che corrisponde al comando mancante. Le operazioni di installazione e rimozione di un pacchetto richiedono autorizzazioni speciali concesse solo all’amministratore di sistema: l’utente chiamato root
. Sui sistemi desktop, gli utenti ordinari possono installare o rimuovere i pacchetti anteponendo il comando sudo
ai comandi di installazione/rimozione. Ciò richiederà di digitare la password per procedere. Per i pacchetti DEB, l’installazione viene eseguita con il comando apt-get install nome_pacchetto
o apt install nome_pacchetto
:
$ sudo apt-get install figlet Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: figlet 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
A questo punto il pacchetto verrà scaricato e installato sul sistema. Verranno scaricate e installate anche le dipendenze di cui il pacchetto ha eventualmente bisogno:
Need to get 184 kB of archives. After this operation, 741 kB of additional disk space will be used. Get:1 http://archive.raspbian.org/raspbian stretch/main armhf figlet armhf 2.2.5-2 [184 kB] Fetched 184 kB in 0s (213 kB/s) Selecting previously unselected package figlet. (Reading database ... 115701 files and directories currently installed.) Preparing to unpack .../figlet_2.2.5-2_armhf.deb ... Unpacking figlet (2.2.5-2) ... Setting up figlet (2.2.5-2) ... update-alternatives: using /usr/bin/figlet-figlet to provide /usr/bin/figlet (figlet) in auto mode Processing triggers for man-db (2.7.6.1-2) ...
Al termine del download, tutti i file vengono copiati nelle posizioni corrette, viene eseguita qualsiasi configurazione aggiuntiva e il comando diviene disponibile:
$ figlet Awesome! _ _ / \__ _____ ___ ___ _ __ ___ ___| | / _ \ \ /\ / / _ \/ __|/ _ \| '_ ` _ \ / _ \ | / ___ \ V V / __/\__ \ (_) | | | | | | __/_| /_/ \_\_/\_/ \___||___/\___/|_| |_| |_|\___(_)
Nelle distribuzioni basate su pacchetti RPM le ricerche vengono eseguite usando yum search nome_pacchetto
o dnf search nome_pacchetto
. Supponiamo che tu voglia visualizzare del testo in modo più divertente, accompagnato da una mucca disegnata a fumetto, ma non sei sicuro del pacchetto che può eseguire tale attività. Come nel caso dei pacchetti DEB, i comandi di ricerca RPM accettano termini descrittivi:
$ yum search speaking cow Last metadata expiration check: 1:30:49 ago on Tue 23 Apr 2019 11:02:33 PM -03. ==================== Name & Summary Matched: speaking, cow ==================== cowsay.noarch : Configurable speaking/thinking cow
Dopo aver trovato un pacchetto adatto nel repository, questo può essere installato con yum install nome_pacchetto
o dnf install nome_pacchetto
:
$ sudo yum install cowsay Last metadata expiration check: 2:41:02 ago on Tue 23 Apr 2019 11:02:33 PM -03. Dependencies resolved. ============================================================================== Package Arch Version Repository Size ============================================================================== Installing: cowsay noarch 3.04-10.fc28 fedora 46 k Transaction Summary ============================================================================== Install 1 Package Total download size: 46 k Installed size: 76 k Is this ok [y/N]: y
Ancora una volta, saranno scaricati e installati il pacchetto desiderato e tutte le sue possibili dipendenze:
Downloading Packages: cowsay-3.04-10.fc28.noarch.rpm 490 kB/s | 46 kB 00:00 ============================================================================== Total 53 kB/s | 46 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Installed: cowsay.noarch 3.04-10.fc28 Complete!
Il comando cowsay
fa esattamente ciò che il suo nome suggerisce:
$ cowsay "Brought to you by yum" _______________________ < Brought to you by yum > ----------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Sebbene possano sembrare inutili, i comandi figlet
e cowsay
forniscono un modo per attirare l’attenzione degli altri utenti su informazioni ritenute importanti.
Rimozione di un Pacchetto
Gli stessi comandi utilizzati per installare i pacchetti vengono utilizzati anche per rimuoverli. Tutti i comandi accettano la parola chiave remove
per disinstallare un pacchetto installato: apt-get remove nome_pacchetto
o apt remove nome_pacchetto
per i pacchetti DEB; yum remove nome_pacchetto
o dnf remove nome_pacchetto
per i pacchetti RPM. Anche il comando sudo
è necessario per eseguire la rimozione. Per esempio, per rimuovere il pacchetto figlet precedentemente installato da una distribuzione basata su DEB:
$ sudo apt-get remove figlet Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: figlet 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 741 kB disk space will be freed. Do you want to continue? [Y/n] Y
Dopo aver confermato l’operazione, il pacchetto viene cancellato dal sistema:
(Reading database ... 115775 files and directories currently installed.) Removing figlet (2.2.5-2) ... Processing triggers for man-db (2.7.6.1-2) ...
Una procedura simile viene eseguita su un sistema basato su RPM. Per esempio, per rimuovere il pacchetto cowsay precedentemente installato da una distribuzione basata su RPM:
$ sudo yum remove cowsay Dependencies resolved. ================================================================================== Package Arch Version Repository Size ================================================================================== Removing: cowsay noarch 3.04-10.fc28 @fedora 76 k Transaction Summary ================================================================================== Remove 1 Package Freed space: 76 k Is this ok [y/N]: y
Allo stesso modo, viene richiesta una conferma e il pacchetto viene cancellato dal sistema:
Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Erasing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Removed: cowsay.noarch 3.04-10.fc28 Complete!
I file di configurazione dei pacchetti rimossi sono conservati nel sistema, in modo che possano essere riutilizzati se il pacchetto verrà reinstallato in futuro.
Applicazioni per Ufficio
Le applicazioni per ufficio sono utilizzate per la modifica di file come testi, presentazioni, fogli di calcolo e altri formati comunemente utilizzati in un ambiente d’ufficio. Queste applicazioni sono solitamente organizzate in raccolte chiamate office suites.
Per molto tempo, la suite per ufficio più utilizzata in Linux è stata la OpenOffice.org. OpenOffice.org era una versione open source della StarOffice suite lanciata da Sun Microsystems. Pochi anni dopo Sun è stata acquisita da Oracle Corporation, che a sua volta ha trasferito il progetto alla Apache Foundation e OpenOffice.org è stata rinominata in Apache OpenOffice. Nel frattempo, un’altra suite per ufficio basata sullo stesso codice sorgente è stata rilasciata dalla Document Foundation: LibreOffice.
I due progetti hanno le stesse funzionalità di base e sono compatibili con i formati di documento di Microsoft Office. Tuttavia, il formato di documento preferito è l'Open Document Format, un formato di file completamente aperto e standardizzato ISO. L’uso di file ODF garantisce che i documenti possano essere trasferiti tra sistemi operativi e applicazioni di differenti fornitori, come lo stesso Microsoft Office. Le principali applicazioni offerte da OpenOffice/LibreOffice sono:
- Writer
-
Editor di testo
- Calc
-
Fogli di calcolo
- Impress
-
Presentazioni
- Draw
-
Disegno vettoriale
- Math
-
Formule matematiche
- Base
-
Database
Sia LibreOffice sia Apache OpenOffice sono software open source, ma LibreOffice è concesso in licenza sotto LGPLv3 e Apache OpenOffice è concesso in licenza sotto Apache License 2.0. La distinzione di licenza implica che LibreOffice può incorporare le migliorie apportate da Apache OpenOffice, ma Apache OpenOffice non può incorporare le migliorie apportate da LibreOffice. Questo, insieme a una comunità di sviluppatori più attiva, è il motivo per cui la maggior parte delle distribuzioni adotta LibreOffice come suite predefinita per l’ufficio.
Browser Web
Per la maggior parte degli utenti, lo scopo principale di un computer è fornire accesso a Internet. Al giorno d’oggi le pagine Web possono funzionare come app a sé stanti, con il vantaggio di essere accessibili da qualsiasi luogo, senza la necessità di installare software aggiuntivo. Questo rende il browser web l’applicazione più importante del sistema operativo, almeno per l’utente medio.
Tip
|
Una delle migliori fonti per apprendere lo sviluppo web è MDN Web Docs, disponibile su https://developer.mozilla.org/. Gestito da Mozilla, il sito è ricco di tutorial per principianti e materiali di riferimento sulla maggior parte delle moderne tecnologie web. |
I principali browser web in ambiente Linux sono Google Chrome e Mozilla Firefox. Chrome è un browser web gestito da Google ma è basato sul browser open source chiamato Chromium, che può essere installato usando il gestore di pacchetti della propria distribuzione ed è pienamente compatibile con Chrome. Gestito da Mozilla, un’organizzazione senza fini di lucro, Firefox è un browser le cui origini sono legate a Netscape, il primo popolare browser web ad adottare il modello open source. La Mozilla Foundation è profondamente coinvolta nello sviluppo di standard aperti che sono alla base del moderno web.
Mozilla sviluppa anche altre applicazioni, come il client di posta elettronica Thunderbird. Molti utenti scelgono di utilizzare la webmail invece di un’applicazione di posta elettronica dedicata, ma un client come Thunderbird offre funzionalità aggiuntive e si integra al meglio con le altre applicazioni desktop.
Multimedia
Rispetto alle applicazioni web disponibili, le applicazioni desktop sono ancora la migliore scelta per la creazione di contenuti multimediali. Attività multimediali come il rendering video spesso richiedono elevate quantità di risorse di sistema, che sono gestite al meglio da un’applicazione desktop locale. Di seguito sono elencate alcune delle applicazioni multimediali più popolari per l’ambiente Linux ed i loro usi.
- Blender
-
Un renderer 3D per creare animazioni. Blender può anche essere utilizzato per esportare oggetti 3D da stampare con una stampante 3D.
- GIMP
-
Un editor di immagini completo, che può essere paragonato ad Adobe Photoshop, ma che ha i propri concetti e strumenti per lavorare con le immagini. GIMP può essere utilizzato per creare, modificare e salvare la maggior parte dei file bitmap, come JPEG, PNG, GIF, TIFF e molti altri.
- Inkscape
-
Un editor di grafica vettoriale, simile a Corel Draw o Adobe Illustrator. Il formato predefinito di Inkscape è SVG, che è uno standard aperto per la grafica vettoriale. I file SVG possono essere aperti da un qualunque browser web e, per la loro natura di grafica vettoriale, possono essere utilizzati per layout flessibili di pagine web.
- Audacity
-
Un editor audio. Audacity può essere utilizzato per filtrare, applicare effetti e conversioni a e tra diversi formati audio come MP3, WAV, OGG, FLAC, etc.
- ImageMagick
-
ImageMagick è uno strumento a Command Line per convertire e modificare la maggior parte dei tipi di file immagine. Può anche essere utilizzato per creare documenti PDF da file immagine e viceversa.
Esistono anche molte applicazioni dedicate alla riproduzione multimediale. L’applicazione più popolare per la riproduzione di video è VLC, ma alcuni utenti preferiscono alternative come smplayer. Anche la riproduzione di musica locale ha molte opzioni, come Audacious, Banshee e Amarok, che possono anche gestire una raccolta di file audio locali.
Programmi Server
Quando un browser web carica una pagina da un sito web, in realtà si connette a un computer remoto e richiede determinate informazioni. In questo scenario, il computer che esegue il browser web viene chiamato client e il computer remoto viene chiamato server.
Il computer server, che può essere un normale computer desktop o un hardware specializzato, ha bisogno di un programma specifico per gestire ogni tipo di informazione che dovrà fornire. Per quanto riguarda la gestione delle pagine web, la maggior parte dei server in tutto il mondo utilizza programmi server open source. Questo particolare programma server è chiamato HTTP server (HTTP sta per Hyper Text Transfer Protocol) e i più popolari sono Apache, Nginx e lighttpd.
Anche semplici pagine Web possono far fronte a molte richieste, che possono essere file ordinari, definiti contenuto statico, oppure contenuto dinamico generato da varie fonti. Il ruolo di un server HTTP è quello di raccogliere e inviare tutti i dati richiesti al browser, che quindi organizza il contenuto come definito dal documento HTML ricevuto (HTML significa Hyper Text Markup Language), e altri file di supporto. Pertanto il rendering di una pagina web comporta operazioni eseguite lato server e operazioni eseguite lato client. Entrambe le parti possono utilizzare script personalizzati per svolgere compiti specifici. Lato server HTTP, è abbastanza comune utilizzare il linguaggio di scripting PHP. JavaScript è il linguaggio di scripting utilizzato lato client (il browser Web).
I programmi server possono fornire informazioni di tutti i tipi. Non è raro avere un programma server che richiede informazioni fornite da altri programmi server. Questo è il caso in cui un server HTTP richiede informazioni fornite da un server di database.
Per esempio, quando viene richiesta una pagina dinamica, il server HTTP di solito interroga un database per raccogliere tutte le informazioni richieste ed invia il contenuto dinamico al client. Allo stesso modo, quando un utente si registra su un sito web, il server HTTP raccoglie i dati inviati dal client e li memorizza in un database.
Un database è un insieme organizzato di informazioni. Un server di database archivia i contenuti in modo formattato, consentendo di leggere, scrivere e collegare grandi quantità di dati in modo affidabile e ad alta velocità. I server di database open source sono utilizzati in molte applicazioni, non solo su Internet. Anche le applicazioni locali possono archiviare i dati connettendosi a un server di database locale. Il tipo più comune di database è il database relazionale, in cui i dati sono organizzati in tabelle predefinite. I database relazionali open source più popolari sono MariaDB (originato da MySQL) e PostgreSQL.
Condivisione dei Dati
Nelle reti locali, come quelle che si trovano negli uffici e nelle case, è auspicabile che i computer non solo possano accedere a Internet, ma siano anche in grado di comunicare tra loro. A volte un computer funziona da server, a volte lo stesso computer funziona da client. Ciò è necessario quando si desidera accedere ai file su un altro computer in rete, per esempio accedere a un file archiviato su un computer desktop da un dispositivo portatile senza il fastidio di copiare tale file su unità USB o simili.
Tra macchine Linux viene spesso utilizzato NFS (Network File System). Il protocollo NFS è il modo standard per condividere file system in reti costituite solamente da macchine Unix/Linux. Tramite NFS, un computer può condividere una o più delle sue directory con computer specifici sulla rete, in modo che possano leggere e scrivere file in queste directory. NFS può anche essere utilizzato per condividere l’albero delle directory di un intero sistema operativo con i client che lo utilizzeranno per l’avvio. Questi computer, chiamati thin client, sono spesso utilizzati in reti di grandi dimensioni per evitare la manutenzione di ogni singolo sistema operativo su ogni macchina.
Se ci sono altri tipi di sistemi operativi collegati alla rete, si consiglia di utilizzare un protocollo di condivisione dei dati che può essere compreso da tutti. Samba soddisfa questo requisito. Samba implementa un protocollo per la condivisione di file sulla rete, che era stato originariamente realizzato per il sistema operativo Windows, ma che è ora compatibile con tutti i principali sistemi operativi. Con Samba, i computer della rete locale possono non solo condividere file, ma anche stampanti.
Su alcune reti locali l’autorizzazione data al login su una workstation è concessa da un server centrale, chiamato controller di dominio, che gestisce l’accesso a varie risorse locali e remote. Il controller di dominio è un servizio fornito da Active Directory di Microsoft. Le workstation Linux possono connettersi a un controller di dominio utilizzando Samba o un sottosistema di autenticazione chiamato SSSD. A partire dalla versione 4, Samba può anche funzionare come controller di dominio in reti eterogenee.
Se l’obiettivo è quello di implementare una soluzione di cloud computing in grado di fornire vari metodi di condivisione dati basati sul web, occorre considerare due alternative: ownCloud e Nextcloud. I due progetti sono molto simili poichè Nextcloud è uno spin-off di ownCloud, il che non è raro tra i progetti open source. Tali spin-off sono solitamente chiamati fork. Entrambi forniscono le stesse funzionalità di base: condivisione e sincronizzazione dei file, aree di lavoro collaborative, calendario, contatti e posta elettronica, il tutto tramite interfacce desktop, mobile e web. Nextcloud offre anche conferenze audio/video private, mentre ownCloud è più focalizzato sulla condivisione di file e sull’integrazione con software di terze parti. Molte altre funzionalità sono fornite sotto forma di plugin che possono essere attivati in un secondo momento, se necessario.
Sia ownCloud sia Nextcloud offrono una versione a pagamento con funzionalità extra e supporto esteso. Ciò che li rende diversi dalle altre soluzioni commerciali è la possibilità di installare Nextcloud o ownCloud su un server privato, gratuitamente, evitando di conservare i dati sensibili su un server sconosciuto. Poiché tutti i servizi dipendono dalla comunicazione HTTP e sono scritti in PHP, l’installazione deve essere eseguita su un server Web configurato in precedenza, come Apache. Se stai pensando di installare ownCloud o Nextcloud sul tuo server, assicurati di abilitare anche HTTPS per crittografare tutte le connessioni al tuo cloud.
Amministrazione di Rete
La comunicazione tra computer è possibile solo se la rete funziona correttamente. Normalmente, la configurazione della rete viene eseguita da un insieme di programmi in esecuzione sul router, responsabili della configurazione e del controllo della disponibilità della rete. A tal fine vengono utilizzati due servizi di rete essenziali: DHCP (Dynamic Host Configuration Protocol) e DNS (Domain Name System).
Il DHCP è responsabile dell’assegnazione di un indirizzo IP all’host quando viene collegato un cavo di rete o quando il dispositivo entra in una rete wireless. Durante la connessione a Internet, il server DHCP dell’ISP fornirà un indirizzo IP al dispositivo richiedente. Un server DHCP è molto utile anche nelle reti locali per fornire automaticamente indirizzi IP a tutti i dispositivi collegati. Se il DHCP non è configurato o se non funziona correttamente, potrebbe essere necessario configurare manualmente l’indirizzo IP di ciascun dispositivo connesso alla rete. Non è pratico impostare manualmente gli indirizzi IP in reti di grandi dimensioni o anche in piccole reti, motivo per cui la maggior parte dei router di rete ha un server DHCP preconfigurato di default.
L’indirizzo IP è necessario per comunicare con un altro dispositivo su una rete IP, ma i nomi di dominio come www.lpi.org
hanno molte più probabilità di essere ricordati rispetto a un indirizzo IP come 203.0.113.165
. Tuttavia, il nome di dominio da solo non è sufficiente per stabilire la comunicazione attraverso la rete. Ecco perchè il nome di dominio deve essere tradotto in un indirizzo IP da un server DNS. L’indirizzo IP del server DNS è fornito dal server DHCP dell’ISP ed è utilizzato da tutti i sistemi connessi per tradurre i nomi di dominio in indirizzi IP.
Sia le impostazioni del DHCP sia quelle del DNS possono essere modificate entrando nell’interfaccia web fornita dal router. Per esempio, è possibile limitare l’assegnazione di indirizzi IP solo a dispositivi noti o associare un indirizzo IP fisso a macchine specifiche. È anche possibile modificare il server DNS predefinito fornito dall’ISP. Alcuni server DNS di terze parti, come quelli forniti da Google o da OpenDNS, possono talvolta fornire risposte più rapide e funzionalità aggiuntive.
Linguaggi di Programmazione
Tutti i programmi per computer (programmi client e server, applicazioni desktop e il sistema operativo stesso) sono realizzati utilizzando uno o più linguaggi di programmazione. I programmi possono essere un singolo file o un complesso sistema di centinaia di file, che il sistema operativo tratta come una sequenza di istruzioni che devono essere interpretate ed eseguite dal processore e da altri dispositivi.
Esistono numerosi linguaggi di programmazione per scopi molto diversi e i sistemi Linux ne forniscono un’ampia selezione. Poiché il software open source include anche il codice sorgente dei programmi, i sistemi Linux offrono agli sviluppatori le condizioni perfette per comprendere, modificare o creare software in base alle proprie esigenze.
Ogni programma inizia come un file di testo, chiamato codice sorgente. Questo codice sorgente è scritto in un linguaggio più o meno leggibile dall’uomo e descrive ciò che il programma sta facendo. Un processore non può eseguire direttamente questo codice. Nei linguaggi compilati, il codice sorgente è quindi convertito in un file binario che può essere poi eseguito dal computer. Un programma chiamato compilatore è responsabile della conversione da codice sorgente a una forma eseguibile. Poiché il file binario compilato è specifico per un tipo di processore, potrebbe essere necessario ricompilare il programma per poterlo eseguire su un altro tipo di computer.
Nei linguaggi interpretati non è necessario che il programma sia stato precedentemente compilato. Invece, un interprete legge il codice sorgente ed esegue le sue istruzioni ogni volta che il programma viene eseguito. Questo rende lo sviluppo più facile e veloce, ma allo stesso tempo i programmi interpretati tendono a essere più lenti dei programmi compilati.
Ecco alcuni dei linguaggi di programmazione più popolari:
- JavaScript
-
JavaScript è un linguaggio di programmazione utilizzato principalmente nelle pagine web. Le applicazioni JavaScript erano inzialmente molto semplici, come le routine di validazione dei moduli. A oggi JavaScript è considerato un linguaggio di prima classe e viene utilizzato per creare applicazioni molto complesse non solo sul web, ma anche su server e dispositivi mobili.
- C
-
Il linguaggio di programmazione C è strettamente correlato con i sistemi operativi, in particolare Unix, ma viene utilizzato per scrivere qualsiasi tipo di programma per quasi ogni tipo di dispositivo. I grandi vantaggi di C sono la flessibilità e la velocità. Lo stesso codice sorgente scritto in C può essere compilato per essere eseguito su piattaforme e sistemi operativi diversi, con modifiche minime o nulle. Dopo essere compilato, tuttavia, il programma verrà eseguito solo sul sistema di destinazione.
- Java
-
L’aspetto principale di Java è che i programmi scritti in questo linguaggio sono portatili, il che significa che lo stesso programma può essere eseguito su sistemi operativi differenti. Nonostante il nome, Java non è correlato a JavaScript.
- Perl
-
Perl è un linguaggio di programmazione ampiamente utilizzato per elaborare contenuti testuali. Da grande importanza alle espressioni regolari, il che rende Perl un linguaggio adatto per il filtraggio e l’analisi del testo.
- Shell
-
La shell, in particolare la shell Bash, non è solo un linguaggio di programmazione, ma anche un’interfaccia interattiva per eseguire altri programmi. I programmi shell, noti come shell scripts, possono automatizzare attività complesse o ripetitive nell’ambiente a Command Line.
- Python
-
Python è un linguaggio di programmazione molto popolare tra gli studenti e i professionisti non direttamente coinvolti nell’informatica. Pur avendo caratteristiche avanzate, Python è un buon modo per iniziare a imparare la programmazione grazie al suo approccio di facile utilizzo.
- PHP
-
PHP è maggiormente utilizzato come linguaggio di scripting lato server per generare contenuti per il web. La maggior parte delle pagine HTML online non sono file statici, ma contenuti dinamici generati dal server da varie fonti, come i database. I programmi PHP, a volte chiamati semplicemente pagine PHP o script PHP, sono spesso utilizzati per generare questo tipo di contenuti. Il termine LAMP deriva dalla combinazione di un sistema operativo Linux, un server Apache HTTP, un database MySQL (o MariaDB) e programmazione PHP. I server LAMP sono una soluzione molto popolare per eseguire server web. Oltre a PHP, tutti i linguaggi di programmazione descritti in precedenza possono essere utilizzati per implementare applicazioni di questo tipo.
C e Java sono linguaggi compilati. Per essere eseguito dal sistema, il codice sorgente scritto in C viene convertito in codice macchina binario, mentre il codice sorgente Java viene convertito in bytecode eseguito in uno speciale ambiente software chiamato Java Virtual Machine. JavaScript, Perl, Shell script, Python e PHP sono tutti linguaggi interpretati, anche chiamati linguaggi di scripting.
Esercizi Guidati
-
Per ciascuno dei seguenti comandi, identifica se è associato al sistema di gestione pacchetti Debian o al sistema di gestione pacchetti Red Hat:
dpkg
rpm
apt-get
yum
dnf
-
Quale comando può essere utilizzato per installare Blender su Ubuntu? Dopo l’installazione, come può essere eseguito il programma?
-
Quale applicazione della suite LibreOffice può essere utilizzata per lavorare con fogli di calcolo elettronici?
-
Quale browser web open source viene utilizzato come base per lo sviluppo di Google Chrome?
-
SVG è uno standard aperto per la grafica vettoriale. Qual è l’applicazione più popolare per la modifica dei file SVG nei sistemi Linux?
-
Per ciascuno dei seguenti formati di file, scrivi il nome di un’applicazione in grado di aprire e modificare il file corrispondente:
png
doc
xls
ppt
wav
-
Quale pacchetto software consente la condivisione di file tra macchine Linux e Windows sulla rete locale?
Esercizi Esplorativi
-
Sai che i file di configurazione vengono mantenuti anche se il pacchetto associato viene rimosso dal sistema. Com’è possibile rimuovere automaticamente il pacchetto chiamato cups e i relativi file di configurazione da un sistema basato su DEB?
-
Supponiamo di avere molti file di immagini TIFF e di volerli convertire in JPEG. Quale pacchetto software potrebbe essere utilizzato per convertire tali file direttamente dalla Command Line?
-
Quale pacchetto software è necessario installare per poter aprire i documenti di Microsoft Word inviati da un utente Windows?
-
Ogni anno linuxquestions.org promuove un sondaggio sulle applicazioni Linux più popolari. Visita https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ e scopri quali applicazioni desktop sono più popolari tra gli utenti Linux esperti.
Sommario
In questa lezione hai imparato:
-
I sistemi di gestione dei pacchetti utilizzati nelle principali distribuzioni Linux;
-
Le applicazioni open source in grado di modificare i formati di file più diffusi;
-
I programmi server alla base di molti importanti servizi Internet e di rete locale;
-
I linguaggi di programmazione comuni e i loro usi.
Risposte agli Esercizi Guidati
-
Per ciascuno dei seguenti comandi, identifica se è associato al sistema di gestione pacchetti Debian o al sistema di gestione pacchetti Red Hat:
dpkg
sistema di gestione pacchetti Debian
rpm
sistema di gestione pacchetti Red Hat
apt-get
sistema di gestione pacchetti Debian
yum
sistema di gestione pacchetti Red Hat
dnf
sistema di gestione pacchetti Red Hat
-
Quale comando può essere utilizzato per installare Blender su Ubuntu? Dopo l’installazione, come può essere eseguito il programma?
Il comando
apt-get install blender
. Il nome del pacchetto dovrebbe essere specificato in minuscolo. Il programma può essere eseguito direttamente dal terminale con il comandoblender
o selezionandolo dal menu delle applicazioni. -
Quale applicazione della suite LibreOffice può essere utilizzata per lavorare con fogli di calcolo elettronici?
Calc
-
Quale browser web open source viene utilizzato come base per lo sviluppo di Google Chrome?
Chromium
-
SVG è uno standard aperto per la grafica vettoriale. Qual è l’applicazione più popolare per la modifica dei file SVG nei sistemi Linux?
Inkscape
-
Per ciascuno dei seguenti formati di file, scrivi il nome di un’applicazione in grado di aprire e modificare il file corrispondente:
png
Gimp
doc
LibreOffice Writer
xls
LibreOffice Calc
ppt
LibreOffice Impress
wav
Audacity
-
Quale pacchetto software consente la condivisione di file tra macchine Linux e Windows sulla rete locale?
Samba
Risposte agli Esercizi Esplorativi
-
Sai che i file di configurazione vengono mantenuti anche se il pacchetto associato viene rimosso dal sistema. Com’è possibile rimuovere automaticamente il pacchetto chiamato cups e i relativi file di configurazione da un sistema basato su DEB?
apt-get purge cups
-
Supponiamo di avere molti file di immagini TIFF e di volerli convertire in JPEG. Quale pacchetto software potrebbe essere utilizzato per convertire tali file direttamente dalla Command Line?
ImageMagick
-
Quale pacchetto software è necessario installare per poter aprire i documenti di Microsoft Word inviati da un utente Windows?
LibreOffice o OpenOffice
-
Ogni anno linuxquestions.org promuove un sondaggio sulle applicazioni Linux più popolari. Visita https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ e scopri quali applicazioni desktop sono più popolari tra gli utenti Linux esperti.
Browser: Firefox. Client di posta elettronica: Thunderbird. Media player: VLC. Editor di grafica raster: GIMP.