Framework: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m preposizione al femminile invece che al maschile "struttura logica... sulla quale"
Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile
Nessun oggetto della modifica
 
(19 versioni intermedie di 14 utenti non mostrate)
Riga 1:
{{F|programmazione|ottobre 2010}}
UnIn [[informatica]] e specificamente nello [[ciclo di vita del software|sviluppo ''software'']], un '''''framework''''', termine della ([[lingua ingleseanglicismo]] che può essere tradotto come '''struttura''', '''impalcatura''' o '''quadro strutturaledi riferimento''',<ref>La traduzione in italiano delle norme [[informaticaOrganizzazione internazionale per la normazione|ISO]] eed specificamenteequivalenti nellodi [[cicloFramework diè vitaappunto del"quadro software|sviluppodi ''software'']],riferimento".</ref>) è un'architettura logica di supporto (spesso un'implementazione logica di un particolare ''[[design pattern]]'') sulla quale un ''[[software]]'' può essere progettato e realizzato, spesso facilitandone lo sviluppo da parte del [[programmatore]]. Talora è usato come sinonimo di ''[[Rack (informatica)|rack]]'' o [[piattaforma (informatica)|piattaforma ''software'']], anche nel gergo informatico<ref>{{cita web|url=https://www.thefreedictionary.com/framework|titolo= Significati di Framework|sito =freedictionary}}</ref><ref>{{cita web|url= http://www.dictionary.com/browse/rack-and-pinion|titolo= Framework e rack|sito= dictionary.com}}</ref>.
 
Il termine ''framework'' è spesso utilizzato anche all'infuori del linguaggio informatico. Lo si usa, specie nelle materie economico-gestionali, per esprimere il concetto di una modalità strutturata, pianificata e permanente, che supporta una prassi, una metodologia, un progetto, un sistema di gestione. In italiano corrisponde alle parole: architetturaschema, struttura, quadro strutturale e simili (mentre "intelaiatura" sarebbe poco adatto per questo scopo, sebbene sia il significato originario di ''framework'').
 
== Descrizione ==
Un ''framework'' è definito da un insieme di [[classe astratta|classi astratte]] e dalle relazioni tra esse. Istanziare un ''framework'' significa fornire un'[[implementazione]] delle classi astratte. L'insieme delle classi concrete, definite ereditando il ''framework'', eredita le relazioni tra le classi; si ottiene in questo modo un insieme di classi concrete con un insieme di relazioni tra classi.
 
Alla base di un ''framework'' c'è sempre una serie di [[Libreria software|librerie]] di [[Codice sorgente|codice]] utilizzabili in fase di linking con uno o più [[Linguaggio di programmazione|linguaggi di programmazione]], spesso corredate da una serie di strumenti di supporto allo sviluppo del ''software'', come ad esempio un [[IntegratedAmbiente developmentdi environmentsviluppo integrato|IDE]], un ''[[debugger]]'' o altri strumenti ideati per aumentare la velocità di sviluppo del prodotto finito. L'utilizzo di un ''framework'' impone dunque al programmatore una precisa [[metodologia di sviluppo del software|metodologia di sviluppo del ''software'']].
 
=== Funzione ===
Riga 15 ⟶ 17:
Un ''framework'' può essere visto come (e in alcuni casi è) un sovrainsieme o un'aggiunta alle [[Libreria software|librerie]] di ''[[run-time]]'', o tempo d’esecuzione, di un [[Linguaggio di programmazione|linguaggio]]. Per fare qualche esempio:
 
* Il [[C++]] ha, oltre alla [[libreria standard C++]], un proprio ''framework'' non grafico, la ''[[Standard Template Library]]'' ('''STL'''); tuttavia, esistono numerosi ''framework'' che estendono o, in parte, sostituiscono la STL, tra cui l{{'}}''[[Active Template Library]]'' ('''ATL''') e le [[Microsoft Foundation Classes]] ('''MFC''') di [[Microsoft]], [[Qt (toolkit)|Qt]] di Digia, e [[wxWidgets]]. Microsoft ha inoltre sviluppato un'implementazione del C++ (ora standard dell'[[ECMA International|ECMA]]: [[C++/CLI]]) che si appoggia integralmente al [[Framework .NET]].
* Anche il [[C (linguaggio)|C]] ha una propria libreria di run-time, la [[libreria standard del C]], nota anche come '''libc''' (in ambiente [[Unix]]) o '''CRT''' (in ambiente Microsoft, da ''C Run-Time''); tuttavia vi sono parecchi ''framework'' per il C, fra cui il [[GTK+|GIMP Toolkit]] ('''GTK''').
* Per il linguaggio [[C sharp|C#]], che non ha una propria libreria di ''run-time'', il Framework .NET svolge anche questa funzione. Lo stesso vale per [[Visual Basic .NET]], che è stato concepito in maniera analoga.
* Tutto il ''software'' scritto in [[Delphi]] di [[Borland]] si appoggia sulla [[Visual Component Library]] ('''VCL'''), sempre di Borland; questa libreria di fatto è un framework, poiché si prende carico di una gran quantità di servizi ''software'' non essenziali (tra i quali, appunto, la gestione dell'interfaccia grafica). Come Microsoft con il [[C++]], anche Borland ha realizzato una versione di Delphi che si appoggia al Framework .NET.
* Sono per Java i ''framework'' [[Apache Cocoon|Cocoon]] e [[Apache Struts|Struts]] di [[Apache Software Foundation|Apache]], tutti e due orientati allo sviluppo di applicazioni per [[Internet]].
* Programmando in [[PHP]] è possibile fare uso di prodotti quali [[Symfony]], [[Zend Framework]], [[Yii framework|yii]], [[Seagull]], [[Jamp]], [[CodeIgniter]] o molti altri.
* In [[Perl]] esiste il ''framework'' [[Catalyst (software)|Catalyst]], nel quale il codice viene generato a partire dallo schema di un database sottostante.
* Programmando in [[RPG (linguaggio di programmazione)|RPG]] è possibile fare uso di prodotti quali [[Jeniux framework]], WebFacing, GUI/400 e molti altri.
* In [[Python]] esiste il ''framework'' ''[[Twisted (software)|Twisted]]'' che utilizza il [[Programmazione ada eventi|paradigma di programmazione orientato agli eventi]] per lo sviluppo di applicazioni [[Internet]].
* Anche [[WordPress]] dispone di numerosi ''framework'', in grado di estenderne le funzionalità e migliorarne le prestazioni: alcuni di essi sono inclusi in ''theme'' grafici più avanzati, altri sono installabili separatamente. Tra i più noti citiamo Option Framework (che mette a disposizione delle estensioni nel ''backend'', come ad esempio le pagine di opzioni del sito), Genesis, Titan e Redux.
* Il framework ''full stack'' [[Ruby on Rails]], dedicato al [[Ruby (linguaggio di programmazione)|Ruby]], ha contribuito ad accrescerne la diffusione.
 
Nonostante questo bisogna tener ben presente che un ''framework'' concettualmente non è una libreria. La differenza sta nel fatto che le librerie sono collezioni di funzioni specializzate per un determinato compito, che possiamo chiamare quando ne abbiamo bisogno, mentre il ''framework'' è l'infrastruttura predisposta alla realizzazione di un’applicazione secondo un determinato approccio all'interno del quale inseriamo del codice che verrà opportunamente interrogato per implementare il comportamento specifico della nostra applicazione.
Riga 31 ⟶ 33:
=== Utilizzi ===
A volte si utilizzano ''framework'' proprietari progettati ex-novo oppure che estendono ''framework'' già esistenti; trattandosi di fatto di importazione di [[libreria (software)|librerie]] è anche possibile combinare più ''framework'', ciascuno utilizzato per diverse parti dell'applicazione da realizzare.
 
== Altri contesti ==
Il termine ''framework'' è spesso utilizzato anche all'infuori del linguaggio informatico. Lo si usa, specie nelle materie economico-gestionali, per esprimere il concetto di una modalità strutturata, pianificata e permanente, che supporta una prassi, una metodologia, un progetto, un sistema di gestione. In italiano corrisponde alle parole: architettura, struttura, quadro strutturale e simili (mentre "intelaiatura" sarebbe poco adatto per questo scopo, sebbene sia il significato originario di ''framework'').
 
Nella serie televisiva [[Agents of SHIELD]] il ''Framework'' era una realtà virtuale alternativa sviluppata per permettere al team di agenti di allenarsi virtualmente; in seguito viene trasformata in una piattaforma estremamente più vasta, capace di ricreare al suo interno abitudini, usi e sensazioni del mondo reale.
 
== Note ==
Riga 42 ⟶ 39:
== Voci correlate ==
* [[Libreria (software)]]
* [[Ambiente di sviluppo integrato]]
* [[Integrated development environment]]
* [[Software]]
* [[Framework per applicazioni web]]
 
== Altri progetti ==
{{Interprogetto|preposizione=sul|wikt=framework}}
 
== Collegamenti esterni ==
* {{FOLDOC||framework}}
 
{{Controllo di autorità}}
{{Portale|internetInternet}}
 
[[Categoria:Framework| ]]