:: wikimiki.org ::
| GNU |
GNUGNU è un acronimo ricorsivo e significa GNU is Not Unix (ovvero "GNU non è Unix").
Unix
Il Progetto GNU, lanciato nel 1983 da Richard Stallman, si basa su una gestione particolare dei diritti d'autore sul software, secondo la definizione di software libero (contrapposta a software proprietario).
Scopo ultimo del Progetto GNU è la creazione di un sistema operativo completamente libero, chiamato Sistema GNU; per arrivare a questo risultato, all'interno del progetto vengono creati programmi per coprire ogni necessità informatica: compilatori, lettori multimediali, programmi di crittografia... Nel 2005 il sistema non è ancora stato sviluppato completamente (il kernel HURD non è ancora pronto per poter essere utilizzato), ma grazie al lavoro di Linus Torvalds è possibile usare il Sistema GNU con il kernel Linux, ovvero il sistema GNU Linux.
Attualmente esistono delle alternative al kernel Linux, fra cui Darwin che è anche alla base di Mac OS X, ma nessuna è diffusa come il kernel Linux.
Fulcro di tutta l'attività del Progetto GNU è la licenza chiamata GNU General Public License (GNU GPL), che sancisce e protegge le libertà fondamentali che, secondo Stallman, permettono l'uso e lo sviluppo collettivo e naturale del software. Un'altra licenza, la GNU Free Documentation License (GNU FDL), è stata scritta per coprire la documentazione, ed è usata anche dal progetto Wikipedia. Per poter gestire alcuni casi, ad esempio lo sviluppo di librerie, il Progetto GNU ha creato anche la GNU Lesser General Public License (GNU LGPL), che permette di integrare software libero all'interno di software proprietario, specialmente per ragioni di compatibilità e portabilità.
Software GNU più diffuso
- bash (bourne again shell): la riga di comando del sistema GNU. Il suo scopo è consentire l'esecuzione dei software.
- gcc (GNU Compiler Collection): è il compilatore software più diffuso; supporta numerosi linguaggi di programmazione (tra cui il C e il C++)
- gdb (GNU debugger): ottimo software per effettuare il controllo di flusso su un programma al fine di trovare bug o anomalie implementative
- emacs (editor macros): editor testuale estensibile tramite macro scritte in linguaggio lisp
- fileutils e coreutils: sono dei pacchetti che contengono i software per riga di comando più diffusi, atti a compiere operazioni basilari come copia di file, creazione e scrittura di file, creazione di collegamenti ecc.
- GNOME: desktop environment (ambiente grafico) dotato di un'interfaccia estremamente intuitiva e personalizzabile.
Voci correlate
- sistema GNU, GNU/Linux
- GNU General Public License
- GNU Free Documentation License
- GNU Lesser General Public License
- Richard Stallman, Free Software Foundation
- Linus Torvalds, Open source, kernel Linux
- Software Libero, Software proprietario
- copyright, copyleft
Collegamenti esterni
- [http://www.gnu.org/home.it.html Sito ufficiale GNU] al cui interno è possibile trovare [http://www.gnu.org/philosophy/philosophy.it.html molti articoli sul progetto] e un [http://www.gnu.org/directory/ archivio di programmi] che sono Software Libero
- [http://www.stallman.org/ Sito di Richard Stallman].
Categoria:Acronimi
categoria:Diritti d'autore
Categoria:Software libero
ja:GNU
ko:GNU
ms:GNU
simple:GNU
th:กนู
Acronimo ricorsivoL'acronimo ricorsivo è un particolare tipo di acronimo nel quale una delle lettere che lo compongono (solitamente la prima) è l'iniziale della parola che costituisce l'acronimo stesso.
Tale tipo di acronimo è ampiamente diffuso nell'ambito degli hacker, molti cui programmi utilizzano nomi di questo tipo.
Alcuni acronimi ricorsivi possono essere individuati nei termini:
- GNU significa "Gnu's Not Unix"
- PHP significa "PHP: Hypertext Preprocessor"
- Wine significa "Wine is not an emulator"
Esistono anche acronimi mutualmente ricorsivi, come HURD: "HIRD of Unix-Replacing Daemons", dove HIRD significa "HURD of Interfaces Representing Depth".
Categoria:Linguistica
als:Rekursives Akronym
th:คำย่อแบบกล่าวซ้ำ
Richard Stallman
Richard Matthew Stallman (nato il 16 marzo 1953 a Manhattan, New York) è un noto informatico statunitense ed uno dei padri del concetto del copyleft.
Figlio di un veterano della seconda guerra mondiale (Daniel Stallman) e di un'insegnante (Alice Lippman), si laureò ad Harvard nel 1974 con un Bachelor of Arts in fisica.
Durante gli anni dell'università ha lavorato nel laboratorio di intelligenza artificiale del MIT, lavorando allo sviluppo di sistemi operativi. È in questo contesto che, nel 1975, ha scritto Emacs, il suo editor di testi estensibile.
Nel 1983 Stallman iniziò a lavorare al progetto GNU per dedicarvisi a tempo pieno ed evitare influenze da parte del MIT; nel gennaio del 1984 abbandona però il progetto, elaborando l'anno seguente il Manifesto GNU e fondando la Free Software Foundation.
Nel 1989 ideò il concetto di copyleft.
I suoi hobby includono lo studio delle danze popolari internazionali, il volare, il cucinare, suonare il flauto dolce, la fisica, la science fiction fandom e, naturalmente, la programmazione informatica.
Il suo nickname è RMS e i suoi software più conosciuti sono:
- Emacs - Editor MACroS
- GCC - GNU Compiler Collection
- GDB - GNU DeBugger
GDB]
Nel 2002 è stata pubblicata una sua Biografia per opera di Sam Williams: Free as in Freedom (in italiano: Codice libero. Free as in Freedom 2003), licenziata secondo la GNU Free Documentation License.
Stallman ha ricevuto numerosi riconoscimenti per il lavoro svolto, tra cui:
- 2003: laurea onoraria dalla "Vrije Universiteit Brussel"
- 2002: "National Academy of Engineering membership"
- 2001: laurea onoraria dalla Università di Glasgow
- 2001: laurea onoraria dalla University of California, Berkeley
- 2001: "The Takeda Techno-Entrepreneurship Award"
- 1999: "Yuri Rubinski Memorial Award"
- 1998: "Electronic Frontier Foundation's Pioneer award"
- 1996: laurea onoraria dal "Sweden's Royal Institute of Technology"
- 1991: "The Association for Computing Machinery's Grace Hopper Award" per il suo lavoro sull'Emacs originale
- 1990: "MacArthur Fellowship"
Voci correlate
- GNU
- Free Software Foundation
- copyleft
- GNU General Public License
- GNU Lesser General Public License
- GNU Free Documentation License
- Hacker
Collegamenti esterni
- http://www.gnu.org/home.it.html - Progetto GNU
- http://www.stallman.org/ - Homepage di Richard M. Stallman
- http://www.apogeonline.com/ - contiene testo della biografia in italiano
- http://www.faifzilla.org/toc.html - contiene la biografia in inglese
- http://biografieonline.it/biografia.htm?BioID=1093 - un'altra biografia in italiano
- http://www.apogeonline.com/ebooks/2003/90045/CodiceLibero/ la biografia in italiano (Traduzione)
- [http://www.repubblica.it/2004/f/sezioni/scienza_e_tecnologia/stall/stall/stall.html Intervista al fondatore del Free Software Movement - La Repubblica.it]
Stallman, Richard
Stallman, Richard
ja:リチャード・ストールマン
ko:리처드 스톨만
simple:Richard Stallman
th:ริชาร์ด สตอลแมน
zh-min-nan:Richard Stallman
SoftwareIl termine software (usato in ambito informatico) può indicare l'insieme dei programmi (o uno solo di questi) in grado di funzionare su un computer.
Classificazione
All'interno del software si possono distinguere alcune grandi categorie:
- i sistemi operativi
- i driver
- i programmi applicativi (cioè tutti quei software che vengono utilizzati per il lavoro quotidiano: dai programmi per l'ufficio, ai videogiochi)
Origine
Il termine software prende origine durante la seconda guerra mondiale. Gli inglesi erano impegnati nella decrittazione dei codici di Enigma, di cui già conoscevano la meccanica interna (detta hardware, nel senso di ferraglia) grazie ai servizi segreti polacchi. La prima versione aveva tre rotori per mescolare le lettere. Dopo il 1941, all'Enigma della Marina tedesca venne aggiunto un rotore, e il team di criptanalisti inglesi, capitanati da Alan Turing, si dovette interessare non più alla sua struttura fisica, ma alle posizioni in cui venivano utilizzati i rotori della nuova Enigma. Poiché queste istruzioni erano scritte su pagine solubili nell'acqua, per poter essere più facilmente distrutte, da ciò, e per contrasto con hardware, furono chiamate software.
Il senso moderno del termine deriva dalla traslazione del senso alle istruzioni date ai computer ed è stata utilizzata per la prima volta in questo senso nel 1957 da John W. Tukey, noto statistico della Princeton University.
Nella storia dell'evoluzione del software bisogna analizzare lo sviluppo dell'hardware. Come evidenziato dalla seconda legge di Moore, oltre ai costi, una minaccia più seria alla velocità di elaborazione, viene probabilmente dall'area software. Infatti ciò che conta per un'utente non è tanto la velocità di elaborazione del processore, quanto la velocità effettiva di processazione, calcolata in base al tempo che occorre alla CPU per eseguire le diverse operazioni, come la videoscrittura di un testo o l'output di un foglio elettronico.
Nathan Myhrvold, direttore dell'Advanced Technology Group della Microsoft, ha effettuato uno studio sui prodotti Microsoft calcolando le linee di codifica per le successive release dello stesso software:
Basic: 4.000 linee di codice nel 1975 a 500.000 nel 1995
Word: 27.000 linee di codice nel 1982 a 2.000.000 nel 2002
Myhrvold traccia un parallelismo con la legge di Moore: "dunque abbiamo aumentato la dimensione e la complessità del software ancora più rapidamente di quanto non prevedeva la legge di Moore". In effetti, è proprio per questo motivo che esiste un mercato per i processori più veloci; "gli utenti del software hanno sempre consumato la nuova capacità di elaborazione ad una velocità uguale o superiore a quella con cui i produttori di chip la mettevano a disposizione" (Stewart Brand, 1995).
In ogni caso, sia l'osservazione di Brand, sia il ragionamento di Myhrvold, non tengono conto delle caratteristiche aggiuntive consentite dalle linee di codifica addizionali e quindi enfatizzano l'impatto negativo del boom del software.
Ciclo Wintel
"La maggior potenza di ogni generazione di chip Intel, viene da una nuova generazione di applicazioni basate su Windows, dando origine a una rinnovata domanda di chip ancora più potenti, necessari per far girare nuovi software a loro volta ancora più esigenti in termini di potenza"
Il "Ciclo WINTEL", che prende il nome dai colossi di riferimento, (processori Intel e sistemi operativi Windows - Microsoft), sta a indicare per l'appunto che la complessità di nuovi software (in grado di funzionare in ambiente Windows) esaurisce tutta la capacità computazionale messa a disposizione dai nuovi processori (la cui casa produttrice di spicco è Intel). Schaller nel 1996 disse a proposito del ciclo Wintel: "every time Andy Grove makes a faster chip, Bill uses all of it".
Osservazione di Nathan Myhrvold
Nathan Myhrvold, ex Top executive di Microsoft, disse: "il software è come un gas che si espande per riempire il contenitore che lo contiene". In effetti l'evoluzione tecnologica del software ha seguito questa sua legge:
- Anni '80: elaborazione di testi eseguita da programmi di poche decine di kilobyte di memoria (e.g. troff);
- Oggi: word processor decine di megabyte (e.g. word) .
La continua aggiunta di nuove funzionalità al software esistente giustifica la costante richiesta di processori più veloci, memorie più grandi e più ampie capacità di I/O.
Infatti, anche le altre tecnologie si sono evolute di pari passo:
- i dischi rigidi da 10 MB (1982) a 60 GB (2003);
- i modem analogici da 300 bit/sec a 56 kbit/sec.
Organizzazione interna
Un software viene normalmente realizzato utilizzando uno o più linguaggi di programmazione. Se il progetto diventa complesso, è opportuno dividere il programma in uno o più moduli, che possono essere così affidati a diversi programmatori, manutenuti più semplicemente e riusati in altri progetti.
Una fase detta di compilazione traduce ogni file di codice sorgente in un file oggetto contenente il programma in linguaggio macchina adeguato all'architettura hardware di destinazione. Infine tutti i file oggetto attraversano una fase di linking per realizzare il prodotto finale: il file eseguibile.
Alcuni software non vengono compilati in quanto le istruzioni contenute nel codice sorgente vengono subito eseguite da un software detto interprete.
La gestione del processo di sviluppo è caratterizzato da un ciclo di vita codificato nell'ambito dell'Ingegneria del Software (Software Engineering, nella dizione anglosassone) quali
- Ciclo di vita classico o water-fall (cascata)
- Ciclo di vita object oriented o a spirale
Qualità del software
La realizzazione del software è un'attività complessa che richiede molte fasi.
Per questo motivo può essere associato ad un prodotto ingegneristico ma se ne differenzia soprattutto per alcune caratteristiche:
- è molto malleabile, tale caratteristica porta a pensare che modificare il software sia banale, ma non è proprio così;
- è un prodotto human intensive, cioè, richiede un grosso sforzo in risorse umane perché si concentra soprattutto sulla progettazione e sull'implementazione.
Esistono molte qualità che si richiede al software che sono descritte più approfonditamente nella sezione corrispondente.
Licenza di distribuzione
Le licenze di distribuzione del software oggi sono tante e non solo per ambito software (54 circa), però quelle effettivamente usate sono poche. Per l’ 89%, per esempio, si trattano di GPL, LGPL o BSD vecchia licenza storia di Unix che pone come unica condizione una nota nel copyright che si riferisca all’Università della California, tornata in uso dall’avvento di Linux.
Il più grande difetto nei sistemi operativi liberi non è nel software, è la mancanza di buoni manuali liberi da poter includere in questi sistemi. Molti dei programmi più importanti non hanno un manuale completo. La documentazione è una parte essenziale di qualunque pacchetto di software; quando un pacchetto importante di software libero è fornito senza un manuale libero si ha una grossa lacuna. A tutt'oggi abbiamo molte di queste lacune.
Nasce in seguito anche l’OPEN CONTENT che ha come idea quella di trasferire le licenze su opere diverse dal software, a partire dalla documentazione dello stesso, opere come l’arte, la musica, i videogiochi. Esiste anche una licenza specifica per la documentazione accademica e universitaria.
Creative commons
Lawrence Lessig, avvocato e insegnante, ha cercato una soluzione legale alla crisi del sistema di copyright negli Stati Uniti e dice che la propensione all’acquisto sia più simile, per gli artefatti digitali, al modello del telefono che a quello dell’editoria musicale. Lessig fonda la non-profit CREATIVE COMMONS, in cui l’intento è permettere agli autori il campionamento ai fruitori. Ottenere una licenza è semplice: i diritti che vengono concessi sono scelti in maniera modulare, tramite un modulo del sito Web. Sorge una critica: il successo di i-Tunes Store mostra che il sistema classico del copyright può funzionare anche con gli artefatti digitali.
Licenza d'uso
Un documento che accompagna la maggior parte del software, e specifica i diritti e i doveri di chi lo riceve. Esistono licenze libere e licenze proprietarie. Tutte le licenze d'uso traggono il loro valore legale dalle norme sul diritto d'autore (copyright in inglese).
software libero (free software, in inglese)
Ogni tipo di software la cui licenza d'uso consenta la libera copia, modifica e redistribuzione gratuita o a pagamento del programma. Il termine è stato definito da Richard Stallman della FSF nel 1985, e pone l'accento sulla libertà dell'utente.
open source software
Dal punto di vista pratico è la stessa cosa di software libero. Il termine è stato definito nel 1998 dalla OSI per rendere il concetto più accettabile al mondo degli affari, ponendo l'accento sui vantaggi pratici ed eliminando tutti i riferimenti alla parola libertà.
GNU GPL
La licenza d'uso libera più diffusa, quella normalmente usata per i programmi del progetto GNU. I programmi che la usano sono riconosciuti sia software libero dalla FSF che open source software dalla OSI. È persistente, cioè impone che la licenza per le copie modificate sia la GPL stessa o compatibile.
BSD
La licenza d'uso resa famosa dai sistemi operativi BSD, con cui nacque lo stack TCP/IP. I programmi che la usano sono riconosciuti sia software libero dalla FSF che open source software dalla OSI. È non persistente, cioè consente l'uso di qualunque altra licenza per distribuire copie modificate.
permesso d'autore (copyleft, in inglese)
È il diritto d'autore (in inglese copyright) alla rovescia. Uno slogan che suggerisce come si possano sfruttare le leggi sul diritto d'autore per dare libertà agli utenti di un programma, piuttosto che toglierla. Si dicono soggette a copyleft le licenze libere persistenti, come la GNU GPL
Voci correlate
- Firmware
- Hardware
- Freeware
- Shareware
Collegamenti esterni
- [http://www.sic.org/2004nominees.asp Shareware Industry Conference]
categoria:Software
categoria:Innovazione tecnologica
ja:ソフトウェア
ko:컴퓨터 소프트웨어
simple:Software
th:ซอฟต์แวร์
Software proprietario
Con il termine software proprietario si indica quel software che non è possibile riprodurre, modificare, distribuire o utilizzare senza un permesso accordato dal proprietario dei diritti su di esso. Il termine Proprietario si riferisce quindi a quel software "di proprietà" esclusiva ed intellettuale di privati cittadini o di entità inprenditoriali o aziendali. Questa definizione si contrappone a quella di software libero.
Tipico esempio di software proprietario, è il sistema operativo Windows e i suoi programmi di lavoro come Office, Word ecc.
Categoria:Software
Categoria:Diritto industriale
th:Proprietary software
Sistema GNUIl sistema GNU è un sistema operativo libero di tipo Unix, distribuito con licenza GNU General Public License.
Il sistema è stato ideato da Richard Stallman nell'intento di creare un sistema operativo completamente libero. Include tutto il software GNU e molti altri pacchetti (ad esempio l'X Window System e TeX, che non sono software GNU).
Il sistema è stato realizzato per essere compatibile con Unix per due ragioni fondamentali:
- negli anni 80 Unix era il sistema operativo più stabile ed utilizzato;
- rendere più semplice agli utenti Unix il passaggio al Sistema GNU.
È possibile trovare componenti del Sistema GNU installati su sistemi Unix, al posto dei software originali, in quanto molti dei programmi scritti per il Sistema GNU si sono dimostrati di qualità superiore rispetto alle versioni equivaleti per Unix. Inoltre, molti programmi GNU sono stati portati su sistemi Windows, Mac OS X e in misura minore anche su AmigaOS.
Storia
Richard Stallman cominciò la sua carriera al MIT nel 1971, in un periodo in cui il Software libero veniva utilizzato da molte compagnie private e i programmatori non erano quasi mai soggetti a un contratto di non divulgazione. Già nel 1980 il Software libero era stato sostituito dal software proprietario nella quasi totalità dei software in circolazione. Stallman, cominciando a confrontarsi con le conseguenze del cambiamento, si rende conto che l'avvento del software proprietario ha l'effetto di impedire ai programmmatori di collaborare tra loro.
Nel 1983 Richard Stallman lascia il suo lavoro al MIT e comincia a sviluppare il sistema con il preciso intento di mantenere attivo l'uso del Software libero. L'annuncio originale (27 settembre) è seguito dal rilascio della prima versione del Manifesto GNU. Lo sviluppo del sistema inizia nel 1984.
Nel 1990 il Sistema GNU aveva al suo interno un editor di testi estensibile (Emacs), un compilatore con funzioni di ottimizzazione e la maggior parte delle librerie e delle utility di un sistema Unix standard. Era praticamente un sistema completo, mancava però il componente centrale, il kernel, il cui sviluppo era cominciato nel 1986, prima sulla base di TRIX (un kernel sviluppato al MIT) e successivamente (1988) sulla base di Mach (sviluppato alla CMU).
Lo sviluppo del kernel GNU, chiamato HURD, è tuttora (2003) in corso. Ma nel 1991 Linus Torvalds scrisse il kernel Linux e lo distribuì sotto GNU GPL; grazie all'interesse di molti programmatori coordinati dallo stesso Torvalds attraverso Internet, nel 1992 il Sistema GNU e il kernel Linux vennero combinati in un unico sistema, chiamato GNU Linux, distribuito con licenza GNU GPL.
Voci correlate
- GNU, Free Software Foundation
- Kernel Linux, HURD
- Richard Stallman, Software Libero, GNU Linux
- Linus Torvalds, Open source
- Unix, Windows, Mac OS X
GNU
Compilatore
In informatica, un compilatore è un programma che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto). Questo processo di traduzione si chiama compilazione.
L'attività inversa, passare dal codice oggetto al codice sorgente è chiamata decompilazione ed è effettuata per mezzo di un decompilatore.
Se tutti i compilatori aderiscono esattamente alla specifica del linguaggio, lo stesso programma potrà essere compilato senza modifiche da ciascun compilatore, producendo risultati semanticamente uguali, ovvero programmi che producono lo stesso risultato se sottoposti agli stessi dati di ingresso. Nella realtà, molti compilatori implementano il linguaggio in modo incompleto, o aggiungono estensioni proprietarie, creando in effetti dei dialetti di ciascun linguaggio.
Per i linguaggi che adottano uno standard nella decorazione dei simboli, il codice oggetto generato da compilatori differenti può essere linkato assieme in un unico eseguibile.
Cenni storici
Negli anni 50 sono stati sviluppati diversi compilatori sperimentali (vedi ad esempio, i primi lavori di Grace Hopper sul linguaggio A-0), ma nel 1957 il team FORTRAN presso l'IBM, guidato da John Backus, fu accreditato come primo inventore di un compilatore completo.
Il COBOL fu uno dei primi linguaggi nel 1960 ad essere compilato su più architteture [http://www.interesting-people.org/archives/interesting-people/199706/msg00011.html].
L'idea della compilazione prese velocemente piede e molti dei principi di design dei compilatori vennero sviluppati negli anni 60.
Un compilatore è esso stesso un programma scritto in un qualche linguaggio. I primi compilatori venivano scritti in Assembler. Il primo compilatore auto-compilato, capace cioè di compilare il suo stesso codice, fu creato per il linguaggio Lisp da Hart e Levin presso il MIT nel 1962 [http://www.ai.mit.edu/research/publications/browse/0000browse.shtml].
L'uso di linguaggio ad alto livello per scrivere i compilatori ebbe una spinta nei primi anni '70, quando i compilatori Pascal e C furono scritti negli stessi linguaggi. Creare un compilatore autocompilante introduce un problema di bootstrapping, il primo compilatore di quel linguaggio deve essere per forza scritto in un altro linguaggio o compilato facendo girare il compilatore come un interprete (come fecero Hart e Levin con il loro compilatore Lisp).
Schema di funzionamento
Il compilatore prende in ingresso un programma, il codice sorgente, su cui esegue una serie di operazioni in modo da ottenere, in assenza di errori, il codice oggetto.
In generale i compilatori sono in grado di riconoscere alcune classi di errori presenti nel programma, e in alcuni casi di suggerire in che modo correggerli.
I compilatori attuali dividono l'operazione di compilazione in due stadi principali il front end e il back-end.
Nello stadio di front end il compilatore traduce il sorgente in un linguaggio intermedio (di solito interno al compilatore); nello stadio di back end avviene la generazione del codice oggetto.
Stadio di front end
Questo stadio si suddivide in più fasi:
- Analisi lessicale (informatica) Attraverso un'analizzatore lessicale, spesso chiamato scanner o lexer, il compilatore divide il codice sorgente in tanti pezzetti chiamati token. I token sono gli elementi minimi (non ulteriormente divisibili) di un linguaggio, ad esempio parole chiave (for, while), nomi di variabili (pippo), operatori (+, -, <<).
- Analisi sintattica L'analisi sintattica prende in ingresso la sequenza di token generata nella fase precedente ed esegue il controllo sintattico. Il controllo sintattico è effettuato attraverso un grammatica. Il risultato di questa fase è un albero di sintassi.
- Analisi semantica L'analisi semantica si occupa di controllare il significato delle istruzioni presenti nel codice in ingresso. Controlli tipici di questa fase sono il type checking, ovvero il controllo di tipo, controllare che gli identificatori siano stati dichiarati prima di essere usati e cosi via. Come supporto a questa fase viene creata una tabella dei simboli (symbol table) che contiene informazioni su tutti gli elementi simbolici incontrati quali nome, scope, tipo (se presente) etc. Il risultato di questa fase è l'albero di sintassi astratta (AST).
- Generazione del codice intermedio: Dall'albero di sintassi viene generato il codice intermedio.
Stadio di back end
Anche lo stadio di back end si divide in più fasi:
- Ottimizzazione del codice intermedio: in questa fase avvengono delle ottimizzazione sul codice intermedio.
- Generazione del codice target: in questa fase viene generato il codice nella forma del linguaggio target. Spesso il linguaggio target è un linguaggio macchina.
Schema riassuntivo
Riferimenti
- Compilers: Principles, Techniques and Tools di Alfred V. Aho, Ravi Sethi, e Jeffrey D. Ullman (ISBN 0201100886) è considerato il testo di riferimento sui principi della compilazione e sulle tecniche citate in precedenza. (Il libro è spesso chiamato Dragon Book (il libro del dragone) a causa dell'immagine della copertina che raffigura il Cavaliere della Programmazione che lotta con il Dragone del design dei compilatori.)
[http://www.aw.com/catalog/academic/product/0,4096,0201100886,00.html Collegamento esteso all'editore]
Voci correlate
- Preprocessing
- Preprocessore
- Linker
Collegamenti esterni
- [http://www.gnu.org/software/flex Un generatore di analizzatori lessicali]
- [http://www.gnu.org/software/bison Un generatore di analizzatori sintattici]
Categoria:Programmazione
Categoria:Linguaggi formali
ja:コンパイラ
ko:컴파일러
simple:Compiler
th:ตัวแปลโปรแกรม
Crittografia(Nota: per la crittografia come gioco dell'enigmistica vedi voce a parte crittografia (gioco))
----
La crittografia tratta delle "scritture segrete" (significato etimologico della parola) ovvero i metodi per rendere un messaggio "offuscato" in modo da non essere comprensibile a persone non autorizzate.
La parola crittografia deriva dalla parola greca kryptós che significa nascosto e dalla parola greca gráphein che significa scrivere.
La crittografia è la controparte della crittanalisi ed assieme formano la crittologia.
Approcci storici alla crittografia
La necessità di nascondere messaggi strategici da occhi nemici è antica quanto l'uomo: si pensi che la prima traccia storica di uso della crittografia risale a Gaio Giulio Cesare: a lui si attribuisce l'uso (se non addirittura l'invenzione) del cifrario di Cesare, un sistema crittografico oggi ridicolo, ma emblema della nascita di un concetto totalmente nuovo e ottimo per comprendere le idee basilari della crittografia e i primi attacchi della sua "avversaria": la crittanalisi.
A partire dal cifrario di Cesare, i sistemi via via escogitati sono stati vari e man mano più evoluti: da questo elementare cifrario si è passati al più generalizzato cifrario a scorrimento, poi ancora al cifrario monoalfabetico, che a sua volta ha gettato le basi per i cifrari polialfabetici, tra cui limbattibile cifrario di Vigénère, come almeno era considerato quando Vigenere lo ideò (unendo molte idee che erano già nell'aria da tempo), visto che nel 1863 il colonnello prussiano Friedrich Kasiski pubblicò un metodo per "forzarlo" (chiamato metodo Kasiski).
La crittografia tradizionale moderna
Nel 1918 Gilbert Vernam perfezionò il metodo di Vigenere proponendo l'idea di usare chiavi lunghe almeno quanto il messaggio. Successivamente Claude Shannon, padre della Teoria dell'informazione, dimostrò che questo è l'unico metodo crittografico totalmente sicuro possibile.
Con il possesso di un sistema crittografico perfetto, la battaglia teorica tra crittografia e crittanalisi si è risolta con una vittoria della prima sulla seconda. Ipotizzando di voler far uso di questa insuperabile protezione, restano però aperti molti problemi di ordine pratico: bisogna infatti soddisfare gli stringenti requisiti del cifrario di Vernam: chiave lunga quanto il messaggio e mai più riutilizzabile. Purtuttavia, si hanno notizie di utilizzi di questo cifrario in ambiente militare (comunicazione con le spie: si veda a proposito One Time Pad) o per la protezione delle comunicazioni del telefono rosso tra Washington e Mosca durante la Guerra fredda. Anche il cifrario trovato nel 1967 sul corpo di Che Guevara è una incarnazione del cifrario di Vernam.
L'attuale ricerca crittografica, avendo risolto il problema teorico della garanzia della sicurezza, si dedica al superamento dei forti limiti d'uso anzidetti. Si cercano metodi più "comodi" ma ciononostante "estremamente sicuri" (non lo saranno mai perfettamente, ma si può renderli semper più sicuri) che, possibilmente, utilizzino chiavi corte e riutilizzabili senza inficiare automaticamente la loro utilità.
Fino a pochi anni fa la crittografia era tutta "simmetrica": ovvero la chiave utilizzata per proteggere il messaggio era la stessa che serviva per poi renderlo nuovamente leggibile.
La crittografia simmetrica ha prodotto dei sistemi crittografici di tutto rispetto (ultimo tra tutti il cifrario Rijndael, scelto per il nuovo standard AES per essere utilizzato nel prossimo ventennio, pensionando l'ormai datato DES).
La crittografia asimmetrica
La vera novità del secolo scorso è l'invenzione della crittografia asimmetrica che utilizza chiavi diverse per cifrare e per decifrare un messaggio, facilitando incredibilmente il compito di distribuzione delle chiavi.
Collegamenti esterni
- [http://www.sicurezzainformatica.it/archives/crittografia/ SicurezzaInformatica.it - Categoria Crittografia]
Categoria:Scrittura
Categoria:Crittologia
ja:暗号理論
ko:암호학
Hurd
The HURD (in italiano si dovrebbe dire lo HURD) è un progetto GNU che ha l'obbiettivo di creare un rimpiazzo per un kernel UNIX. L'HURD è un insieme di server che interagiscono tra loro utilizzando un microkernel Mach. Sono proprio questi server che implementano il file system, i protocolli di rete, i permessi degli utenti, e tutti gli altri servizi che vengono offerti da un kernel classico.
HURD è un acronimo doppiamente ricorsivo che significa Hird of Unix-Replacing Daemons (Hird di demoni che sostituiscono Unix). E poi "Hird" sta per Hurd of Interfaces Representing Depth (Hurd di interfacce che rappresentano la profondità).
Attualmente lo stato dello HURD è altamente sperimentale, esiste solamente una distribuzione Debian basata su questo kernel.
Collegamenti esterni
- [http://www.gnu.org/software/hurd/hurd.it.html GNU Hurd]
- [http://www.debian.org/ports/hurd/index.it.html Debian HURD]
- [http://www.hurd.it Hurd-It]
Categoria:Sistemi POSIX
ja:Hurd
Kernel Linux
Il kernel Linux è un software libero distribuito con licenza GNU General Public License; è stato creato nel 1991 da Linus Torvalds. Integrato con il Sistema GNU ha dato vita a GNU/Linux.
Il kernel è il "cuore" di un sistema operativo (nucleo) e fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della memoria, delle risorse del sistema e delle periferiche, assegnandole di volta in volta ai processi in esecuzione. La controparte del kernel è la shell, ovvero l'interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate (system call) e non possono accedere direttamente all'hardware. Il kernel si occupa quindi di gestire il tempo processore, le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità(Scheduler).
L'architettura scelta da Torvalds per il kernel (ovvero una struttura monolitica, considerata da alcuni obsoleta a differenza della più moderna architettura a microkernel) fu causa di un dibattito molto acceso con Andrew S. Tanenbaum nel 1992 sul newsgroup comp.os.minix, che è visibile [http://tinyurl.com/2uj9u qui].
Come ogni progetto che sia software libero, anche il kernel Linux è in continua evoluzione e le nuove release sono reperibili sul sito http://www.kernel.org . La dimensione del kernel Linux cresce in maniera esponenziale, aggiungendo nuovi moduli, nuovo hardware supportato e così via.
Linux è un kernel che supporta il multitasking ed è multi utente. Ciò permette che diversi utenti (con privilegi differenziati) possano eseguire sullo stesso sistema diversi processi software in simultanea. Attualmente linux supporta gran parte dell'hardware disponibile per PC e supporta un numero enorme di architetture (tra cui SPARC, PowerPC e le più moderne CPU a 64 bit).
Dato che il codice sorgente di Linux è disponibile a tutti, è ampiamente personalizzabile, al punto da rendere possibile, in fase di compilazione, l'esclusione di codice non strettamente indispensabile. La flessibilità di questo kernel lo rende adatto a tutte quelle tecnologie embedded emergenti e anche nei centri di calcolo distribuito (cluster beowulf) fino ad essere incorporato in alcuni videoregistratori digitali e nei telefoni cellulari.
Voci correlate
- Linus Torvalds
- GNU Linux
- GNU General Public License
Collegamenti esterni
- [http://www.kernel.org/ Sito ufficiale]
- [http://www.gnu.org/gnu/linux-and-gnu.it.html Linux e GNU]
categoria:Software libero categoria:linux
Categoria:Piattaforme Computer
ja:Linuxカーネル
th:ลินุกซ์ เคอร์เนล
Kernel Linux
Il kernel Linux è un software libero distribuito con licenza GNU General Public License; è stato creato nel 1991 da Linus Torvalds. Integrato con il Sistema GNU ha dato vita a GNU/Linux.
Il kernel è il "cuore" di un sistema operativo (nucleo) e fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della memoria, delle risorse del sistema e delle periferiche, assegnandole di volta in volta ai processi in esecuzione. La controparte del kernel è la shell, ovvero l'interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate (system call) e non possono accedere direttamente all'hardware. Il kernel si occupa quindi di gestire il tempo processore, le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità(Scheduler).
L'architettura scelta da Torvalds per il kernel (ovvero una struttura monolitica, considerata da alcuni obsoleta a differenza della più moderna architettura a microkernel) fu causa di un dibattito molto acceso con Andrew S. Tanenbaum nel 1992 sul newsgroup comp.os.minix, che è visibile [http://tinyurl.com/2uj9u qui].
Come ogni progetto che sia software libero, anche il kernel Linux è in continua evoluzione e le nuove release sono reperibili sul sito http://www.kernel.org . La dimensione del kernel Linux cresce in maniera esponenziale, aggiungendo nuovi moduli, nuovo hardware supportato e così via.
Linux è un kernel che supporta il multitasking ed è multi utente. Ciò permette che diversi utenti (con privilegi differenziati) possano eseguire sullo stesso sistema diversi processi software in simultanea. Attualmente linux supporta gran parte dell'hardware disponibile per PC e supporta un numero enorme di architetture (tra cui SPARC, PowerPC e le più moderne CPU a 64 bit).
Dato che il codice sorgente di Linux è disponibile a tutti, è ampiamente personalizzabile, al punto da rendere possibile, in fase di compilazione, l'esclusione di codice non strettamente indispensabile. La flessibilità di questo kernel lo rende adatto a tutte quelle tecnologie embedded emergenti e anche nei centri di calcolo distribuito (cluster beowulf) fino ad essere incorporato in alcuni videoregistratori digitali e nei telefoni cellulari.
Voci correlate
- Linus Torvalds
- GNU Linux
- GNU General Public License
Collegamenti esterni
- [http://www.kernel.org/ Sito ufficiale]
- [http://www.gnu.org/gnu/linux-and-gnu.it.html Linux e GNU]
categoria:Software libero categoria:linux
Categoria:Piattaforme Computer
ja:Linuxカーネル
th:ลินุกซ์ เคอร์เนล
Mac OS X
Il Mac OS X è l'attuale sistema operativo di Apple Computer per i computer Macintosh, nato nel 2001 per combinare le note caratteristiche dell'interfaccia utente del Mac OS Classic tradizionale con la stabilità e le prestazioni di un potente sistema operativo di derivazione Unix.
Il Mac OS X non è semplicemente la versione 10 del popolare Mac OS nato nel 1984 con il primo computer Macintosh: è stato completamente riscritto ed è di fatto un sistema operativo differente.
Mac OS X è stato creato combinando Darwin, un ambiente open source derivato da Unix (basato sul sistema operativo FreeBSD) e kernel XNU, un kernel basato sul microkernel Mach, con una interfaccia grafica (GUI), chiamata Aqua, sviluppata da Apple Computer. Il sistema operativo ha avuto il suo primo rilascio commerciale nel 2001. È implementato per IBM G3, Motorola G4 e IBM G5; Apple ha rilasciato il codice sorgente del core del sistema con licenza Opensource.
Mac OS X mantiene una retrocompatibilità quasi assoluta con le applicazioni Macintosh anche molto datate grazie alla caratteristica di poter caricare, all'occorrenza, il Mac OS Classic in una macchina virtuale, all'interno di un apposito task.
Esiste una versione di Mac OS X ottimizzata per l'uso sui server. È identico alla versione desktop eccetto per l'inclusione di una serie di programmi atti alla gestione dei diversi servizi di rete inclusi nel sistema operativo. I principali comprendono un server mail, il gestore di reti SMB samba, un server LDAP e un server DNS.
Storia
Verso la metà degli anni Novanta, Apple si trovava a fare i conti con un sistema operativo che aveva raggiunto i suoi limiti strutturali di sviluppo. L'architettura a multitasking cooperativo era oramai una tecnologia sorpassata e quindi nel 1994 decise di avviare il progetto Copland, con lo scopo creare un nuovo sistema operativo moderno e libero dalle limitazioni tecniche del precedente Mac OS. Il progetto fallì nel 1996 per motivazioni tecniche e di politica interna (alcune migliorie di Copland vennero integrate nel Mac OS 8 rilasciato nel 1997). Apple decise quindi di tentare un'altra strada, acquistando un sistema operativo esterno e adattandolo all'architettura Macintosh.
I vertici dell'Apple sondarono il mercato alla ricerca del nuovo sistema operativo e, dopo una travagliata trattativa prima con Be Incorporated e poi con NeXT, alla fine decisero di optare per OpenStep. Acquisirono dunque la NeXT, la compagnia che era stata fondata da Steve Jobs dopo la sua estromissione da Apple del 1986.
Dopo il fallimento del progetto del computer fatto per funzionare in simbiosi col NeXTSTEP, esso venne convertito per molte altre piattaforme durante i primi anni Novanta. Purtroppo non divenne mai popolare per via degli alti costi delle licenze (in particolare le licenze per gli sviluppatori erano molto costose e quindi scoraggiavano la maggior parte dei programmatori). NeXT giustificava l'alto prezzo delle licenze affermando che agli alti costi era legata anche un'alta qualità del software, ma questa giustificazione non convinse il mercato. Successivamente NeXT fece evolvere NeXTSTEP in OpenStep, una tecnologia che separava il livello applicativo da quello della gestione dell'hardware demandandolo a un sistema operativo sottostante; con questa tecnologia si poteva far funzionare un applicativo OpenStep su molte piattaforme con minime modifiche. Durante quegli anni anche altre compagnie software si stavano muovendo nel campo della programmazione a oggetti. In particolare società come IBM, Apple e Microsoft stavano studiando e realizzando nuovi sistemi operativi e i relativi programmi di sviluppo orientati agli oggetti (anche se alcune iniziative fallirono, come ad esempio il progetto Taligent).
I piani di sviluppo originali prevedevano la realizzazione di un nuovo sistema operativo basato sulle librerie OpenStep in cui i programmi scritti per i precedenti Mac OS sarebbero stati eseguiti da un emulatore che li avrebbe separati dal nuovo sistema operativo. Il nuovo sistema operativo aveva il nome in codice di Rhapsody, e doveva essere disponibile per la fine del 1998.
I manager Apple si aspettavano che gli sviluppatori portassero i loro programmi sulla nuova piattaforma basata sulle librerie OpenStep, dato che queste consentivano uno sviluppo più flessibile, elegante e veloce delle applicazioni. La maggior parte degli sviluppatori tuttavia si rifiutò: la piattaforma Macintosh appariva al termine della sua vita e gli sviluppatori non volevano dedicare molto tempo e denaro allo sviluppo di programmi per una piattaforma che stava morendo.
I piani cambiarono radicalmente nel 1999, quando Steve Jobs, durante il World Wide Developer Conference (conferenza degli sviluppatori Macintosh), annunciò l'abbandono del progetto Rhapsody. Al suo posto gli sviluppatori Apple avrebbero realizzato una versione moderna del Mac OS chiamato Mac OS X (X stava per decimo), che avrebbe preso il meglio dei due precedenti sistemi. Da Raphsody sarebbero arrivati il kernel e i servizi principali, l'ambiente POSIX e OpenStep, che avrebbe preso il nuovo nome Cocoa. Per semplificare l'adozione del nuovo sistema da parte degli sviluppatori, sarebbe stato sviluppato Carbon, una riscrittura per il nuovo sistema delle vecchie API del Mac OS. In più alcune tecnologie importanti nate su Mac OS sarebbero state portate nel nuovo sistema (QuickTime, AppleEvents, Applescript, ColorSync ed altro ancora). I cambiamenti annunciati furono accolti con favore dagli sviluppatori.
Durante lo sviluppo di OS X, gli strati più bassi del sistema operativo, composti dal kernel XNU e dallo strato BSD, sono stati riorganizzati e ridistribuiti con una licenza open source, la Apple Public Source License. Il pacchetto completo si chiama Darwin. Darwin fornisce un sistema operativo molto stabile, solido ed efficiente, anche paragonato agli altri sistemi operativi di derivazione Unix, sebbene non sia molto diffuso al di fuori della comunità Macintosh. Un'altra modifica sostanziale rispetto all'OpenStep è l'abbandono del motore grafico basato sul linguaggio PostScript in favore di un motore grafico senza licenze chiamato Quartz. Durante la fase finale di sviluppo il linguaggio Java è diventato uno scottante argomento di discussione e, vista l'attenzione dedicata al linguaggio dagli sviluppatori e dai media, si è cercato di rendere la piattaforma Macintosh lo strumento ideale per lo sviluppo delle applicazioni in Java. Questo lo si è ottenuto includendo nelle API di Cocoa il supporto diretto del linguaggio Java. Originariamente l'unico modo per utilizzare le API OpenStep era tramite il linguaggio di programmazione Objective C, una versione ad oggetti del C evolutasi parallelamente al C++, ma che non ha raggiunto sufficiente notorietà e diffusione.
La prima versione del Mac OS X venne presentata nel 2001. Di seguito gli aggiornamenti si sono susseguiti con una cadenza quasi semestrale. Col raggiungimento della maturità del sistema, Apple ha deciso di allungarne i cicli di sviluppo, così da mantenere la piattaforma di sviluppo più stabile.
Descrizione
2001
2001
Molti degli utenti Mac OS X (e non) considerano la GUI Aqua la migliore interfaccia grafica esistente. È stata imitata da molti, esistono infatti diversi programmi che permettono a sistemi operativi diversi di imitare l'interfaccia grafica del Mac OS X.
Il sistema Mac OS X ha trasformato Apple nella compagnia col maggior numero di istallazioni Unix vendute al mondo.
(Nota, Mac OS X non è ufficialmente un S.O. "Unix" dato che Apple non fa parte del The Open Group, un'organizzazione nata per certificare l'appartenenza dei sistemi operativi alla famiglia Unix. Apple ha dichiarato di non aver certificato il suo sistema operativo perché la certificazione avrebbe avuto costi proibitivi. The Open Group ha citato Apple per violazione del marchio registrato UNIX e ha dichiarato che la tassa massima richiesta per la certificazione del Mac OS X sarebbe stata di 110.000 dollari).
Mac OS X è compatibile con moltissime applicazioni scritte per le precedenti versioni di Mac OS. Questa compatibilità è ottenuta tramite il Classic: un emulatore-virtual machine su cui è installato Mac OS 9, di conseguenza le applicazioni "vecchie" non sono in grado di comunicare con le applicazioni scritte per Mac OS X né sono in grado di avvantaggiarsi delle nuove caratteristiche del Mac OS X. In aggiunta a Classic, le API Carbon hanno consentito una veloce conversione di molti applicativi da Mac OS 9 a Mac OS X. Un'altra opzione possibile per gli sviluppatori è realizzare programmi utilizzando il linguaggio Java, dato che Mac OS X supporta nativamente la tecnologia Java. Le API NEXTStep/OpenStep sono disponibili dal momento che Apple le ha incluse nel sistema operativo con nome di API Cocoa. L'eredità del NeXTSTEP è ancora presente, si nota anche dal fatto che molte primitive iniziano con la sigla "NS" (contrazione di NEXTStep).
Mac OS X è in grado di eseguire direttamente molti programmi per BSD o GNU Linux attraverso una compilazione dei sorgenti. Esistono vari progetti che provvedono a rendere disponibili molti programmi precompilati: ciò evita all'utente di dover configurare e compilare i sorgenti, un'operazione non sempre agevole, dato che spesso deve essere eseguita da linea di comando. I più famosi sono il progetto Fink e il progetto DarwinPorts .
La versione 10.3 è la prima che include Apple X11, la versione Apple del gestore grafico X11 per applicazioni Unix, fornito come componente opzionale dall'installazione standard. L'Apple X11 si basa sul progetto XFree86 versione 4.3 e X11R6.6 e fornisce un gestore grafico integrato col Mac OS X, dato che condivide lo stesso aspetto delle finestre, utilizza la tecnologia Quartz per il disegno dell'interfaccia grafica e si avvantaggia dell'accelerazione OpenGL. Esempi di applicazioni per Mac Os X che utilizzano server X11 sono OpenOffice per Mac e Gimp per Mac.
Caratteristiche significative
- Usa il Portable Document Format (PDF) come base per il motore grafico (Quartz).
- OpenGL viene utilizzato per la gestione e il ridisegno della grafica tridimensionale
- Icone a 16 milioni di colori, scalate con continuità (fino a un massimo di 256x256 pixel)
- Utilizzo di ombre attorno alle finestre e agli elementi isolati per fornire un senso di profondità
- Correttore ortografico incluso in tutte le finestre editabili e altri servizi derivati dalla tecnologia NeXT
- Antialiasing su tutti gli elementi dell'interfaccia grafica
- Nuovi elementi dell'interfaccia come le finestre non-modali (finestre di dialogo collegate alle finestre principali, utilizzate per fornire una chiara indicazione visuale della provenienza delle finestre.)
- Riquadri sovrapponibili (l'organizzazione delle finestre può parzialmente sovrapporsi se è utile)
- Supporto del gestore colori ColorSync integrato nel motore grafico (per stampa e multimedia a livello professionale)
- OpenGL (dalla versione 10.2) gestore di finestre nello schermo con accelerazione hardware. La tecnologia viene chiamata Quartz Extreme
- Exposé (dalla versione 10.3) tramite la pressione di un tasto mostra tutte le finestra miniaturizzandole sullo schermo.
- Uso pervasivo dell'Unicode all'interno del sistema operativo.
- Architettura a strati per le localizzazioni, in modo da separare il codice dai messaggi di testo da localizzare.
- FileVault (dalla versione 10.3) utilizzato per cifrare e decifrare in modo trasparente la cartella principale dell'utente con Advanced Encryption Standard (AES) con chiave a 128-bit.
- Dashboard (dalla versione 10.4) supporto di mini applicazioni richiamabili con la presione di un tasto.
- Spotlight (dalla versione 10.4) tecnologia di ricerca integrata nel sistema operativo che indicizza file e messaggi per una ricerca istantanea nell'hard disk.
- Automator (dalla versione 10.4) un applicativo creato per programmare graficamente operazioni ripetitive.
Nomi in codice
Tutti i nomi in codice utilizzati per le varie versioni di Mac OS X derivano da quelli di grandi felini. La versione 10.0 si chiamava Cheetah (Ghepardo), la 10.1 Puma, la 10.2 Jaguar (Giaguaro), la 10.3 Panther (Pantera), la 10.4 Tiger (Tigre) e la 10.5 avrà il nome di Leopard (Leopardo), la cui uscita è prevista per fine 2006 anticipando il nuovo Windows Vista di Microsoft . A partire dal nome in codice Jaguar, Apple decise di utilizzare i nomi in codice anche come nomi commerciali del Mac OS X. Nel Gennaio 2003 Apple registrò come marchi registrati Lynx (Lince, attualmente non usato), Cougar (Coguaro, attualmente non usato), Leopard (Leopardo, nome della prossima versione del sistema) e Tiger (Tigre, Usato per la versione 10.4).
Leopard 10.5 sarà il primo sistema operativo di Apple ad essere venduto per macchine con processori Intel, anche se Tiger 10.4 già viene fornito agli sviluppatori per processori Pentium 4; inoltre è stato rivelato da Steve Jobs che ogni versione del Mac Os X è stata programmata e compilata "in segreto" per processori Intel.
Versioni
Beta
- Mac OS X DP2
- Passaggio al kernel Darwin integrato con componenti BSD
- Inclusione del Mac OS 9.1, eseguito in una macchina virtuale
- Mac OS X DP3
- Nuova GUI Aqua basata su tecnologia Quartz
- Mac OS X DP4
- Mac OS X Public Beta, rilasciato il 13 settembre 2000
Mac OS X 10.0
(Cheetah) 24 marzo 2001
Il 24 marzo 2001, Apple presenta Mac OS X versione 10.0. Viene elogiato per la sua stabilità e relativa completezza (considerando che era una completa riscrittura del sistema operativo) ma viene anche criticato per la lentezza e per la mancanza di alcune caratteristiche presenti nella precedente versione, come per esempio la masterizzazione dei CD o DVD. Molte persone (incluso Steve Jobs) lo considerano un'ottima beta ma non un vero sistema operativo.
Mac OS X 10.1
(Puma), 25 settembre 2001
Nel Settembre del 2001 viene rilasciato l'aggiornamento gratuito a 10.1 che migliora la velocità e colma le principali lacune come l'impossibilità di masterizzare e la mancanza di un lettore di DVD.
Mac OS X 10.2
(Jaguar), 24 agosto 2002
Nel 2002, Apple presenta Jaguar la versione 10.2 di Mac OS che apporta notevoli miglioramenti alla velocità, introduce un nuovo motore grafico e apporta più di 150 migliorie al sistema operativo. La versione 10.2 è la prima a supportare solo macchine dotate delle New World ROM.
- Migliorato il supporto delle reti Microsoft Windows
- La tecnologia Quartz Extreme utilizza la scheda grafica per il disegno della GUI
- Aggiunto un filtro adattivo basato fu un indice semantico nel programma di e-mail per rilevare lo spam
- Un nuovo programma di gestione e organizzazione dei contatti chiamato Address Book
- Apple Bonjour
- iChat, il programma Apple di messaggeria istantanea compatibile con AOL Instant Messenger
- Riscrittura del Finder con aggiunta della funzione di ricerca integrata delle finestre
- Aggiunta del nuovo Accesso universale
- Sherlock 3 programma di ricerca basato su siti web
- Miglioramento della velocità dell'intero sistema
Mac OS X 10.3
(Panther), 24 ottobre 2003.
Mac OS X 10.3 Panther, viene presentato il 24 ottobre, 2003, apporta molte nuove funzionalità al sistema operativo, modifica l'interfaccia grafica Aqua introducendo un tema "metallizzato" e incrementa ulteriormente la velocità del sistema.
- Aggiornato il Finder con il nuovo tema metallico e aggiunta la funzione di ricerca rapida
- Exposé, il nuovo metodo di organizzazione delle finestre
- Cambio Utente Rapido una tecnologia che consente di loggare un altro utente rimanendo connessi
- iChat AV software di video conferenza
- Velocizzazione del motore di disegno dei file PDF e incremento della velocità del lettore di sistema
- Supporto diretto dei Fax
- Notevole miglioramento della compatibilità con reti Windows
- FileVault: tecnologia per cifrare e decifrare la propria directory in tempo reale
- Incremento di velocità dell'intero sistema e supporto dei G5
Mac OS X 10.4
(Tiger), 29 aprile 2005
Mac OS X 10.4 Tiger, viene presentato il 29 aprile 2005. Tiger include oltre 200 migliorie e un migliore supporto dell'architettura a 64 bit dei processori PowerPC G5.
- Spotlight: Ricerca rapida anche dentro i file
- Dashboard: Accessori per compiti comuni accessibili con un click
- Automator: Automatizza i compiti ripetitivi programmando il computer in modo grafico
- 64-bit supporto della gestione a 64 bit per i G5
- Safari RSS
- Videoconferenze con più utenti in contemporanea su iChat AV
- Core Image: tecnologia per la realizzazione di effetti video in tempo reale
- Accelerazione via hardware delle primitive grafiche Quartz
- Esteso il supporto dei formato PDF, compresa la cifratura a 40 bit
Mac OS X 10.5
(Leopard), probabile rilascio: fine 2006
Attualmente si sa solamente che questo sarà il primo sistema operativo Apple disponibile al pubblico che supportera nativamente i processori Intel x86 oltre ai processori PowerPC.
Dettagli [http://www.theapplemuseum.com/index.php?id=tam&page=timeline&subpage=os/ Mac OS linea del tempo]
e
[http://www.theapplemuseum.com/index.php?id=tam&page=software&subpage=macosx_build/ Mac OS X numeri di produzione] (In Inglese)
Voci correlate
- Tecnologia del Mac OS X
- Apple Computer
- Apple Macintosh
- Mac OS
- Prodotti Apple
Collegamenti esterni
- [http://www.apple.it Sito ufficiale Apple]
- [http://www.macitynet.it/ Macitynet sito riguardante la piattaforma]
- [http://www.tevac.com/ Tevac sito di appassionati della piattaforma]
- [http://www.faqintosh.com/ Faqintosh, sito di FAQ in italiano ottimamente realizzato]
- [http://www.macster.it/ Macster.it - Community italiana dedicata al mondo della Mela]
Categoria:Unix
Categoria:sistemi operativi
ja:Mac OS X
ko:맥 오에스 텐
simple:Mac OS X
th:แมคโอเอสเท็น
Licenza
Licenza è un termine che può essere riferito a diversi ambiti:
- In ambito informatico la licenza è un contratto tra il detentore del copyright e l'utente
- In ambito scolastico ha il significato di diploma
- In ambito legale/diritto è una autorizzazione rilasciata dallo Stato a svolgere una determinatà attività (licenza di guidare taxi, di aprire locali pubblici ecc.)
- In ambito economico licenza è l'autorizzazione a costruire un prodotto di un' altra azienda che ne detiene il copyright.
- In ambito militare riveste quello di permesso di uno o più giorni
- James Bond è, notoriamente, l'agente 007 con licenza di uccidere
- Licenza è anche il nome di un comune della provincia di Roma
GNU Free Documentation LicenseLa GNU Free Documentation License (GNU FDL) è una licenza di copyleft per contenuti liberi, creata dalla Free Software Foundation per il progetto GNU. Il testo ufficiale della licenza è disponibile all'URL http://www.gnu.org/copyleft/fdl.html, mentre all'URL http://www.softwarelibero.it/gnudoc/fdl.it.html è disponibile la traduzione non ufficiale in italiano.
LA GNU FDL è stata creata per distribuire la documentazione di software e materiale didattico. Stabilisce che ogni copia del materiale, anche se modificata, deve essere distribuita con la stessa licenza. Tali copie possono essere vendute e, se riprodotte in gran quantità, devono essere rese disponibili anche in un formato che faciliti successive modifiche. La Wikipedia è la più grande raccolta di documentazione che utilizza questo tipo di licenza.
Il gruppo legale di Debian non considera la GNU FDL una licenza libera, perché non rispetta le Debian Free Software Guidelines (vedi [http://www.debian.org/social_contract#guidelines] e [http://66.102.11.104/search?q=cache:gY3CIB8azR0J:lists.debian.org/debian-legal/2003/debian-legal-200304/msg00246.html+creative+commons+sharealike+GFDL&hl=en&ie=UTF-8], in inglese).
Le "sezioni secondarie"
La licenza separa esplicitamente il "Documento" dalla "Sezione Secondaria". Tale sezione può contenere informazioni sulla relazione tra l'autore (o l'editore) e il soggetto del documento, ma nessuna informazione sul soggetto stesso. A differenza del testo del documento, la cui modifica è concessa alle condizioni equivalenti (ma allo stesso tempo incompatibili) a quelle della GNU General Public License, alcune delle Sezioni Secondarie hanno delle restrizioni studiate per garantire la giusta attribuzione del testo agli autori precedenti.
In particolare, gli autori di una versione precedente devono essere specificati e certe "sezioni invarianti", specificate dall'autore originale e riguardanti il suo rapporto con il documento, non possono essere cambiate. Se il documento viene modificato, il suo titolo va cambiato (a meno che l'autore precedente conceda il permesso di mantenerlo invariato). La licenza gestisce anche la copertina frontale e posteriore, oltre alle sezioni destinate alla Storia del documento, ai ringraziamenti, alle dediche e ai riconoscimenti.
Usare la GNU FDL
Per applicare questa licenza ad un documento che si è scritto, si includa una copia della licenza (in inglese!) nel documento e si inserisca il seguente avviso subito dopo la pagina del titolo:
Copyright (c) ANNO VOSTRO NOME.
è garantito il permesso di copiare, distribuire e/o modificare
questo documento seguendo i termini della Licenza per
Documentazione Libera GNU, Versione 1.1 o ogni versione
successiva pubblicata dalla Free Software Foundation; con le
Sezioni Non Modificabili ELENCARNE I TITOLI, con i Testi
Copertina ELENCO, e con i Testi di Retro Copertina ELENCO. Una
copia della licenza è acclusa nella sezione intitolata "Licenza
per Documentazione Libera GNU".
Se non ci sono Sezioni non Modificabili, si scriva "senza Sezioni non Modificabili" invece di dire quali sono non modificabili. Se non c'è Testo Copertina, si scriva "nessun Testo Copertina" invece di "il testo Copertina è ELENCO"; e allo stesso modo si operi per il Testo di Retro Copertina.
Wikipedia e la GNU FDL
Tutti gli articoli della Wikipedia sono distribuiti con la GNU Free Documentation License. Per maggiori informazioni si veda Wikipedia:Diritto_d'autore. La copia locale della licenza, come richiesto dalla GNU FDL, è in Testo della GNU Free Documentation License.
Materiale per cui è proibita la distribuzione commerciale
Nessun materiale per cui sia proibita la distribuzione commerciale può essere usato in un documento sotto licenza GNU FDL, ad esempio un articolo di Wikipedia, perché la licenza GNU FDL non esclude un riutilizzo commerciale. Comunque, in alcuni casi specifici, l'utilizzo commerciale potrebbe essere considerato fair use e in quel caso quel materiale non ha bisogno di essere distribuito sotto GNU FDL se tale uso è rivolto a tutti i potenziali utenti del documento originale. Un buon esempio è costituito dalle parodie.
Voci correlate
- GNU
- GNU General Public License
- GNU Lesser General Public License
- Free Software Foundation
- copyright e copyleft
Collegamenti esterni
- [http://www.softwarelibero.it/gnudoc/fdl.it.html Traduzione in italiano del testo della licenza GFDL] - (Versione non normativa)
- Wikisource - Testo originale della licenza GFDL - (Versione normativa)
categoria:Aiuto
categoria:Diritto industriale
categoria:Software libero
als:GNU-Lizenz für freie Dokumentation
ja:GNU FDL
ko:GNU 자유 문서 사용 허가서
ms:Lesen Dokumentasi Bebas GNU
simple:GNU Free Documentation License
th:GNU Free Documentation License
zh-min-nan:GNU Chū-iû Bûn-kiāⁿ Hí-khó-su
Libreria software
In Informatica, una libreria software è un insieme di funzioni di uso comune, predisposte per essere collegate ad un programma software. Il collegamento può essere statico o dinamico.
Il termine italiano viene da un'errata traduzione dell'inglese library, che vuol dire biblioteca, ma
oramai libreria è entrata a tal punto nel vocabolario dei professionisti del settore che sarebbe
troppo difficile e lungo far accettare il termine corretto.
Categoria:Sistema operativo
Categoria:Programmazione
BashBash (acronimo per Bourne again shell) è una shell del progetto GNU usata nei sistemi operativi Unix e specialmente in Linux, si tratta di un interprete di comandi che permette all'utente di comunicare col sistema operativo attraverso una serie di funzioni predefinite, o di eseguire programmi. Tecnicamente bash è un clone evoluto della shell standard di unix (/bin/sh) chiamata anche Bourne Shell dal nome del suo autore originario Stephen Bourne e per questo il nome bash deriva dal gioco di parole (definito pessimo addirittura da Linus Torvalds) Bourne again shell che letteralmente significa un'altra shell Bourne ma dove Bourne again può essere interpretato come rinata creando la definizione finale shell rinata.
Il pratica bash può essere considerata come un processore di macro. Essa è infatti in grado di eseguire i comandi che le vengono passati o di interpretare un semplice linguaggio di programmazione che permette di combinare questi comandi tra di loro per svolgere compiti più complessi.
Qualora dovesse presentarsi la necessità la shell mette a disposizione la possibilità di raccogliere in file delle serie di comandi creando così script eseguibili contenenti variabili, funzioni e controlli di flusso come nei più comuni linguaggi di programmazione.
Una delle altre maggiori funzionalità di bash è quella del redirect dell'input e dell'output grazie al quale è possibile eseguire più programmi in cascata passando come input dell'uno l'output dell'altro.
Shell alternative a bash ed ugualmente famose sono csh e tcsh.
Collegamenti esterni
- [http://www.pluto.linux.it/ildp/guide/abs/index.html Guida avanzata di scripting Bash]
categoria:Software libero
Categoria:Programmi POSIX
Categoria:Acronimi
ja:Bourne Again Shell
ko:본 어게인 셸
SoftwareIl termine software (usato in ambito informatico) può indicare l'insieme dei programmi (o uno solo di questi) in grado di funzionare su un computer.
Classificazione
All'interno del software si possono distinguere alcune grandi categorie:
- i sistemi operativi
- i driver
- i programmi applicativi (cioè tutti quei software che vengono utilizzati per il lavoro quotidiano: dai programmi per l'ufficio, ai videogiochi)
Origine
Il termine software prende origine durante la seconda guerra mondiale. Gli inglesi erano impegnati nella decrittazione dei codici di Enigma, di cui già conoscevano la meccanica interna (detta hardware, nel senso di ferraglia) grazie ai servizi segreti polacchi. La prima versione aveva tre rotori per mescolare le lettere. Dopo il 1941, all'Enigma della Marina tedesca venne aggiunto un rotore, e il team di criptanalisti inglesi, capitanati da Alan Turing, si dovette interessare non più alla sua struttura fisica, ma alle posizioni in cui venivano utilizzati i rotori della nuova Enigma. Poiché queste istruzioni erano scritte su pagine solubili nell'acqua, per poter essere più facilmente distrutte, da ciò, e per contrasto con hardware, furono chiamate software.
Il senso moderno del termine deriva dalla traslazione del senso alle istruzioni date ai computer ed è stata utilizzata per la prima volta in questo senso nel 1957 da John W. Tukey, noto statistico della Princeton University.
Nella storia dell'evoluzione del software bisogna analizzare lo sviluppo dell'hardware. Come evidenziato dalla seconda legge di Moore, oltre ai costi, una minaccia più seria alla velocità di elaborazione, viene probabilmente dall'area software. Infatti ciò che conta per un'utente non è tanto la velocità di elaborazione del processore, quanto la velocità effettiva di processazione, calcolata in base al tempo che occorre alla CPU per eseguire le diverse operazioni, come la videoscrittura di un testo o l'output di un foglio elettronico.
Nathan Myhrvold, direttore dell'Advanced Technology Group della Microsoft, ha effettuato uno studio sui prodotti Microsoft calcolando le linee di codifica per le successive release dello stesso software:
Basic: 4.000 linee di codice nel 1975 a 500.000 nel 1995
Word: 27.000 linee di codice nel 1982 a 2.000.000 nel 2002
Myhrvold traccia un parallelismo con la legge di Moore: "dunque abbiamo aumentato la dimensione e la complessità del software ancora più rapidamente di quanto non prevedeva la legge di Moore". In effetti, è proprio per questo motivo che esiste un mercato per i processori più veloci; "gli utenti del software hanno sempre consumato la nuova capacità di elaborazione ad una velocità uguale o superiore a quella con cui i produttori di chip la mettevano a disposizione" (Stewart Brand, 1995).
In ogni caso, sia l'osservazione di Brand, sia il ragionamento di Myhrvold, non tengono conto delle caratteristiche aggiuntive consentite dalle linee di codifica addizionali e quindi enfatizzano l'impatto negativo del boom del software.
Ciclo Wintel
"La maggior potenza di ogni generazione di chip Intel, viene da una nuova generazione di applicazioni basate su Windows, dando origine a una rinnovata domanda di chip ancora più potenti, necessari per far girare nuovi software a loro volta ancora più esigenti in termini di potenza"
Il "Ciclo WINTEL", che prende il nome dai colossi di riferimento, (processori Intel e sistemi operativi Windows - Microsoft), sta a indicare per l'appunto che la complessità di nuovi software (in grado di funzionare in ambiente Windows) esaurisce tutta la capacità computazionale messa a disposizione dai nuovi processori (la cui casa produttrice di spicco è Intel). Schaller nel 1996 disse a proposito del ciclo Wintel: "every time Andy Grove makes a faster chip, Bill uses all of it".
Osservazione di Nathan Myhrvold
Nathan Myhrvold, ex Top executive di Microsoft, disse: "il software è come un gas che si espande per riempire il contenitore che lo contiene". In effetti l'evoluzione tecnologica del software ha seguito questa sua legge:
- Anni '80: elaborazione di testi eseguita da programmi di poche decine di kilobyte di memoria (e.g. troff);
- Oggi: word processor decine di megabyte (e.g. word) .
La continua aggiunta di nuove funzionalità al software esistente giustifica la costante richiesta di processori più veloci, memorie più grandi e più ampie capacità di I/O.
Infatti, anche le altre tecnologie si sono evolute di pari passo:
- i dischi rigidi da 10 MB (1982) a 60 GB (2003);
- i modem analogici da 300 bit/sec a 56 kbit/sec.
Organizzazione interna
Un software viene normalmente realizzato utilizzando uno o più linguaggi di programmazione. Se il progetto diventa complesso, è opportuno dividere il programma in uno o più moduli, che possono essere così affidati a diversi programmatori, manutenuti più semplicemente e riusati in altri progetti.
Una fase detta di compilazione traduce ogni file di codice sorgente in un file oggetto contenente il programma in linguaggio macchina adeguato all'architettura hardware di destinazione. Infine tutti i file oggetto attraversano una fase di linking per realizzare il prodotto finale: il file eseguibile.
Alcuni software non vengono compilati in quanto le istruzioni contenute nel codice sorgente vengono subito eseguite da un software detto interprete.
La gestione del processo di sviluppo è caratterizzato da un ciclo di vita codificato nell'ambito dell'Ingegneria del Software (Software Engineering, nella dizione anglosassone) quali
- Ciclo di vita classico o water-fall (cascata)
- Ciclo di vita object oriented o a spirale
Qualità del software
La realizzazione del software è un'attività complessa che richiede molte fasi.
Per questo motivo può essere associato ad un prodotto ingegneristico ma se ne differenzia soprattutto per alcune caratteristiche:
- è molto malleabile, tale caratteristica porta a pensare che modificare il software sia banale, ma non è proprio così;
- è un prodotto human intensive, cioè, richiede un grosso sforzo in risorse umane perché si concentra soprattutto sulla progettazione e sull'implementazione.
Esistono molte qualità che si richiede al software che sono descritte più approfonditamente nella sezione corrispondente.
Licenza di distribuzione
Le licenze di distribuzione del software oggi sono tante e non solo per ambito software (54 circa), però quelle effettivamente usate sono poche. Per l’ 89%, per esempio, si trattano di GPL, LGPL o BSD vecchia licenza storia di Unix che pone come unica condizione una nota nel copyright che si riferisca all’Università della California, tornata in uso dall’avvento di Linux.
Il più grande difetto nei sistemi operativi liberi non è nel software, è la mancanza di buoni manuali liberi da poter includere in questi sistemi. Molti dei programmi più importanti non hanno un manuale completo. La documentazione è una parte essenziale di qualunque pacchetto di software; quando un pacchetto importante di software libero è fornito senza un manuale libero si ha una grossa lacuna. A tutt'oggi abbiamo molte di queste lacune.
Nasce in seguito anche l’OPEN CONTENT che ha come idea quella di trasferire le licenze su opere diverse dal software, a partire dalla documentazione dello stesso, opere come l’arte, la musica, i videogiochi. Esiste anche una licenza specifica per la documentazione accademica e universitaria.
Creative commons
Lawrence Lessig, avvocato e insegnante, ha cercato una soluzione legale alla crisi del sistema di copyright negli Stati Uniti e dice che la propensione all’acquisto sia più simile, per gli artefatti digitali, al modello del telefono che a quello dell’editoria musicale. Lessig fonda la non-profit CREATIVE COMMONS, in cui l’intento è permettere agli autori il campionamento ai fruitori. Ottenere una licenza è semplice: i diritti che vengono concessi sono scelti in maniera modulare, tramite un modulo del sito Web. Sorge una critica: il successo di i-Tunes Store mostra che il sistema classico del copyright può funzionare anche con gli artefatti digitali.
Licenza d'uso
Un documento che accompagna la maggior parte del software, e specifica i diritti e i doveri di chi lo riceve. Esistono licenze libere e licenze proprietarie. Tutte le licenze d'uso traggono il loro valore legale dalle norme sul diritto d'autore (copyright in inglese).
software libero (free software, in inglese)
Ogni tipo di software la cui licenza d'uso consenta la libera copia, modifica e redistribuzione gratuita o a pagamento del programma. Il termine è stato definito da Richard Stallman della FSF nel 1985, e pone l'accento sulla libertà dell'utente.
open source software
Dal punto di vista pratico è la stessa cosa di software libero. Il termine è stato definito nel 1998 dalla OSI per rendere il concetto più accettabile al mondo degli affari, ponendo l'accento sui vantaggi pratici ed eliminando tutti i riferimenti alla parola libertà.
GNU GPL
La licenza d'uso libera più diffusa, quella normalmente usata per i programmi del progetto GNU. I programmi che la usano sono riconosciuti sia software libero dalla FSF che open source software dalla OSI. È persistente, cioè impone che la licenza per le copie modificate sia la GPL stessa o compatibile.
BSD
La licenza d'uso resa famosa dai sistemi operativi BSD, con cui nacque lo stack TCP/IP. I programmi che la usano sono riconosciuti sia software libero dalla FSF che open source software dalla OSI. È non persistente, cioè consente l'uso di qualunque altra licenza per distribuire copie modificate.
permesso d'autore (copyleft, in inglese)
È il diritto d'autore (in inglese copyright) alla rovescia. Uno slogan che suggerisce come si possano sfruttare le leggi sul diritto d'autore per dare libertà agli utenti di un programma, piuttosto che toglierla. Si dicono soggette a copyleft le licenze libere persistenti, come la GNU GPL
Voci correlate
- Firmware
- Hardware
- Freeware
- Shareware
Collegamenti esterni
- [http://www.sic.org/2004nominees.asp Shareware Industry Conference]
categoria:Software
categoria:Innovazione tecnologica
ja:ソフトウェア
ko:컴퓨터 소프트웨어
simple:Software
th:ซอฟต์แวร์
GNU Compiler Collection
Il GNU Compiler Collection (detto anche GCC) è un compilatore di sorgenti scritto in linguaggio C realizzato dall'hacker statunitense Richard Stallman durante l'ambizioso progetto per lo sviluppo del Sistema GNU, un sistema operativo libero compatibile con Unix.
Attualmente le recenti versioni di GCC, sviluppate dalle comunità Open Source, sono a corredo delle principali distribuzioni del sistema operativo GNU/Linux e per altri sistemi operativi basati o pensati su fondamenta Unix come il C, tra cui Java, C++ , Objective_C ,Fortran e Ada ed e' in grado di generare eseguibili per molte architetture, tra le quali, x86 (intel compatibili), x86 a 64 bit (AMD/intel a 64 bit), PowerPC. s390 (IBM), Sparc (Sun Microsystems) e altre.
L'ultima versione rilasciata è la 4.0.2
Collegamenti esterni
[http://gcc.gnu.org/ Sito Ufficiale]
categoria:linguaggi di programmazione
ja:GNUコンパイラコレクション
C plus plus
Il C++ è un linguaggio di programmazione orientato agli oggetti sviluppato da Bjarne Stroustrup ai Bell Labs negli anni '80 e rilasciato nel 1986. È basato sul linguaggio C. Nonostante la maggior parte del codice sorgente C sia valido anche per il C++, il C non è un sottoinsieme del C++ nel senso più stretto della parola. Il C++ fu standardizzato nel 1998 (ISO/IEC 14882-1998 "Information Technology - Programming Languages - C++").
In aggiunta al supporto alla programmazione orientata agli oggetti, il C++ è distinto dal C per il suo supporto alla programmazione generica e alla metaprogrammazione attraverso l'uso dei templates.
Il C++ è molto diffuso e apprezzato, ma raramente è usato al massimo delle sue potenzialità: la semantica del C++ è molto ricca di dettagli e sfumature che condizionano il comportamento del codice, e che molto spesso i compilatori implementano in maniera scorretta o incompleta: molte delle caratteristiche dello standard ISO del linguaggio non sono ancora implementate nei compilatori attuali, anche se la situazione sta migliorando lentamente.
La grande ricchezza semantica del C++, insieme alle librerie che lo accompagnano, lo rende un linguaggio estremamente espressivo e potente, ma che richiede molto tempo per venire appreso e padroneggiato completamente. Inoltre a causa della variabilità del comportamento dei compilatori nel maneggiare le funzioni più avanzate del linguaggio, i programmi C++ che scelgono di farne uso si rivolgono ad un'architettura (processore, sistema operativo e compilatore) particolare sacrificando la portabilità su altre piattaforme.
Il C++ ha una libreria standard, in modo simile al C. Oltre a questa, particolare importanza nel C++ ricopre la STL, Standard Template Library. Si tratta di una libreria che definisce una serie di template generici per strutture dati comuni, come vettori, code, array associativi, e così via. La programmazione ne risulta molto semplificata, al prezzo di un gran lavoro del compilatore per interpretare i complessi template.
Il nome del linguaggio
Il nome del linguaggio, in inglese si pronuncia pressapoco "si plas plas", ma molti Italiani lo pronunciano "ci più più".
Tale nome rappresenta la sua evoluzione dal C.
Fu suggerito da Rick Mascitti alla metà del 1983, quando il linguaggio veniva usato per la prima volta al di fuori dei centri di ricerca.
Precedentemente il linguaggio si chiamava "C with classes" (C con classi).
Il nome è un gioco di parole con un costrutto del C (dove il doppio segno più è un operatore che ha l'effetto di incrementare il valore di una variabile) insieme con la comune convenzione di aggiungere un segno più per indicare una versione potenziata. Secondo Stroustrup: "++ è l'operatore di incremento del C... il nome esprime la natura evoluzionaria dei cambiamenti dal C". Impiegando il gioco di parole si evita anche il problema che "C+" è già stato usato per un linguaggio senza alcun nesso col C++ (senza menzionare che è comunemente associato con una valutazione meno che stellare di una performance accademica).
Alcuni puristi, notando che nel C il valore dell'espressione "C++" è il valore originale e non modificato di "C", hanno suggerito che "++C" sarebbe stato un nome più appropriato. Per esempio, se x = 3, sia y = x++, allora y 3 e x 4. Se y = ++x, allora y 4 e x 4.
Programmi di esempio
#include
int main()
Definizione di Classe
#include
class Message ;
Collegamenti esterni
- Bjarne Stroustrup mantiene una [http://www.research.att.com/~bs/bs_faq.html lista di domande frequenti] (FAQ) sul linguaggio.
- [http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/ Lezioni sul C++ del CNR di Bologna]
Categoria:Linguaggi di programmazione
ja:C Plus Plus
| | |