Lorenzo Masetti
#include <stdio.h> int main(){ printf("Ciao mondo\n"); return 0; }
Per quanto questo linguaggio possa apparire oscuro, anche una persona senza alcuna conoscenza informatica riesce a intuire cosa fa (scrivere sul video il messaggio "Ciao Mondo"). Sarebbe stato molto difficile invece capire cosa fa il corrispondente programma in linguaggio assembler, che vi riporto qui...
.file "CiaoMondo.c" .version "01.01" gcc2_compiled.: .section .rodata .LC0: .string "Ciao mondo\n" .text .align 4 .globl main .type main,@function main: pushl %ebp movl %esp,%ebp subl $8,%esp addl $-12,%esp pushl $.LC0 call printf addl $16,%esp .L2: leave ret .Lfe1: .size main,.Lfe1-main .ident "GCC: (GNU) 2.95.4 20011002 (Debian prerelease)"
Tuttavia, lo ripeto, il computer non capisce, non sa eseguire il primo programma che ho riportato, quello che riesce a eseguire è una versione codificata del secondo programma (cioè in cui a ogni parola "misteriosa" come pushl, subl, addl, è sostituito, in definitiva, un numero)
Un po' di terminologia: i programmi scritti nel linguaggio ad alto livello da esseri umani si chiamano "codice sorgente", i programmi che possono essere eseguiti sul computer si dicono "in formato binario" oppure "compilati".
Un importante proprietà del codice sorgente è quella di essere (teoricamente) indipendente dal tipo di processore. Quindi a partire dallo stesso codice sorgente possono essere compilati diversi programmi eseguibili scritti per processori, o per sistemi operativi diversi.
Ho nominato la parola "sistema operativo"... cos'è un sistema operativo? Diciamo semplicemente che il sistema operativo è un programma che si occupa di gestire i vari altri applicativi che vengono eseguiti e di fornire all'utente un'interfaccia per eseguire le operazioni di base. Esempi di sistemi operativi sono: il famigerato Windows, il Mac Os, Linux (!!), il vecchio DOS, ecc...
Da quanto detto finora risulta chiaro che avere a disposizione il codice sorgente permette di modificare un programma scritto da altri e poi ricompilarlo ed ottenere un nuovo eseguibile, questo non è possibile se invece possediamo solo la versione binaria, eseguibile dal computer ma incomprensibile e impossibile da modificare per un essere umano. Per modificare un programma è necessario possederne il codice sorgente.
I programmi che vengono distribuiti con licenza di software proprietaria, a pagamento o no, distribuiscono solo il formato binario e le aziende produttrici custodiscono gelosamente il codice sorgente, che non viene in nessun caso reso pubblico.
Per fortuna questo monopolio non è totale. Un'alternativa esiste, e sta prendendo piede grazie ad alcuni innegabili punti di forza: il software libero.
Il software libero è un tipo di software con licenze che tendono a privilegiare non il proprietario del programmi (si badi bene: il proprietario e non il programmatore, dato che i programmatori che lavorano per grandi software house cedono i diritti all'azienda) ma l'utente e in più generale la collettivita e il progresso della tecnologia. La Free Software Fundation è la fondazione che ha inventato il concetto di software libero. Uno dei principali esponenti della F.S.F. è Richard Stallman. Il progetto principale sostenuto dalla Free Software Fundation è il progetto GNU (acronimo ricorsivo per GNU's not Unix, che fa riferimento al vecchio sistema operativo Unix utilizzato fin dagli anni '70 di cui Linux è un clone) che ha scritto la licenza GPL (GNU Public License) che è la licenza più diffusa per il software libero.
Un punto importante da capire è che software libero non vuol dire solo essere gratuito. Esistono programmi che non si pagano (cosiddetti "freeware") ma il cui codice sorgente non viene reso disponibile. Non si tratta di software libero, ma di software proprietario gratuito!
http://www.gnu.org/philosophy/free-sw.it.htmldove si trova una definizione più completa.
Il "Software libero" è una questione di libertà, non di prezzo. Per capire il concetto, bisognerebbe pensare alla "libertà di parola" e non alla "birra gratis" [NdT: il termine free in inglese significa sia gratuito che libero, in italiano il problema non esiste].
L'espressione "software libero" si riferisce alla libertà dell'utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software. Più precisamente, esso si riferisce a quattro tipi di libertà per gli utenti del software:
Un programma è software libero se l'utente ha tutte queste libertà.
Da quanto detto finora si comincia a capire qual è il modello di sviluppo del software libero. Le aziende che producono software proprietario devono mantenere il codice sorgente segreto, e quindi solo una ristretta cerchia di sviluppatori è coinvolta nella produzione e nella manutenzione del software. Al contrario ogni progetto di software libero, grazie anche allo sviluppo di Internet, ha a disposizione una platea vastissima di sviluppatori che possono concorrere a migliorare il progetto. Il sistema operativo Linux, nato come progetto personale dello studente finlandese Linus Torvalds, ha trovato proprio grazie alla Rete, un'incredibile quantità di persone che negli anni ha lavorato a varie migliorie, portando così un piccolo progetto (che se non fosse stato rilasciato come software libero sarebbe rimasto una curiosità per pochi appassionati) a diventare un ottimo sistema operativo, che grazie alle sue qualità di stabilità e di affidabilità sta creando non pochi problemi al gigante Microsoft.
Una domanda ricorrente è: "come si fa a guadagnare con qualcosa che non costa niente?" o "chi paga gli sviluppatori di software libero?". Per trovare la risposta a questa domanda bisogna fare uno sforzo e staccarsi da alcuni preconcetti e vedere la figura dello sviluppatore o dell'azienda che investe nel software libero non più come dei "venditori" dei propri prodotti, ma come tecnici specializzati nella personalizzazione, configurazione, manutenzione e documentazione di un software. Inoltre le risorse che gli utenti finali risparmiano affidandosi al software libero possono essere investite nella formazione di figure professionali esperte, questo approccio permette quindi di ottenere risultati migliori a parità di costi, una maggiore cultura informatica generale e un beneficio alla comunità che può usufruire di tutti i programmi liberi sviluppati nel mondo.
Bisogna inoltre ricordare che il software libero non è necessariamente scritto da volontari non pagati. Il software libero è spesso scritto da programmatori professionisti dipendenti da aziende che producono software che vengono pagati per il loro lavoro.
Cosa può spingere un committente a richiedere che il software commissionato sia libero? Un valido esempio può essere la Pubblica Amministrazione, che ha interesse che un programma possa essere utilizzato gratuitamente in altre parti del paese. Un altro caso tipico è quello di piccole aziende che operano nello stesso campo che commissionano un software libero in modo da ridurre i costi (più aziende contribuiscono a pagare lo sviluppatore). Il software libero fornisce un altro innegabile vantaggio per l'utente: una volta che la casa produttrice del software ha consegnato la prima versione del software, le successive modifiche, aggiornamenti e miglioramenti non devono essere necessariamente eseguiti dalla stessa casa e quindi continuano a valere le leggi del libero mercato con un probabile risparmio da parte del committente. Il software proprietario invece pone in una condizione di "sudditanza tecnologica" per cui l'utente può solo, nel migliore dei casi, scegliere tra due o più monopoli, senza però avere la possibilità di "cambiare padrone" una volta fatta la scelta.
Un altro punto di forza del software libero riguarda la salvaguardia della privacy sulla rete. Lo sviluppo di Internet ha portato a un contrasto tra due tendenze opposte. Da una parte Internet ha un potenziale di libertà altissimo: libertà di espressione, di condivisione del sapere, di informazione alternativa a quella ufficiale in paesi dove la libertà di stampa non è garantita, ma anche nei paesi "democratici" del ricco "Occidente" dove su alcuni argomenti esiste una vera e propria "censura invisibile". D'altra parte però alcuni interessi forti tendono a ridurre su internet ogni forma di libertà e a trasformare la Rete in un enorme vetrina dove vendere i loro prodotti. Non solo, appare ormai chiaro un disegno che tende a schedare tutti gli utenti dei Personal Computer e quindi, entro un tempo abbastanza breve, in pratica tutti gli abitanti dei paesi ricchi. L'obiettivo è conoscere tutto ciò che può interessare dal punto di vista commerciale: i nostri gusti, le nostre scelte, il nostro conto in banca. Per di più, seguendo una tendenza che ormai sembra divenuta dominante in tutto il mondo occidentale e in particolare negli Stati Uniti, si vogliono costringere i cittadini a rinunciare ad alcune libertà civili fondamentali in cambio di una presunta maggiore sicurezza contro i pericoli del terrorismo. E così si progettano sistemi che permettano di "spiare" le e-mail, di accedere remotamente e silenziosamente ai contenuti di qualsiasi personal computer. E non c'è da stare tranquilli pensando "ma che leggano pure le mie e-mail, che l'FBI guardi pure cosa ho dentro al mio computer tanto io non ho nulla da nascondere". Questo ragionamento ha molti punti deboli. Innanzitutto, anche supponendo che chi può legalmente accedere ai dati del vostro computer abbia solo l'intento nobile di evitare attacchi terroristici, dal momento che è tecnicamente possibile (dato che ne è stata lasciata deliberatamente la possibilità) accedere ai vostri dati riservati, chi vi assicura che chiunque altro possa utilizzare lo stesso metodo per scopi meno leciti? Inoltre, dopo l'11 settembre, abbiamo visto con quanta arbitrarietà si possano applicare le leggi antiterrorismo per limitare le libertà civili. Il metodo per difendersi da tutto questo esiste ed è proprio il software libero, ed è facile capire perché. Facciamo un esempio reale di un utilizzo spregiudicato di un software proprietario per ledere la privacy di un utente. Tempo fa esisteva un programma della Real (la ditta di che produce anche Real Player) chiamato Real Jukebox (inutile provare a cercarlo, è stato ritirato e alla Real negano di aver mai prodotto un software con questo nome!) che permetteva di suonare file MP3 e di mantenere una lista delle proprie canzoni preferite. Sottobanco questo programma svolgeva anche un'altra operazione: si collegava al sito della Real e spediva la lista di tutti i vostri mp3. Presumibilmente queste informazioni venivano usate per statistiche di mercato dalle industrie discografiche, o qualcosa del genere. Potreste obiettare che questo comportamento della Real, pur essendo scorretto, non è particolarmente dannoso per l'utente. Resta però un dato di fatto: un software proprietario può eseguire delle operazioni "di nascosto" dall'utente, senza che questo abbia modo di accorgersene facilmente. Rimane per esempio un mistero cosa la Microsoft scriva all'interno dei file Word oltre al testo del documento, dato che il formato doc non è un formato aperto, cioè non sono pubbliche le specifiche. Leggende metropolitane raccontano che oltre ai vostri dati personali, ogni documento Word contiene nascosto al suo interno pezzi di email o di altri dati riservati. Ancora una volta: potrebbe non essere vero, ma quello che più importa è che con il software proprietario non è possibile avere un controllo sulle operazioni eseguite.
Con un software libero nessuna operazione nascosta che preveda la violazione della privacy è possibile. Infatti, essendo il codice accessibile a tutti, nessun programmatore si sognerebbe di inserire all'interno del codice una caratteristica nascosta che viola la privacy dell'utente e che esula dallo scopo del programma. I pezzi di codice che svolgessero questa operazione sarebbero infatti individuati da altri programmatori che ottengono il codice sorgente, che provvederebbero immediatamente a eliminare la porzione di codice incriminata, mentre chi aveva sviluppato quell'aggiunta pericolosa diventerebbe malvisto all'interno della comunità degli sviluppatori. Quindi il software libero è al sicuro da ogni falla lasciata aperta intenzionalmente, da ogni operazione nascosta. Per questo motivo il governo cinese ha deciso di usare Linux sui computer pubblici, per paura che il software Microsoft potesse contenere dei sistemi che permettessero alla CIA di entrare in possesso di informazioni riservate. Mi ripeto ancora una volta: è vero che Windows contiene questi "passaggi segreti"? forse no, ma, dal momento che si tratta di software a sorgente chiuso, non è possibile saperlo.
Il software libero può avere un ruolo molto importante nell'informatizzazione dei paesi del cosiddetto "sud del mondo". La scelta tra software libero o proprietario è di importanza fondamentale in questo momento. Questi paesi devono scegliere tra due alternative: la prima è quella di diventare dei semplici utenti di una tecnologia sviluppata nei paesi più ricchi e per la quale dovrebbero spendere cifre spesso irraggiungibili, restando in qualche modo succubi delle grandi aziende nord-americane; la seconda alternativa è scegliere il software libero, ottenere una tecnologia migliore e più versatile, per di più gratuita, che permetterebbe loro di contribuire all'arricchimento della comunità degli sviluppatori software. Il discorso delle risorse che possono essere spese in formazione, anziché per pagare le licenze di software proprietario è ancora più importante in paesi dove i soldi da investire in questo campo sono pochi. Una scelta del software libero porterebbe ad un'alfabetizzazione informatica più veloce e darebbe una concreta possibilità a miliardi di potenziali geni informatici (che non possono trasferirsi tutti a Seattle!).
Alcuni passi in questa direzione sono già stati fatti. È stato molto interessante a questo proposito l'intervento del brasiliano Marcelo Branco, consigliere del presidente Lula per le politiche in campo informatico, che ha descritto la situazione del Software Libero nel suo paese. Una realtà molto rosea, il software libero nella pubblica amministrazione è la regola in Brasile. Ha colpito tutti l'immagine del bancomat brasiliano con il logo del pinguino: i bancomat in Brasile funzionano con Linux!
L'ultimo argomento ampiamente dibattuto durante il Workshop è stata la questione dei brevetti sul software. I brevetti software sono già una realtà negli Stati Uniti e rischiano di essere introdotti per legge anche in Europa.
Per capire come mai l'idea dei brevetti sul software è assurda, bisogna fare un passo indietro e capire il motivo per cui è stato introdotto il brevetto. Prima dell'introduzione del brevetto si utilizzava il segreto industriale per proteggere le proprie invenzioni. Tuttavia le invenzioni meccaniche erano facilmente copiabili: bastava smontare una macchina per capire come funzionasse. Inoltre il segreto industriale, quando si riesce a mantenerlo, è un danno per la società perché impedisce la condivisione delle conoscenze e quindi il progresso. Per proteggere gli investimenti delle aziende nella ricerca nacque l'idea del brevetto: l' "inventore" brevettava la sua invenzione, rendendola così nota a chiunque, in cambio otteneva un monopolio legale per un periodo di tempo limitato, che oggi è di circa 20 anni in tutti i paesi che adottano i brevetti. Grazie a questo stratagemma, le industrie venivano incentivate a investire nella ricerca, perché il periodo di monopolio permetteva di recuperare i soldi spesi.
Questo sistema può essere criticato anche nelle sue linee generali, infatti con l'introduzione del brevetto il segreto industriale non è scomparso: gli industriali lo utilizzano ancora quando hanno una ragionevole certezza di poterlo mantenere; il brevetto inoltre non favorirebbe particolarmente l'innovazione che, in un regime concorrenziale, è comunque una scelta obbligata per rimanere competitivi.
Il software ha delle particolarità che lo rendono profondamente diverso da un'invenzione di tipo meccanico. Il software è un prodotto dell'ingegno e andrebbe equiparato alle idee astratte piuttosto che a un'invenzione materiale. Il software permette di implementare in pratica qualsiasi algoritmo, cioè qualsiasi idea per risolvere un problema che sia formalmente descrivibile, quindi permettere di brevettare gli algoritmi significa permettere di brevettare le idee. Per assurdo qualcuno potrebbe brevettare l'algoritmo per moltiplicare due numeri rappresentati in base due, e farsi pagare da qualsiasi costruttore hardware per questo algoritmo.
La tecnologia evolve continuamente, il software quindi ha un periodo di vita estremamente limitato quindi un periodo di monopolio di 20 anni è un'eternità per un algoritmo. Sarebbe come se il telefono fosse stato brevettato per cinquemila anni, ma chi userà il telefono tra cinquemila anni?
I programmi di oggi sono estremamente complessi e stratificati, e fanno uso di alcuni algoritmi di base che risolvono problemi comuni, per i quali esiste una letteratura specialistica vecchia di anni. Permettere di brevettare questi algoritmi sarebbe assurdo oltre che dannoso, equivarrebbe a brevettare il teorema di Pitagora (cioè una conoscenza fondamentale acquisita da tempo).
Il software proprietario è già protetto dalla segretezza del codice sorgente, che equivale in pratica al segreto industriale, quindi introdurre il brevetto del software significherebbe proteggere lo stesso prodotto in due modi diversi (più la normativa sul diritto d'autore) che erano nati come alternativi.
Il sistema dei brevetti, che era stato pensato per diffondere la conoscenza, applicato al software otterebbe l'effetto contrario. Uno scenario probabile, dopo l'introduzione dei brevetti software, sarebbe che le grandi aziende con molti avvocati produrrebbero moltissimi brevetti. Le piccole aziende e gli sviluppatori di software libero verrebbero invece schiacciati dalle royalities che dovrebbero pagare alle grande aziende. Brevettare costa molto (un minimo di 2000 euro per un brevetto in Italia, un minimo di 10000 euro per un brevetto europeo) e quindi i piccoli programmatori non potrebbero permettersi di brevettare, soprattutto se poi il programma viene rilasciato gratuitamente.
I brevetti software Una minaccia per il Software Libero Simo Sorce <[email protected]> http://softwarelibero.it Perche' i brevetti sulle idee sono dannosi per lo sviluppo e la libera impresa http://softwarelibero.it/GNU/nemici/brevetti.shtml http://www.freepatents.org http://swpat.ffii.org/indexen.html http://no-patents.prosa.it http://lpf.ai.mit.edu/Patents/patents.html
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -dir html -split 0 -no_navigation freesoftware.tex
The translation was initiated by Lorenzo Masetti on 2002-11-22