Continuato software
This commit is contained in:
parent
e2f39a109b
commit
b7d89df7cb
|
@ -1,11 +1,14 @@
|
|||
\chapter{Software}
|
||||
Nella lingua inglese software nasce per imitazione del termine ``hardware" e dalla composizione delle parole ``soft" (in italiano ``morbido", ``tenero", ``leggero") e ``ware" (in italiano ``merci", ``articoli", ``prodotti", ``mercanzie").
|
||||
%%%
|
||||
%La paternità della coniazione del termine ``software" non è certa.
|
||||
%L'americano Paul Niquette la rivendica sostenendo di aver coniato il termine ``software" nel 1953.
|
||||
%Certa invece è la prima apparizione del termine ``software" in una pubblicazione scritta: un articolo dell'American Mathematical Monthly scritto nel 1958 dallo statistico americano John Wilder Tukey. [da Wikipedia]
|
||||
|
||||
\begin{shadequote}
|
||||
Dagli vita! Dagli vita, capito?! Dai vita alla mia creatura!
|
||||
\par\emph{Gene Wilder} mentre interpreta il \emph{Dr. Frankenstin}
|
||||
\end{shadequote}
|
||||
|
||||
Nella lingua inglese software nasce per contrapposizione al termine ``hardware" (letteralmente, ``parte dura") e dalla composizione delle parole ``soft" e ``ware'', che in italiano significano, rispettivamente, ``morbido", ``tenero", ``leggero" e ``merci", ``articoli", ``prodotti".
|
||||
|
||||
In pratica il termine definisce programmi e procedure utilizzati per far eseguire al computer un determinato compito.
|
||||
Tutto quello che in un PC non riusciamo a toccare con le mani è considerato Software!
|
||||
Tutto quello che in un computer non riusciamo a toccare con le mani è considerato software.
|
||||
Il software viene, a grandi linee, suddiviso in:
|
||||
|
||||
\paragraph{Software di base}
|
||||
|
@ -13,26 +16,80 @@ Il software viene, a grandi linee, suddiviso in:
|
|||
Viene generalmente identificato con il sistema operativo.
|
||||
|
||||
\paragraph{Software applicativo}
|
||||
Viene definito software applicativo (o semplicemente ``applicativi") quell'insieme di programmi che l'utente usa per svolgere operazioni quotidiane: per scrivere una email o un documento, ritoccare una foto o navigare su Internet.
|
||||
Se ne possono individuare 5 categorie:
|
||||
Viene definito software applicativo (o semplicemente ``applicativi" o ``applicazioni") quell'insieme di programmi che l'utente usa per svolgere operazioni quotidiane: per scrivere una email o un documento, ritoccare una foto o navigare sul web.
|
||||
Se ne possono individuare alcune categorie:
|
||||
|
||||
\begin{itemize}
|
||||
\item Desktop
|
||||
\item giochi
|
||||
\item educazione
|
||||
\item scienze
|
||||
\item sw developement
|
||||
\item business
|
||||
\item ambienti desktop, o interfacce grafiche: insiemi di applicazioni per consentire agli esseri umani di interagire col computer tramite figure e immagini;
|
||||
\item accessori: utilità comuni, come calcolatrici, blocchetti per appunti;
|
||||
\item giochi: applicazioni per lo svago, come giochi di carte e scacchiere;
|
||||
\item didattica: per l'ambito scolastico e accademico, come planetari e tavole periodiche;
|
||||
\item grafica: per la gestione di immagini e ritocco delle fotografie;
|
||||
\item internet: per la navigazione sul web, la posta elettronica e altri servizi della rete;
|
||||
\item multimediali: per la riproduzione e la realizzazione di musica e filmati;
|
||||
\item sistema: per l'amministrazione del software di base, come gestione dei file nel filesystem;
|
||||
\item sviluppo: per la realizzazione di nuove applicazioni;
|
||||
\item ufficio: per la produzione di documenti, come lettere e amministrazione contabile, molto utili anche in ambito domestico;
|
||||
\end{itemize}
|
||||
|
||||
%% non apprezzo molto questa partenza subito col sw proprietario/libero
|
||||
\section{Licenze e libertà}
|
||||
%% inserire qui un intro sul software e la differenza fra sorgente e eseguibile (esempio del biscotto?)
|
||||
\section{Sviluppo del software}
|
||||
Il computer può essere utilizzato solamente se questo è composto sia da hardware che da software: infatti, un computer senza software, non è altro che un circuito elettronico e qualche pezzo di ferro, mentre senza hardware, non è altro che un'idea irrealizzabile.
|
||||
In un certo senso, l'hardware costituisce il braccio, ed esegue il lavoro che gli viene impartito dalla mente, costituita dal software.
|
||||
|
||||
La realizzazione di hardware e software è molto complessa, ma, qualunque essere umano utilizzi il computer per la sua ``intelligenza", deve almeno conoscere a grandi linee come viene realizzato il software, per poter indirizzare le proprie scelte in maniera consapevole.
|
||||
|
||||
Il software è costituito da una sequenza di comandi e istruzioni che l'hardware deve eseguire; l'hardware conosce solo poche istruzioni, molto elementari, che devono essere codificate con dei numeri.
|
||||
Se i programmi dovessero essere scritti sottoforma di numeri, realizzare programmi complessi come quelli odierni sarebbe estremamente difficile, per non dire impossibile.
|
||||
Pertanto, i programmatori hanno inventato dei \emph{linguaggi di programmazione}, con i quali vengono scritti i programmi in una forma detta \emph{sorgente}. Una volta scritti i codici sorgenti, essi vengono tradotti in numeri, la cosiddetta forma \emph{binaria}.
|
||||
Affinché il programma possa essere effettivamente eseguito, il codice sorgente deve quindi essere tradotto in codice binario.
|
||||
|
||||
\begin{figure}
|
||||
\begin{minipage}{.7\linewidth}
|
||||
\begin{Verbatim}
|
||||
int main(int argc, char** argv) {
|
||||
int risultato = 1, base = 2, esponente = 4;
|
||||
for (int i = 0; i < esponente; ++i) {
|
||||
risultato = risultato * base;
|
||||
}
|
||||
}
|
||||
\end{Verbatim}
|
||||
\end{minipage}
|
||||
\begin{minipage}{.25\linewidth}
|
||||
\begin{Verbatim}
|
||||
55
|
||||
48 89 e5
|
||||
c7 45 f0 01 00 00 00
|
||||
[...]
|
||||
8b 45 f4
|
||||
3b 45 fc
|
||||
7d 10
|
||||
8b 45 f0
|
||||
0f af 45 f8
|
||||
89 45 f0
|
||||
83 45 f4 01
|
||||
eb e8
|
||||
b8 00 00 00 00
|
||||
5d
|
||||
c3
|
||||
\end{Verbatim}
|
||||
\end{minipage}
|
||||
\caption{Confronto tra un codice sorgente in linguaggio C e il suo corrispondente codice binario}
|
||||
\label{fig:confronto-sorgente-binario}
|
||||
\end{figure}
|
||||
|
||||
Una volta ottenuto un binario, è molto difficile (e praticamente impossibile) risalire al sorgente che l'ha generato, mentre ottenere il binario dal sorgente è una questione relativamente veloce. Inoltre, il sorgente è sì scritto in un linguaggio tecnico, ma è comprensibile da un essere umano in poco tempo, mentre il binario no, come ci si può accorgere, anche da profani, dal raffronto in \figurename~\ref{fig:confronto-sorgente-binario}.
|
||||
|
||||
Volendo fare un paragone culinario, il codice sorgente è la ``ricetta" che permette di cucinare una torta. Per mangiare, la ricetta deve essere tradotta nella torta, e per poter ottenere la torta, si deve avere la ricetta. Non è possibile risalire alla ricetta dalla torta.
|
||||
|
||||
Detto questo, cosa deve fare l'utilizzatore accorto di un computer quando vuole utilizzare un programma? Nonostante che, per poterlo utilizzare, tecnicamente, è sufficiente il binario, in pratica devono essere analizzati anche alcuni aspetti legali che legano indissolubilmente il codice sorgente col codice binario, così come ogni ricetta è legata alla sua torta.
|
||||
|
||||
Nasce quindi l'esigenza di comprendere alcune licenze d'uso.
|
||||
|
||||
\section{Licenze e libertà}
|
||||
\subsection{Software proprietario}
|
||||
In generale il software proprietario è un applicativo di cui la riproduzione, modifica, distribuzione e utilizzo sono vincolate a una richiesta di permesso o categoricamente proibite.
|
||||
Rispetto ad altri prodotti dell'ingegno, il codice sorgente può essere occultato.
|
||||
Spesso, quindi, il software proprietario non è reso pubblico proprio per ostacolare chi volesse violare le clausole che lo proteggono e leggi ben precise ne impediscono la ridistribuzione (copyright).
|
||||
Spesso, quindi, il codice sorgente del software proprietario non è reso pubblico proprio per ostacolare chi volesse violare le clausole che lo proteggono e leggi ben precise ne impediscono lo studio e la ridistribuzione (copyright).
|
||||
|
||||
Il software proprietario può essere sia a pagamento che gratuito, in quest'ultimo caso si parla di:
|
||||
|
||||
|
@ -43,29 +100,31 @@ Il software proprietario può essere sia a pagamento che gratuito, in quest'ulti
|
|||
\end{itemize}
|
||||
|
||||
\subsection{Software libero}
|
||||
Il Software Libero e Open Source\footnote{una breve spiegazione della distinzione può essere messa qui} sono software non sottoposti ad alcun vincolo, lasciando così l'utente libero di farne ciò che desidera, per esempio di:
|
||||
Il Software Libero e Open Source\footnote{le due terminologie \emph{software~libero} e \emph{open~source}, nella pratica, indicano lo stesso tipo di software, tuttavia esistono delle ragioni filosofiche alla base di questa distinzione, che non sono oggetto di questo manuale} identifica programmi non sottoposti ad alcun vincolo, lasciando così l'utente libero di farne ciò che desidera, per esempio di:
|
||||
\begin{itemize}
|
||||
\item eseguirlo per qualsiasi scopo;
|
||||
\item studiarlo e modificarlo;
|
||||
\item migliorarne le funzionalità;
|
||||
\item poterlo liberamente ridistribuire;
|
||||
\item migliorarne le funzionalità.
|
||||
\end{itemize}
|
||||
Molti confondono ``free software" con software ``gratis", poiché “free” in inglese vuol dire sia gratuito che libero, ma quando parliamo di ``free software" intendiamo il software libero.
|
||||
|
||||
%% licenze: da accorciare
|
||||
Il software libero viene sempre distribuito in forma sorgente, e quasi sempre anche in forma binaria. Nel caso in cui la forma binaria non fosse disponibile, rimane comunque sempre possibile ottenerla in autonomia effettuando la traduzione per proprio conto.
|
||||
|
||||
Come il software proprietario, anche quello libero può essere a pagamento, oppure gratuito, anche se generalmente si trova in quest'ultima forma.
|
||||
|
||||
È necessario porre l'attenzione sul fatto che molti confondono ``free software" con software ``gratis", poiché “free” in inglese vuol dire sia gratuito che libero, ma quando parliamo di ``free software" intendiamo il software libero.
|
||||
|
||||
\subsection{Vantaggi del Software Libero}
|
||||
Utilizzare Software Libero, è prima di tutto una scelta di natura etica.
|
||||
Il suo sviluppo si basa sugli stessi principi fondanti della comunità scientifica, senza i quali la ricerca non può progredire: il libero scambio delle informazioni, la condivisione di idee e risultati ed il libero utilizzo del patrimonio comune delle conoscenze per un ulteriore sviluppo.
|
||||
Favorisce dunque l'indipendenza tecnologica, la diffusione del sapere, l'abbassamento delle barriere di accesso alla tecnologia, stimola la concorrenza e dà sostegno all'economia locale.
|
||||
|
||||
Le amministrazioni pubbliche sono incoraggiate ad usare Software Libero poiché impiegano le risorse dei cittadini e dovrebbero preferire l'utilizzo e lo sviluppo di un software che resti a disposizione di tutti
|
||||
%garantendo la sua disponibilità, il suo riutilizzo, e la creazione di competenze, professionalità e valore sul territorio.
|
||||
Le amministrazioni pubbliche sono incoraggiate dalla legge ad usare Software Libero poiché impiegano le risorse dei cittadini e dovrebbero preferire l'utilizzo e lo sviluppo di un software che resti a disposizione di tutti.
|
||||
|
||||
Dal punto di vista tecnico permette la verificabilità del software: diventa possibile, quando serve, monitorare il comportamento effettivo dei programmi intervenendo direttamente sui problemi; inoltre, consente un'estrema facilità di sviluppo, dal momento che ogni nuova implementazione può basarsi sulle modifiche precedenti.
|
||||
Il codice sorgente è sottoposto e revisionato da un'ampia comunità che corregge bug e malfunzionamenti, che avviene in tempi sufficientemente rapidi.
|
||||
Dal punto di vista tecnico permette la verificabilità del software: diventa possibile, quando serve, monitorare il comportamento effettivo dei programmi intervenendo direttamente sui problemi, perché il codice sorgente è disponibile; inoltre, consente un'estrema facilità di sviluppo, dal momento che ogni nuova implementazione può basarsi sulle modifiche precedenti.
|
||||
Il codice sorgente è sottoposto e revisionato da un incalcolabile numero di programmatori, che correggono bug e malfunzionamenti in tempi rapidissimi.
|
||||
Poiché il codice è sotto gli occhi del mondo, diventa difficile programmare applicativi malevoli.
|
||||
Inoltre, chiunque abbia basi di programmazione può contribuire: o direttamente scrivendo del codice, ma anche traducendo programmi o segnalando problemi da correggere (bug).
|
||||
Infine, chiunque abbia basi di programmazione può contribuire direttamente scrivendo del codice, ma anche traducendo programmi o segnalando problemi da correggere (bug).
|
||||
|
||||
% questo discorso lo riprenderei da madbob [se un programmatore alle prime armi mette le mani su software pubblico ha modo di mettersi in mostra]
|
||||
Dal punto di vista sociale utilizzare Software Libero riveste un grande valore culturale dovuto al carattere pubblico e alla condivisione dei risultati; favorisce lo sviluppo professionale: basandosi su una economia dei servizi, incentiva la crescita professionale e l'aumento delle competenze sul territorio.
|
||||
|
@ -85,11 +144,7 @@ Parte dello sviluppo del software libero è rappresentato dal lavoro volontario,
|
|||
|
||||
\section{GNU/Linux}
|
||||
% la definizione sua non mi garba... agli occhi della gente mi sembra circolare
|
||||
GNU/Linux è un sistema operativo creato nel 1991 da Linus Torvalds, uno studente universitario finlandese, integrato con altri software (sia di base che applicativi) GNU .
|
||||
% cos'è GNU e una sua breve storia la facciamo prima
|
||||
%sviluppato da Richard Stallman, al tempo studente universitario del MIT (Massachusetts Institute of Technology) di Boston, ha dato vita al sistema operativo GNU/Linux.
|
||||
|
||||
%% riprendere a piene mani da quello che si dice a voce nella presentazione introduttiva
|
||||
Nella prima metà degli anni 80 del XX secolo, Richard~Matthew~Stallman, al tempo ricercatore universitario del MIT (Massachusetts Institute of Technology) di Boston, decise che avrebbe sviluppato un intero sistema operativo libero, che battezzò GNU. Tuttavia, il progetto era molto ambizioso, e si dovette aspettare il 1991 prima che Linus~Torvalds, un brillante studente universitario finlandese, scrivesse la base di un sistema operativo che andava perfettamente a integrarsi con il software GNU, dando così origine a un sistema operativo completo: GNU/Linux.
|
||||
|
||||
\subsection{Perché usare Linux}
|
||||
\begin{itemize}
|
||||
|
@ -99,11 +154,11 @@ GNU/Linux è un sistema operativo creato nel 1991 da Linus Torvalds, uno student
|
|||
\item \textbf{Riuso:} la maggior parte degli utenti navigano in rete, leggono e scrivono email, scrivono file di testo e presentazioni, dunque non hanno bisogno di aggiornare il proprio computer ogni 3/4 anni per avere sempre l'ultimo modello.
|
||||
Purtroppo i sistemi proprietari evolvono sempre adattandosi al nuovo hardware, aggiungendo effetti grafici o appesantendo il sistema di base, e non è una buona idea utilizzare versioni precedenti perché vengono supportate sempre meno.
|
||||
Alcune versioni di Linux, invece, sono pensate per l'uso su computer più datati ed eseguire in tranquillità le operazioni di base.
|
||||
\item
|
||||
\item
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Le versioni di Linux}
|
||||
Le diverse versioni di Linux sono dette \textbf{distribuzioni}, ed insieme al sistema operativo raccolgono software applicativi per l'uso base o per guidare l'utente nel processo di installazione del sistema.
|
||||
Ogni distribuzione si differenzia dall'altra per scelte progettuali, per lo stile grafico, per la ``leggerezza" (alcune sono più adatte a computer performanti, altre a quelli di ultima generazione), per il target di utenti prefissato.
|
||||
|
||||
\url{http://www.distrowatch.com}
|
||||
\url{http://www.distrowatch.com}
|
||||
|
|
Loading…
Reference in New Issue