Principali tipologie di licenze software e software libero Alia Rosario Tipologie di linguaggio Citiamo solo alcuni dei possibili modi di classificare in linguaggio • Linguaggio connotativo, serve a fare descrizioni (esempio: Marco è un uomo alto ed un po’ soprappeso, quando è rilassato riesce ad essere moto simpatico …) • Linguaggio espressivo, serve a esprimere sentimenti ed emozioni (esempio: Quando vedo il tramonto la mia mente corre alla mia terra lontana e un groppo mi si forma in gola) • Linguaggio poetico, spezza le regole tradizionali della lingua ufficiale per dare più forza ad un concetto (esempio: Soldati Si sta come d’autunno sugli alberi le foglie – G. Ungaretti) • Linguaggio non verbale.. • Linguaggio Imperativo, serve solo a dare istruzioni, ovvero ordini e comandi (esempio: Pulisci la lavagna, scrivi il testo dell’esercizio che ti detto, svolgi correttamente l’esercizio …) Linguaggi naturali Italiano – Inglese – Francese – Spagnolo - Sardo – Siciliano … • I linguaggi naturali normalmente appresi e usati da noi umani, usano un numero molto elevato di vocaboli ed hanno una struttura grammaticale assai complessa, sono strumenti di comunicazione estremamente flessibili e potenti e riescono ad assolvere a gran parte delle funzioni prima viste. • A volte può presentare delle ambiguità che possono essere anche volute: i versi di Dante “Godi, Fiorenza, poi che se' sì grande” che aprono il 26° canto dell’Inferno formalmente sono un elogio alla sua città, in realtà sono un ironico e amaro richiamo che viene chiarito dai versi successivi. Linguaggi di programmazione • Sono particolari linguaggi imperativi che servono a dare degli ordini ad un calcolatore elettronico. • Si caratterizzano per una struttura estremamente semplice e sintetica. • Sono univoci, ovvero ammettono un’unica interpretazione ovvero non sono soggetti ad equivoci e incomprensioni. Linguaggi macchina Il primo linguaggio di programmazione • I circuiti elettronici di un computer possono capire e interpretare solo la presenza o l’assenza di una tensione elettrica, situazioni simbolicamente rappresentate da sequenze di cifre 0 e 1 che formano un codice binari. • Con i soli due caratteri 0 e 1 è teoricamente possibile scrivere qualsiasi cosa, in particolare impartire degli ordini ed eseguire dei calcoli. • Il principale limite di tale forma di linguaggio è che, paradossalmente a causa della sua semplicità, è estremamente lontano dai linguaggi naturali degli esseri umani, è risulta per noi molto difficoltoso da usare. • Ogni tipologia di calcolatore adotta un particolare linguaggio macchina. Linguaggi di più alto livello • Per aggirare l’assoluta difficoltà di usare i linguaggio macchina, sono stati introdotti dei linguaggi comunque imperativi ed univoci ma più vicini al linguaggio umano (storicamente si è cercato di avvicinarsi maggiormente alla lingua inglese). • Alcuni esempi di questi linguaggi sono: • Fortran, Cobol, Algol, Basic, c, c++, Pascal, Java ... Interpreti e compilatori • Testo in linguaggio C -> Compitatore -> Linguaggio Macchina -> Calcolatore • Con la compilazione il programma scritto in linguaggio di alto livello viene tradotto in linguaggio macchina. • Contrariamente a quanto si possa pensare la possibilità di queste traduzioni non è bidirezionale Traduzione non bidirezionale Agevole Linguaggio Linguaggio C Macchina Difficoltosa Produce un risultato scadente Quali sono le categorie di software? • • • • • Pubblico Dominio Freeware Shareware Open Source Software proprietario Pubblico Dominio • È un software privo di licenza o distribuito con un diritto d’autore che non pone alcuna limitazione al suo impiego. • Può ad esempio essere sfruttato come base per sviluppare un software con licenza proprietarie e distribuito protetto e a pagamento Software proprietario • Programmi non liberi, e di cui non è possibile consultare e modificare i codici sorgenti. • Per esempio il software che viene venduto dai negozi di informatica o quello che il grande fornitore di software installa sui server dell’azienda. • Il software proprietario si contrappone a quello libero e si caratterizza solitamente per il fatto che l’utente deve pagare per poterlo utilizzare e non gode di alcun diritto di adattamento dello stesso. • I codici sorgenti sono riservati. Freeware • Software che viene distribuito in modo gratuito. • È distribuito indifferentemente con o senza codice sorgente, a totale discrezione dell'autore e senza alcun obbligo al riguardo. • È sottoposto esplicitamente ad una licenza che ne permette la redistribuzione gratuita. • Il software freeware viene concesso in uso senza alcun corrispettivo, ed è liberamente duplicabile e distribuibile. Shareware • Il software shareware viene rilasciato gratuitamente, solo in versione eseguibile, ma con l’impegno morale, da parte dell’utente, di pagare dopo un periodo di prova il costo di una licenza, che solitamente è molto contenuto. • Il software shareware è un modo per lo sviluppatore di promuovere il proprio lavoro. • Spesso, per incoraggiare il successivo pagamento, l’autore rilascia una versione ridotta in funzionalità, con l’impegno di fornirne quelle aggiuntive all’atto del pagamento della licenza. • È un modello di business, che però si scontra spesso con la moralità delle persone, che preferiscono non pagare la licenza d’uso del programma, anche se continuano a usarlo. Open source • Disponibilità del codice sorgente, e possibilità di creare prodotti derivati a partire da quel sorgente, da rilasciare sotto la stessa licenza del software originale. • La collaborazione di più parti (in genere libera e spontanea) permette al prodotto finale di raggiungere una complessità maggiore di quanto potrebbe ottenere un singolo gruppo di lavoro. • I software open source attualmente più diffusi sono Firefox, OpenOffice, 7-Zip • La comunità open source è molto attiva, comprende decine di migliaia di progetti. Dai programmi … alle App Mobile App o Sono grossomodo l’equivalente dei programmi per computer, e arricchiscono il corredo di funzioni di base offerto dall’apparecchio. Web App o Sono applicazioni che risiedono su un server della rete, per sfruttarne le funzioni devo essere connesso al sito e quindi ad una rete, non richiedono istallazione e non occupano in modo stabile memoria dell’apparecchio, a volte richiedono comunque apparecchi con buone prestazioni per sfruttare le funzioni live e real time. Mobile App • si caratterizzano per essere adattati ad uno schermo di piccole dimensioni e a risorse hardware e possibilità di connettersi alla rete limitate. • Modalità di distribuzione del software o o o o Es. ITunes Store Es. App Store Google play (File .apk) Solitamente non si scarica o acquista alcun file di istallazione, ma direttamente dalla rete viene installato il software desiderato. • Sfruttano frequentemente la possibilità di un costante scambio di dati con le reti senza necessariamente richiedere una banda eccessivamente ampia. Web App • si caratterizzano per essere adattati ad uno schermo di piccole dimensioni e a risorse limitate hardware • Si usano solo grazie alla connessione alla rete. • Spesso il loro uso, passa attraverso l’uso del browser installato sul dispositivo. • Si immagina una loro ampia diffusione con l’introduzione e diffusione dell’HTML 5 per realizzare siti. Grazie X l’attenzione