Software: di sistema, applicativo, linguaggi, licenze d

Download Report

Transcript Software: di sistema, applicativo, linguaggi, licenze d

Software: di sistema, applicativo,
linguaggi, licenze d'uso
Carlo Ottaviani, ISM-CNR
Sistema operativo vs. software
applicativo (2)
• Il sistema operativo è quindi indispensabile alla
macchina per funzionare. Il software applicativo
serve invece per tutti gli usi che l'utente vuole fare
del computer, da quelli di utilità (manutenzione
dischi, antivirus) a quelli di produttività personale
(Office automation, grafica etc.). Non è
indispensabile alla macchina per funzionare.
L'unica eccezione di programma applicativo
integrato nel sistema operativo è... (domanda da
5$)?
Sistemi Operativi – avvio (1)
Quando si avvia il computer, quindi, il BIOS
controlla l'hardware, cerca un disco di avvio (sul
quale il s.o. dovrà essere presente) e passa il
controllo al bootloader, un piccolo programma
presente su un settore detto MBR del disco.
Sistemi Operativi – avvio (2)
Il bootloader provvede a caricare in RAM il sistema
operativo, del quale conosce la posizione (settore
di boot di una partizione), o un successivo
bootloader che la conosce e compie l'operazione
al posto suo.
Sistemi Operativi – componenti
(1)
La componente fondamentale di un sistema
operativo è denominata KERNEL (nucleo).
Esso si occupa della gestione dell'hardware
di base tramite un layer di astrazione, in
questo affiancato da un'altra componente, i
driver, e gestire tutti i processi, tramite uno
scheduler. Il command interpreter, invece,
riceve un comando, ne controlla la sintassi,
e lo esegue generando eventuali codici di
errore.
Sistemi Operativi – componenti
(2)
Nel MS-DOS esisteva solo il command.com
che comprendeva anche l'unica interfaccia
utente (che appariva col famoso prompt,
es.: C:\>). Nei vari Unix, le interfacce, o
shell, sono diverse (es.: csh, bash), mentre
per i sistemi “punta e clicca” a volte non
esiste interfaccia testuale, ma solo quella
grafica (es.: il Finder del MacOS), che
traduce i movimenti del mouse in comandi.
I driver sono spesso moduli caricabili
dinamicamente dal kernel.
Sistemi Operativi – componenti
(3)
In alcuni casi, nei sistemi operativi sono
integrati un certo numero di programmi
“bonus”. È il caso di Windows con Internet
Explorer, che ne costituisce in pratica
l'interfaccia grafica, il file manager ed il
programma di navigazione web. Il che,
come sapete, ha procurato le note grane
legali, non ancora risolte, alla Microsoft.
Nel caso di Unix, invece, l'interfaccia
grafica stessa (XFree86) è un programma a
parte, opzionale.
Sistemi Operativi – Microsoft (1)
L'evoluzione dei sistemi operativi Microsoft
segue quella dell'hardware dei PC in
maniera così inscindibile che è stato
coniato il termine “Wintel” per definire i
PC compatibili Intel, sui quali gira, nella
quasi totalità dei casi, Windows. Il primo
s.o. targato MS fu il MS-DOS (Disk
Operating System), pensato per i primi PCIBM (1981) con processori 8088 (8bit) e
8086 (16 bit); il DOS è arrivato fino alla
versione 6.22.
Sistemi Operativi – Microsoft (2)
Nel frattempo, dopo il boom del Macintosh,
gli fu creata un'interfaccia grafica
chiamata Windows. Fino all'accoppiata
DOS 4.0/Windows 3.1, la seconda girava
sul primo (un po' come XFree su Unix), ma
già con Windows 95 la presenza del DOS
era abilmente dissimulata sotto l'interfaccia
grafica e solo alcune funzioni erano
passate di mano. Come Windows 98 e ME,
le
successive
evoluzioni,
sono
fondamentalmente dei sistemi operativi
client e monoutente.
Sistemi Operativi – Microsoft (3)
Le operazioni di rete hanno acquisito, nel
tempo, un'importanza sempre maggiore, e
la Microsoft, sempre seguendo MacOS sul
fronte client, ha integrato caratteristiche di
rete come condivisione di files e stampanti,
navigazione web, e-mail. Ben presto ci si
rese però conto che in un vero ambiente di
lavoro con rete di computer, occorre
un'architettura client/server e multiutente,
per la quale Windows era inadeguato,
rispetto ad es.: a Unix, VMS, etc.
Sistemi Operativi – Microsoft (4)
Nacquero perciò Windows NT (sviluppato
dal team di sviluppo del VMS, portato via a
suon di dollari dalla Digital) ed i suoi
successori Windows 2000 e Windows XP,
nel quale si completa il merge tra i due
rami di sviluppo di Windows. La serie NT
comprende una suite di programmi di
servizi per Internet (la tecnologia IIS –
Internet Information Service), facile da
usare ma fonte di infiniti guai per gli
amministratori per le sue vulnerabilità.
Microsoft Windows – pregi e difetti (1)
PREGI:
Facilità d'uso per applicazioni standard
Si trova generalmente preinstallato
Facile trovare assistenza (a pagamento o da
qualche amico smanettone)
Gran quantità di software disponibile,
purtroppo spesso piratato (!)
È uno standard, o almeno aspira ad esserlo
Microsoft
Windows
–
pregi
e
difetti
(2)
DIFETTI:
Configurazione difficoltosa ed a volte poco
flessibile per applicazioni non standard
Costoso e con licenza discutibile
Soggetto a problemi di sicurezza (bugs, virus,
vulnerabilità varie – vedi Nimda, Code Red
SQL worm e l'ultimo arrivato Blaster)
Gli aggiornamenti vengono rilasciati solo
quando decide Microsoft e non sempre
risolvono tutti i problemi di sicurezza
riscontrati
Sistemi Operativi – Unix (1)
•Unix fu inventato nel 1970 nei laboratori della
AT&T – Bell, Inizialmente scritto in assembler
per il PDP, in seguito fu riscritto in C per essere
leggero, potente e portabile. Scritto “dai
programmatori per i programmatori” è pieno di
comandi criptici a causa di abbreviazioni non
sempre chiare (es.: cp=copy, ps=process
status). Oltre a questo è un sistema multiutente,
multitasking e orientato alla rete.
Sistemi
Operativi
–
Unix
(2)
•Per motivi legali (antitrust), molto simili a
quelli che attualmente coinvolgono Microsoft,
AT&T fu costretta a cederne alle università il
codice sorgente. Questo favorì lo sviluppo di
Unix, ma creò di fatto un fork dello sviluppo
stesso:
la
AT&T
poté
alla
fine
commercializzare il suo Unix (del quale poi
cedette la licenza), denominato SystemV, ma
era nato un altro standard “universitario”, detto
BSD (Berkeley Distribution System) ed i due
avrebbero da quel momento dovuto convivere.
Sistemi Operativi – Unix (3)
Esistono tra i due tipi differenze
architetturali, semantiche (comandi - es.: ps
- leggermente diversi) ma anche
concettuali, specialmente per la struttura di
init (che vedremo più avanti). Esistono
anche due diverse filosofie, causa di infinite
guerre di religione tra i loro sostenitori,
sulla struttura del kernel: microkernel
contro kernel monolitico. La più nota vede
contrapposti Tanenbaum (inventore di
Minix) e Torvalds (inventore di Linux)
Sistemi Operativi – Unix (4)
La distinzione è trasversale (MkLinux, un
SystemV, è basato su Mach, un microkernel
sviluppato da Apple, così come MacOSX,
che invece è un BSD). In generale un
microkernel è considerato un po' meno
veloce, ma più stabile ed adatto ad
applicazioni real-time (es.: QNX, uno Unix
real-time per applicazioni critiche come il
controllo di un velivolo). Linux non è realtime se non in piccola parte.
Sistemi Operativi – Unix (5)
È importante notare che, nonostante le
differenze citate, Unix è nato per essere uno
standard, e di fatto lo è, in quanto tutti i
programmatori di tutti i suoi dialetti
(commerciali o open source, SystemV o
BSD) si sforzano di seguire ed
implementare gli standards IEEE – POSIX
(Portable Operating System Interface for
Computer Environments). Tra gli Unix
commerciali citiamo Sun Solaris, IBM AIX,
MacOS X, tra gli open source i vari *BSD e
Linux.
*BSD Unix (1)
A partire dalle versioni 4.3 e 4.4 del kernel
BSD, sviluppato alla Berkeley University,
sono nate tre implementazioni libere
denominate
FreeBSD,
OpenBSD
e
NetBSD. Si tratta di progetti di sviluppo
indipendenti, con finalità leggermente
diverse, che però spesso condividono parti
di progetto (es.: i ports), e soprattutto la
licenza BSD (il software è a sorgente
aperta, gratuito e riutilizzabile anche per
scopi commerciali, cioè la licenza BSD non
è completamente ereditaria).
*BSD Unix (2)
FreeBSD – Tra i tre è quello più “completo”,
offre moltissimi programmi aggiuntivi ed
aggiornati, drivers per periferiche, ed è
orientato anche ai sistemi desktop, anche se
il suo target sono i server di rete. Il sistema
di aggiornamento dei programmi detto dei
ports è molto potente, anche se usarlo per
aggiornare il sistema operativo stesso
presenta non pochi ostacoli. L'ultima
versione stabile è la 4.8, la più recente la
5.1.
*BSD Unix (3)
OpenBSD – Orientato alla sicurezza, offre
relativamente pochi ma testatissimi
programmi (magari non l'ultima versione
rilasciata), ed i suoi programmatori hanno
sviluppato software di crittografia come
OpenSSH e OpenSSL (infatti la sua sede è
in Canada, per aggirare le restrizioni USA
sul software crittografico) ed il miglior
sistema di filtro pacchetti. È storicamente il
meno vulnerabile, ed il più adatto per un
server. Ultima versione stabile la 3.3.
*BSD Unix (4)
NetBSD – Tra i tre è quello più “criptico” e
difficile da installare, ma offre il supporto
per un numero esagerato di piattaforme
hardware, laddove FreeBSD gira solo su
PC Intel e Alpha, e OpenBSD su PC,
Alpha, Macintosh* e poche altre. Come
dotazione software si colloca a metà tra i
suoi colleghi, anche se eredita il sistema dei
ports da FreeBSD. Ultima versione stabile
la 1.6.1.
*BSD Unix (5)
And the winner is...
FreeBSD se volete unire relativa facilità
d'uso,
completezza
e
software
aggiornatissimo
OpenBSD se volete un sistema a prova di
intrusione. L'unico in grado di fungere da
bridge-firewall
NetBSD se avete un vecchio sistema non PC
da recuperare alla grande, anche se
richiede un po' di hacking
Linux (1)
Linux nasce dall'idea di Linus Torvalds di
sviluppare uno Unix SystemV per PC libero
e gratuito. L'idea fu talmente buona che
diede origine ad una massa impressionante
di programmatori al lavoro su di esso, alla
nascita della GNU Free Software
Foundation (donde la definizione di GNULinux) e della sua licenza GPL (GNU
General Public License). Essa prevede che
il software sia a sorgente aperta, gratuito e
riutilizzabile a patto che i derivati siano
anch'essi a licenza GPL.
Linux (2)
Ricordate i motti “Linux is not Unix” e GNU
is Not Unix”. Infatti il marchio Unix è
ancora di fatto registrato, e ci si può
fregiare di tale nome solo pagando
royalties, che è l'antitesi del progetto di
software libero propugnato da Torvalds e
Stallman. Di questi giorni è il tentativo di
SCO (che detiene i diritti di Unix) di
dimostrare che in realtà Linux e la IBM
hanno violato il copyright
Linux (2)
Linus Torvalds segue ancora lo sviluppo del
solo kernel, ed è lui a decidere quali
modifiche tra quelle proposte vengono
integrate nel kernel ufficiale e quando
rilasciare una nuova versione (ultima
stabile la 2.4.21). A differenza dei *BSD,
dove ogni progetto gestisce l'intero sistema
operativo e decide quali programmi
integrare, esistono una miriade di
distribuzioni di Linux, che condividono
kernel e licenza, ma assolutamente diverse
per software incluso, organizzazione files e
tools di configurazione
(3)sono:
Le distribuzioniLinux
più famose
RedHat – giunta alla versione 9a, è
completa (3 cd di software di ogni tipo!) e
piena di tools grafici di configurazione,
anche se per vari motivi comincia a
discostarsi dalla filosofia originale (ad es.:
per alcune modifiche autonome al kernel
ed il copyright sul marchio). Per questo un
po' avversata dai puristi, è molto adatta ad
un server facile da mantenere, ed offre la
possibilità di acquistare l'assistenza a
prezzi convenienti).
Linux (4)
Mandrake – giunta alla versione 9.1, è la
più facile da usare. Per questo si adatta ai
principianti ed ai sistemi desktop; a causa
della continua ricerca del software più
recente (anche qui 3 cd di programmi
disponibili) presenta però qualche
problema di sicurezza e stabilità che la
rende meno adatta all'uso su un server.
Anche qui si può acquistare il supporto a
prezzi contenuti. L'ideale se volete
abbandonare Windows senza traumi...
Linux (5)
Slackware – giunta alla versione 9.1, era
detta “the Linux for the subgenius” a
causa
della
sua
complessità
di
configurazione (niente o quasi tools
grafici) ed aggiornamento, e del suo init in
stile BSD (anche se è possibile usare una
struttura tipo SystemV). Amata dai puristi
e con pochi problemi di sicurezza, è
adattissima ai server anche se lo
sviluppatore non fornisce assistenza.
Adatta ad un utente già “svezzato”, la
dotazione software (1-2 cd) è completa.
Linux (6)
Debian – La più amata dai puristi, perché
la più aderente al progetto GNU, è
piuttosto ostica nella configurazione
iniziale,
ma
ha
il
sistema
di
aggiornamento automatico forse più
evoluto. Non brilla per fornire sempre il
software più recente, ma ha pochi
problemi di sicurezza. Adatta ad un server
ed all'utente smaliziato, non prevede la
fornitura
di supporto
tecnico
a
pagamento. Ultima versione la 3.0, si
possono avere fino a 7 cd di software...
Linux (7)
SuSE – Distribuzione tedesca, è disponibile
solo a pagamento (prezzo comunque
contenuto) a differenza delle altre che si
possono scaricare liberamente da internet,
allegare alle riviste di informatica, ed
opzionalmente acquistare. Molto evoluta,
ha il miglior programma di installazione
iniziale. Adatta sia a sistemi server che
desktop, è alla versione 8.2, venduta su 7
cd e un DVD.
Linux (8)
YellowDog – Distribuzione derivata da
RedHat, ma concepita per i sistemi
PowerPC, per i quali è la migliore in
assoluto (battendo Mandrake, SuSE e
Debian).
Integra
i
sistemi
di
aggiornamento di RedHat e Debian, ed è
adatta sia ai server che ai desktop (anche
se con qualche piccolo baco nella parte
multimediale). Offre servizi a pagamento
ed è da poco uscita la versione 3.0, con 3
cd di software.
Linux (9)
And the winner is...
RedHat se volete unire facilità d'uso,
completezza e possibilità di acquistare
supporto tecnico
Slackware se volete avere la possibilità / non
avete paura di sporcarvi le mani per
ottenere tutto quello che volete dalla
configurazione
Yellowdog se avete un PowerPC
Sistemi proprietari o sistemi
Esistono
partitidilemma!
ben
delineati,
liberi? due
L'eterno
(1)
sull'argomento “software commerciale o
software libero”. I sostenitori del primo
affermano che il software commerciale, per il
fatto che si paga acquistandolo da una
compagnia seria e rinomata, offre maggiori
garanzie di solidità e sicurezza. I sostenitori di
Windows, poi, sostengono che la sua facilità
d'uso e la possibilità di trovare molti esperti
grazie alla sua diffusione, dia vantaggi di
economicità anche se lo si paga inizialmente di
Sistemi proprietari o sistemi
liberi? L'eterno
dilemma!
I sostenitori
dell'open source,
invece, (2)
dicono
che il fatto che il software sia sviluppato da
migliaia di programmatori, con accesso al
codice sorgente, garantisca che eventuali
problemi di sicurezza e stabilità siano trovati,
resi pubblici e risolti in tempi rapidi, senza
dover seguire logiche commerciali. Inoltre si
trovano ormai molti esperti Linux disponibili,
ed è un dato di fatto che Linux è più stabile
(circa 12 volte meno soggetto a crash di
sistema, secondo test affidabili).
Sistemi proprietari o sistemi
L'eterno dilemma!
La liberi?
mia personalissima
opinione è(3)che
l'argomento “ditta seria = solidità” valga solo
per alcuni Unix commerciali (Solaris in testa),
ma non ancora per Windows, a causa delle
esasperate
politiche
commerciali
(vedi
obsolescenza programmata) che causano un
numero elevato di problemi di sicurezza. Tali
problemi poi, vengono a volte negati fino al
loro esplodere, oppure fino al rilascio tardivo di
una patch, talvolta inadeguata. Questa secondo
me non è propriamente serietà.
Sistemi proprietari o sistemi
liberi? L'eterno dilemma! (4)
Il problema di rilascio delle patch non
coinvolge l'Open Source. Nel caso di una
vulnerabilità grave il rimedio si trova
disponibile al massimo in una settimana, spesso
poche ore dopo la sua scoperta. Se poi si usa un
sistema di aggiornamenti automatici (RedHat,
FreeBSD, Debian, YellowDog) il sistemista
non deve nemmeno preoccuparsi di andarli a
cercare ed installare.
Sistemi proprietari o sistemi
liberi? L'eterno dilemma! (5)
Infine, due parole sugli aspetti legali delle
licenze. Con Windows, in realtà non avete
nessuna garanzia sul buon funzionamento del
software, e nelle ultime versioni dovete
accettare che Microsoft decida se e quando
installarvi gli aggiornamenti. E ricordate che
usare Windows senza licenza, come molti
fanno (magari avendo fatto un upgrade
irregolare da una versione precedente di cui si
aveva la licenza) è un REATO.
Sistemi proprietari o sistemi
liberi? L'eterno dilemma! (6)
Con l'Open Source, invece, avete la facoltà di
fare quello che volete, anche ricompilarvi il
kernel con le sole caratteristiche che vi
servono, rendendolo più leggero e veloce.
Certo, costa fatica. Inoltre nessuno vi vieta di
acquistarlo da una ditta che vi offre supporto
tecnico per installazione ed eventuali problemi:
semplicemente potete scegliere. Infine, potete
riutilizzare PC un po' datati, come detto prima.
Sistemi proprietari o sistemi
liberi? L'eterno dilemma! (7)
Con tutto questo, non vi dirò mai: “Windows è
@¥¿#%, cancellatelo subito dal vostro PC e
usate Linux”, perché sarebbe concettualmente
sbagliato, ma: “Cercate di scegliere
responsabilmente, dopo aver valutato pregi,
difetti e possibili conseguenze della vostra
scelta”. Se volete un sistema proprietario,
comunque, vi consiglio Solaris (un'ottima
scelta se potete permettervi una workstation
Sun, un po' meno sul PC).
Software applicativo (1)
Per software applicativo si intendono, come
detto, tutti i programmi eseguibili, destinati a
qualsiasi scopo (scrivere un testo, ascoltare un
CD audio, tenere la contabilità, scrivere voi
stessi un altro applicativo usando un ambiente
di programmazione, etc.:). Fare una lista
esaustiva non è possibile in questa sede. Mi
limiterò pertanto a fare delle classificazioni in
base al tipo di s.o. ed alle licenze d'uso.
La stragrande
maggioranza
dei programmi
Software
applicativo
(2) sono
scritti per Windows, a causa della sua
diffusione. Questo è tanto più vero quando si
parla di giochi, mentre la differenza si
assottiglia terribilmente quando cominciamo a
parlare di linguaggi di programmazione e
relativi compilatori e software per offrire
servizi di rete. Nell'ultimo caso, anzi, se
parliamo solo di software di qualità il rapporto
si inverte a favore di Unix. Il Macintosh
rimarrebbe come fanalino di coda, ma con
MacOS X eredita la massa del software Unix.
Software
applicativo
(3)
Si trovano sostanzialmente tre tipologie di
licenze software: due già viste (sw proprietario
e sw open source) mentre per gli applicativi ha
preso molto piede (soprattutto su Windows e
MacOS) una terza tipologia detta shareware: il
sw è distribuito gratuitamente, con tutte le sue
funzioni o quasi, ma dopo un periodo di prova
ragionevole l'utente è chiamato a pagarlo (di
solito poco) e riceve un codice per sbloccare le
funzioni mancanti o l'intero programma (dopo
la scadenza spesso smette di funzionare).
Software applicativo (4)
Per un server, la scelta deve ricadere
necessariamente sulle prime due tipologie: lo
shareware di solito non ha un modello di
sviluppo tale da garantire la costanza degli
aggiornamenti ed il supporto, e spesso (ma
esistono eccezioni clamorose) la qualità risulta
inferiore. Personalmente, anche nel caso del sw
applicativo ritengo preferibile, ma con molte
eccezioni relative soprattutto all'ambiente
client, l'approccio open source.
Office
automation
(1)
Il re incontrastato dei programmi per office
automation (ovvero quelle suite di programmi
comprendenti un editor di testi, un foglio di
calcolo, un editor di presentazioni, e talvolta un
programma di disegno, che chiunque abbia mai
acceso un PC ha maneggiato almeno una volta)
è senza dubbio Microsoft Office. Le ragioni
sono varie, ma di fatto al giorno d'oggi nessuna
suite che non sia in grado di importare ed
esportare files nel suo formato ha chances di
mercato.
Microsoft
Office automation
comprende Word(2)
(l'editor di
Office
testi), Excel (il foglio di calcolo) e PowerPoint
(l'editor di presentazioni). Curiosamente, i
primi due si sono diffusi all'inizio sulla
piattaforma Macintosh, dove il sistema
operativo permetteva funzioni avanzate (es.:
wysiwyg, what you see is what you get)
all'epoca vietate su DOS ed i primissimi
Windows. È strapieno di funzioni avanzate,
anche multimediali e per il Web, e ne esce una
nuova release ogni anno circa (v. obsolescenza
programmata). Esiste per Windows e MacOS*.
Office automation (3)
Nelle versioni più complete MS Office include
anche un semplice database chiamato Access,
ma nessun programma di disegno (a parte
quello rudimentale di PowerPoint). Altre
possibili scelte per Win e Mac erano, sul fronte
testi, WordPerfect della Corel e Nisus, ma sono
spariti per dissesti commerciali, mentre come
suite commerciale alternativa esiste ancora
StarOffice della Sun, la cui storia è alquanto
curiosa (vedi il seguito).
Office
automation
(4)
Da
StarOffice
a OpenOffice
(1)
La Sun acquistò alcuni anni fa StarOffice da
una piccola software house tedesca. Lo scopo
iniziale era di proporlo come suite per la
piattaforma Sparc/Solaris, da lanciare come
alternativa Workstation ai PC. Per poterlo in
qualche modo imporre in un mondo dove MS
Office era il dominatore incontrastato, si decise
di portarlo anche su Windows e di distribuire la
versione 5 gratis... sì, proprio gratis ed a
chiunque!
Office
automation
(5)
Da
StarOffice
a OpenOffice
(2)
Con l'avvento di Linux, StarOffice fu portato
anche su questo s.o. con le stesse modalità.
All'epoca la suite era migliore (ma più
“pesante”) di quella MS, sia per il programma
di disegno che per il database, oltre che per il
suo ambiente integrato. Ma... poteva bastare a
farlo esplodere su Linux, un ambiente dove
l'open source è la filosofia di base? No, e la
Sun prese una decisione spiazzante per molti:
rendere pubblici i sorgenti di StarOffice.
Office automation (6)
Da StarOffice a OpenOffice (3)
Con questa mossa si ottennero vari risultati:
La creazione di un team di sviluppo enorme
chiamato OpenOffice
Il supporto di tale team per arrivare alla
versione 6 di StarOffice in minor tempo
Il porting su altre piattaforme (es.: MacOS X
ed i *BSD)
Una diffusione capillare ed un'ottima
pubblicità
Office
automation
(7)
Da
StarOffice
a OpenOffice
(4)
Attenzione: la versione 6 di StarOffice si paga
(molto meno di MS Office, ed è gratis per le
scuole), ma nel frattempo OpenOffice, gratuito
ed open source, è arrivato alla versione 1.1
(quella usata per creare questa presentazione) e
costituisce un'alternativa validissima al
programma di Microsoft, con i cui files si ha
una compatibilità vicina al 95%. Buone
alternative libere per Linux sono GNUmeric
(calcolo) e ABIword (word proc.)
OpenOffice
comprende
Write, Calc,(8)
Impress e
Office
automation
Draw, mentre il database non è più presente per
motivi di licenza (almeno su Linux, dove ce ne
sono tonnellate gratis, questo non è un
problema). L'ambiente integrato di StarOffice è
stato abbandonato, ma l'integrazione tra le varie
parti è ottima. Costituisce perciò un'alternativa
validissima per tutti quei casi dove si ha
bisogno di un programma di punta ma non si
può spendere troppo e non si vuole usare
software pirata
. Lo trovate su
www.openoffice.org.
Software di sviluppo (1)
Fino a non molto tempo fa si parlava di
linguaggi di programmazione: al giorno d'oggi
tale definizione è limitativa, in quanto esistono
ambienti di sviluppo (RAD, Rapid Application
Development) nei quali non occorre digitare
una sola riga di codice (es.: NI LabView,
Borland Kylix e per certi versi lo stesso
Microsoft Visual Basic). In ogni caso, i
linguaggi
tradizionali
rimangono
la
maggioranza, anche se con alcune novità
rispetto al passato, che analizzeremo.
Software di sviluppo (2)
Per linguaggio di programmazione, a scanso di
equivoci, intendiamo dunque un set più o meno
completo di istruzioni, funzioni e variabili, con
nomi
definiti
e
comprensibili
dal
programmatore “umano”, che le può
organizzare secondo una sintassi definita
scrivendo un file di testo, che verrà poi in
qualche modo convertito in un set di istruzioni
in linguaggio macchina, comprensibili al
processore, per consentirne l'esecuzione.
Software di sviluppo (3)
Tra i linguaggi veri e propri, come i famosi
Basic, Fortran, C e Java, la prima distinzione da
fare è tra linguaggi interpretati e compilati. Nei
primi, il codice viene letto da un software detto
interprete e trasformato “al volo” in istruzioni
macchina durante l'esecuzione, con ovvia
maggiore lentezza, ma con la possibilità di
testare il programma strada facendo e minore
occupazione di spazio su disco da parte del
programma stesso.
Software di sviluppo (4)
Nei linguaggi compilati, invece, il codice
dev'essere trasformato una volta per tutte (da un
software detto compilatore) in codice
macchina. Si genera perciò un applicativo che è
eseguibile anche in assenza dell'ambiente di
sviluppo che lo ha generato, e più veloce
perché salta la fase di traduzione, ma occupa
più spazio sul disco. Talvolta (es.: QuickBasic)
erano presenti le due opzioni (il programma,
una volta fatto e testato con l'interprete, si
poteva compilare).
Software di sviluppo (5)
Un'altra distinzione fondamentale è quella tra i
linguaggi di programmazione strutturati ed i
linguaggi di programmazione ad oggetti
(esistono altri paradigmi di programmazione,
ma per brevità li ignoreremo). Linguaggi come
C, Basic, Fortran appartengono alla prima
categoria, mentre C++, Java, SmallTalk alla
seconda (il primo in realtà è un ibrido per
mantenere la compatibilità con il C, al quale
aggiunge le funzioni OOP).
Software di sviluppo (6)
I linguaggi di programmazione strutturati sono
quelli dove il programma è diviso in unità
funzionali (dette subroutine) che hanno un solo
punto d'ingresso ed uno o più punti d'uscita ben
definiti. Il flusso di esecuzione avviene
passando da una subroutine all'altra (successiva
o tramite salti condizionati), ed all'interno di
esse passando da un'istruzione alla successiva,
a parte il caso anche qui dei salti condizionati.
Software di sviluppo (7)
L'idea dei linguaggi di programmazione ad
oggetti è quella di dividere il sistema in una
serie di oggetti, appartenenti a determinate
classi. Tutti gli oggetti della stessa classe hanno
le stesse variabili e le stesse funzioni, dette
metodi. Il programma viene dunque scritto
definendo le classi e le loro interazioni, o
relazioni di parentela, attraverso i metodi.
Scripting (1)
I linguaggi di scripting sono quelli che
consentono al programmatore di interagire con
il command interpreter del proprio sistema
organizzando i comandi in una sequenza
opportuna, invece di digitarli interattivamente
uno dopo l'altro. Gli esempi classici sono i files
di batch del DOS, le shell di Unix (sh, csh,
bash, tcsh, ksh, etc.), e veri e propri linguaggi
avanzati come il PERL (Practical Extraction
and Report Language) e Python.
Scripting (2)
Shell:
la prima ad essere scritta fu la Bourne shell
(sh), seguita, ai tempi di Berkeley, dalla C shell
o csh, che integrava alcuni comandi C. La
Bourne-again shell o bash fu la prima
implementazione Open Source, con il meglio di
sh e csh più altre funzioni come il
completamento automatico dei comandi. In
seguito David Korn creò la sua ksh, che
implementava anche delle funzioni. La zsh è
una ksh con controllo ortografico.
PERL:
Scripting (3)
Fu creato come una sorta di shell,
particolarmente adatta al trattamento di files di
testo per estrarne e modificarne il contenuto
etc. Questo fatto, insieme alla sua modularità e
potenza, ne ha determinato l'esplosione.
Attualmente esistono moduli (>2500) per ogni
tipo di funzione (anche per sviluppo web,
gestione e-mail etc.) raccolte in una collezione
chiamata CPAN (Comprehensive Perl Archive
Network) http://www.cpan.org/
Database
I linguaggi orientati
al database sono quelli
che consentono di intervenire appunto su basi
di dati per inserire, modificare, estrarre i dati
secondo schemi predefiniti etc. Il più famoso
linguaggio di questo tipo, creato negli anni '70
da IBM, all'inizio solo per l'interrogazione, è
SQL (Structured Query Language). È ormai
uno standard, e tutti i moderni database sono in
grado di interagire con i comandi SQL, a
partire da Microsoft SQL ai DB Open Source
(MySQL, PostgreSQL) fino ai “mostri” DB2 ed
Oracle.
Sviluppo web (1)
I linguaggi di sviluppo web permettono di
generare ipertesti, cioè files di testo con
incorporati i comandi che, interpretati dal client
o browser, permetteranno di formattare la
pagina nel modo voluto presentandola sullo
schermo dell'utente. Esistono linguaggi per la
generazione di pagine statiche (HTML) e
dinamiche (PHP, ASP, Java) nelle quali il
contenuto delle pagine dipende anche da alcune
variabili e dall'input dell'utente.
Il primo linguaggio per le pagine web fu
Sviluppo
web
(2)
l'HTML (HyperText Markup Language), nato
come standard presso il W3 consortium. Un
comando HTML o tag ha la forma
<b>testo in grassetto</b> -> testo in
grassetto
Pur ricco di caratteristiche ed espanso nel
tempo con comandi per la formattazione delle
pagine ed i fogli di stile (CSS), si rivelò presto
insufficiente per alcune applicazioni moderne.
Ogni produttore di browser creò i propri tag
supplementari,
annullando
la
Sviluppo
web
(3)
Partì quindi lo sviluppo di XML (eXtensible
Markup Language), erede di SGML (Standard
Generalized Markup Language), uno standard
per la documentazione elettronica con il quale
lo stesso HTML era stato creato. Quindi HTML
è usato solo per formattare i dati, mentre XML
è complementare ad esso e serve a creare
linguaggi di markup definendo i relativi tag, e
delegando la formattazione ai files di stile XSL.
Esempi di linguaggi sono MML (matematica),
CML (chimica).
Sviluppo
web (4)
La possibilità
di far eseguire
programmi al
client per ottenere effetti di vario tipo (es.: un
bottone che cambia colore quando il mouse lo
attraversa) fu implementata con Java e
Javascript. Java è un linguaggio di
programmazione potente, orientato agli
oggetti, ed indipendente dalla piattaforma (lo
stesso programma gira senza modifiche su
qualsiasi computer) inventato dalla Sun e
presto assurto a standard. Per ottenere questo
risultato è stato creato come ibrido
Sviluppo web (5)
Il programma viene preprocessato e trasformato
in un file binario (applet) non nel linguaggio
macchina del processore, ma in quello
(bytecode) della Java Virtual Machine (JVM),
una macchina virtuale della quale esiste
un'implementazione per ogni piattaforma. La
JVM interpreta il bytecode e lo esegue. Il
browser riceve in ogni caso un codice binario,
la cui sintassi non può essere visualizzata
guardando la sorgente della pagina web.
Sviluppo web (6)
I Javascript, sviluppati da Netscape, sono
invece degli script inseriti nelle pagine web,
così come avviene per i tag HTML, che
vengono interpretati ed eseguiti da un modulo
apposito del browser, e costituiscono un
“parente povero” del linguaggio Java. Quindi è
possibile vedere i programmi Javascript nella
sorgente della pagina. I Javascript creano noti
problemi di sicurezza perché “girano” a livello
di s.o., laddove gli applet Java sono invece
confinati all'interno della virtual machine.
Sviluppo web (7)
L'approccio opposto è invece costituito dalla
possibilità di eseguire codice sul server, per
generare delle pagine dinamiche, che si
adattano cioè all'input fornito dall'utente (es.:
per la consultazione di un database, per
l'autenticazione per accedere a pagine riservate,
etc.). I primi esempi sono stati i CGI (Common
Gateway Interface, molti scritti in Perl) mentre
oggi ci sono altri linguaggi di scripting orientati
al web come ASP (Microsoft) e PHP (Open
Source).
Sviluppo web (8)
In pratica, con ASP e PHP, si inseriscono nelle
pagine dei tag particolari (es.: <? comando ?>
per php, <% comando %> per ASP). Il server
web, nel momento in cui la pagina viene
richiesta, interpreta ed esegue i comandi, e
spedisce al client l'output html risultante (non
potete vedere il codice php nel sorgente della
pagina scaricata...) Si tratta di due linguaggi
potenti, con funzionalità avanzate e moduli per
interfacciarsi con database compatibili SQL.
Sviluppo web (9)
Database supportati da php3
•
•
•
•
•
•
•
•
Adabas D
InterBase
Solid
Dbase
MSQL
SyBase
Empress
SQL Server
•
•
•
•
•
•
•
•
MySQL
Velocis
FilePro
Oracle
Unix dbm
Informix
PostgreSQL
MS Access
Sviluppo web (10)
Queste caratteristiche, oltre alla possibilità di
gestire i più noti protocolli di rete, li rendono
adatti ad applicazioni Web come i negozi online con i loro carrelli virtuali, ma anche le
biblioteche on-line etc. Esistono ormai veri e
propri ambienti di sviluppo come ad es.:
PhpNuke, per la creazione di portali web che
utilizzino questo linguaggio.