La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Software: di sistema, applicativo, linguaggi, licenze d'uso Carlo Ottaviani, ISM-CNR.

Presentazioni simili


Presentazione sul tema: "Software: di sistema, applicativo, linguaggi, licenze d'uso Carlo Ottaviani, ISM-CNR."— Transcript della presentazione:

1 Software: di sistema, applicativo, linguaggi, licenze d'uso Carlo Ottaviani, ISM-CNR

2 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$)?

3 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.

4 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.

5 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.

6 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.C:\ I driver sono spesso moduli caricabili dinamicamente dal kernel.

7 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.

8 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 PC- IBM (1981) con processori 8088 (8bit) e 8086 (16 bit); il DOS è arrivato fino alla versione 6.22.

9 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.

10 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, . 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.

11 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à.

12 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

13 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

14 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.

15 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.

16 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)

17 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 è real- time se non in piccola parte.

18 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.

19 *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).

20 *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.

21 *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.

22 *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

23 *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

24 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 GNU- Linux) 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.

25 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

26 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 ). 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

27 Linux (3) Le distribuzioni più famose sono: 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).

28 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...

29 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.

30 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...

31 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.

32 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.

33 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

34 Sistemi proprietari o sistemi liberi? L'eterno dilemma! (1) Esistono due partiti ben delineati, 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 più.

35 Sistemi proprietari o sistemi liberi? L'eterno dilemma! (2) I sostenitori dell'open source, invece, 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).

36 Sistemi proprietari o sistemi liberi? L'eterno dilemma! (3) La mia personalissima opinione è 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à.

37 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.

38 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.

39 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.

40 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). Sistemi proprietari o sistemi liberi? L'eterno dilemma! (7)

41 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. Software applicativo (1)

42 La stragrande maggioranza dei programmi 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 (2)

43 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 (3)

44 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. Software applicativo (4)

45 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. Office automation (1)

46 Microsoft Office comprende Word (l'editor di 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 (2)

47 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 (3)

48 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 (4)

49 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 (5)

50 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 (6)

51 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.) Office automation (7)

52 OpenOffice comprende Write, Calc, Impress e 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 Office automation (8)

53 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.

54 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.

55 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.

56 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).

57 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).

58 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.

59 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.

60 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.

61 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.

62 Scripting (3) PERL: 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 etc.) raccolte in una collezione chiamata CPAN (Comprehensive Perl Archive Network)

63 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.

64 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.

65 Sviluppo web (2) Il primo linguaggio per le pagine web fu l'HTML (HyperText Markup Language), nato come standard presso il W3 consortium. Un comando HTML o tag ha la forma testo in grassetto -> 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 standardizzazione del linguaggio.

66 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).

67 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 interprete/compilatore.

68 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.

69 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.

70 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).

71 Sviluppo web (8) In pratica, con ASP e PHP, si inseriscono nelle pagine dei tag particolari (es.: per php, 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.

72 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

73 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 on- line 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.

74


Scaricare ppt "Software: di sistema, applicativo, linguaggi, licenze d'uso Carlo Ottaviani, ISM-CNR."

Presentazioni simili


Annunci Google