Framework-Alessandro Costi Tech

Framework: cosa sono e quali dominano le classifiche

Definizione e caratteristiche di un framework

In informatica, un framework è un sistema che consente di estendere le funzionalità del linguaggio di programmazione su cui è basato, fornendo allo sviluppatore una struttura coerente ed efficace al fine di effettuare azioni e comandi in modo semplice e veloce.

In sostanza, si può definire un framework come un insieme di funzioni e tool già “pronti all’uso”, ovvero che si possono utilizzare senza doverli progettare da zero ogni volta. Nel design del software, i framework possono seguire approcci Single-Page o Multi-page, lato server e lato client, e possono basarsi su azioni o su componenti. I componenti principali di un framework sono costituiti da classi collegate tra loro, a cui vengono assegnati dei metodi; tali componenti possono essere statici, ovvero immutabili (Frozen spot), oppure flessibili, dunque modellabili (Hot spot). 

Interessante la distinzione tra i framework che lasciano maggiore controllo allo sviluppatore (“un-opinionated”) e quelli che invece ne lasciano meno (“opinionated”). Un esempio di framework che lascia poco controllo al programmatore è Angular che, tuttavia, pur dando meno scelta, possiede gli strumenti necessari a rendere i processi più veloci. Un esempio invece di framework definito un-opinionated è Vue: consente maggiore libertà di scelta, ma offre meno strumenti e strutture per fare le cose più rapidamente.

Differenza tra framework e libreria

Il framework, dunque, non è un linguaggio web e nemmeno una libreria di codice. Si tratta più che altro di una “struttura” creata per la realizzazione di alcune specifiche funzioni. 

Spesso framework e libreria vengono confusi tra loro: cosa li accumuna e cosa invece li differenzia? Entrambi sono codici scritti da qualcun altro per rendere il lavoro di un programmatore più semplice e rapido.

La libreria è però un insieme di funzioni specializzate per un determinato compito di un progetto, quindi viene in aiuto per una parte del progetto. Quando si usa una libreria, infatti, viene presa solo una piccola porzione di codice, che viene messa all’interno del progetto: il programmatore decide quando chiamarla, come usarla e dove.

Quando invece si utilizza un framework è lui stesso che va a definire la struttura del codice e del progetto e che stabilisce quando chiamare codice e quando impostarlo (Inversion of Control). 

In pratica, quando abbiamo una libreria la mettiamo all’interno del codice, quando invece abbiamo un framework mettiamo il codice dentro il framework.

Quali sono i vantaggi di usare un framework?
Un framework non è indispensabile: si tratta più che altro di uno dei tanti strumenti che lo sviluppatore ha a sua disposizione per programmare meglio e più velocemente. Proprio per queste sue caratteristiche, i framework sono diventati sempre più fondamentali per lo sviluppo di siti web e app. 
Infatti, ricapitolando, i framework consentono di:
  • ottimizzare tempi, costi e benefici;
  • evitare al programmatore di riscrivere codice già scritto in precedenza per compiti simili;
  • organizzare e trovare rapidamente i file necessari;
  • concentrarsi sul problema da risolvere, senza dover implementare funzionalità che qualcun altro ha già provveduto a creare. 
La maggior parte delle volte i framework sono gratuiti. Alcuni tra i framework più diffusi sono nati da grosse aziende: gli stessi React e Angular sono due progetti rispettivamente di Facebook e Google. Il budget e il tempo messi a disposizione da queste rinomate realtà, ha fatto sì che i loro framework fossero sempre supportati, che evolvessero e crescessero insieme alle community di riferimento. 


Quali sono i framework più popolari?

Nel 2019 stackoverflow ha condotto una ricerca su programmatori esperti di tutto il mondo, chiedendo quale fosse il framework per applicazioni web da loro utilizzato. 

Questa è la classifica sulla base dei risultati ottenuti:

  1. jQuery (48.3%)
  2. Angular/Angular.js (32.4%)
  3. React.js (32.3%)
  4. ASP.NET(27.2%)
  5. Express (19.5%)
  6. Spring (17.2%)
  7. Vue.js (15.5%)
  8. Django (12.3%)
  9. Flask (11.7%)
  10. Laravel (10.4%)
  11. Ruby on Rails (8.4%)
  12. Drupal (3.5%)
Un fatto curioso riguarda altre due classifiche stilate sempre da Starckoverkflow: pare che nella top 3 dei framework più temuti ci siano Drupal (69.9%), jQuery (54.7%) e Ruby on Rails (42.9%), mentre quelli più amati risultano essere React.js (74.5%), Vue.js (73.6%) ed Express (68.3%).
Di seguito, una lista dei framework più diffusi a seconda del linguaggio di programmazione con cui sono scritti:
  • Laravel / Symfony / Drupal —> PHP
  • Angular JS / React JS/ JQuery / Express / Vue.js —> Javascript
  • Spring —> Java
  • Django / Flask —> Python
  • Ruby on Rails —> Ruby
Quale framework scegliere?

Ma come scegliere il framework più adatto? Innanzitutto occorre interrogarsi sul tipo di applicazione e l’architettura desiderata (lato client, lato server). Poi, chiaramente, sulla scelta influisce anche il livello di conoscenza di programmazione che si possiede. 

Dal momento in cui quasi tutti i linguaggi di programmazione offrono più di un framework, la scelta potrà ricadere su uno o sull’altro in base alle loro caratteristiche. Abbiamo riassunto alcune delle peculiarità di React e Angular, per quanto riguarda Javascript, e di Laravel e Symfony, per quanto concerne il linguaggio PHP.

 Angular vs. React
 
ANGULAR REACT
si basa su TypeScript fa uso di ES6 o TypeScript
fa uso di una speciale sintassi utilizza JSX, un preprocessore di codice HTML like, così da rendere il codice JavaScript simile all’HTML
è omnicomprensivo, ovvero è completo di tutto ciò che serve per realizzare un’applicazione, dunque evita allo sviluppatore di dover integrare librerie esterne lascia allo sviluppatore la scelta e l’integrazione delle librerie
data binding bidirezionale data binding unidirezionale
curva di apprendimento lunga e ripida curva di apprendimento più semplice
Symfony vs. Laravel
Symfony Laravel
altamente flessibile sintassi elegante, coincisa ed espressiva
permette di impiegare tutte le componenti dell’intero framework o costruire un bundle con funzionalità desiderate produzione più rapida e semplice di compiti frequenti (lato server) come autenticazione utente, gestione sessioni ecc.
comprende un’unità di testing built-in per il monitoraggio delle proprie applicazioni  funzionalità pensate per lo sviluppo di app moderne
ha una community molto attiva che propone sempre aggiornamenti e miglioramenti può essere esteso tramite l’installazione di nuovi vendor
offre interfacce chiare e intuitive community molto numerosa e attiva, che mette a disposizione documenti, tutorial, risoluzione di problemi ecc.
routing semplice e pulito
Pubblicato il : 05/06/2020                                                                                                                                                                                                     
Scritto da: Luca Clemente