Le nostre competenze a vostra disposizione sul blog
Amiamo il nostro lavoro e vogliamo condividerlo con voi! Tenetevi aggiornati su tutte le news e le tecnologie con le quali lavoriamo e di cui potreste avere bisogno! Seguite il nostro blog.
×

Error message

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
enrico.gramellini's picture

Le caratteristiche dello sviluppo tecnologico avvenuto in questi ultimi anni hanno permesso alle tecnologie web di fare un notevole passo avanti in termini di evoluzione.
Tale sviluppo ha contribuito più in generale anche al mutamento dei sistemi software, in quanto essi potenzialmente possono essere distribuiti su un ampio panorama di dispositivi spesso molto differenti tra loro.
Le evoluzioni delle tecnologie web quindi non riguardano solamente i linguaggi di programmazione, ma spaziano anche tra le piattaforme software e le architetture ed i modelli di riferimento utilizzati per la realizzazione di sistemi software moderni.


Evoluzione di architetture e modelli di riferimento

Per quanto riguarda le architetture ed i modelli di riferimento, ogni sistema software fondamentalmente presenta caratteristiche che lo orientano verso una particolare architettura piuttosto che un’altra. Allo stato attuale la maggior parte dei sistemi software moderni presentano un'architettura orientata ai servizi (SOA), la quale si basa sul modello di riferimento client/server evoluto (cioè con distribuzione delle risorse e della computazione su entrambi gli strati) e trova nell'architettura REST la sua implementazione più diffusa, grazie agli efficaci principi di progettazione che permettono il raggiungimento di ottimi risultati.


Evoluzione delle tecnologie

Il processo evolutivo dei linguaggi e delle piattaforme invece è in costante progresso e se fino a qualche anno fa c'era una netta distinzione tra tecnologie server side e client side, oggi è possibile realizzare sistemi software utilizzando tecnologie omogenee per entrambi gli strati. Grazie alla piattaforma Node.js ad esempio è possibile realizzare un sistema software che presenta application servers e client applications realizzate completamente con linguaggio JavaScript: i vantaggi sono notevoli e si possono individuare in termini di riusabilità e manutenzione del codice, miglioramento delle performance dal lato server (sfruttando la programmazione asincrona), minori conoscenze tecniche richieste, ecc…
Come dice un famoso proverbio però non è tutto oro quel che luccica, in quanto il linguaggio javascript non è un linguaggio ritenuto adatto per la realizzazione di applicazioni altamente strutturate. Per sua natura, essendo un linguaggio di scripting, presenta caratteristiche che ne limitano le potenzialità, come la tipizzazione completamente dinamica e la mancanza di un forte supporto alla programmazione orientata agli oggetti.


Nuovi linguaggi

Una soluzione ai punti deboli di JavaScript è stata proposta dall'ente ECMA nell'ultima versione del linguaggio standard ECMAScript sul quale JavaScript pone le proprie radici; tali nuove features presenti nello standard però non potranno essere portate in tempi brevi su JavaScript a causa di diverse problematiche. Per questo motivo aziende come Google e Microsoft hanno approfittato di questa "occasione" per proporre nuovi progetti atti a risolvere fin da subito questi problemi emergenti, ma soprattutto per conquistare quella fetta di mercato dello sviluppo software finora dominata da JavaScript.

Google nell'ottobre 2011 ha rilasciato Dart ed esattamente un anno dopo Microsoft ha rilasciato TypeScript: questi due progetti hanno in comune caratteristiche come la tipizzazione statica opzionale, un forte supporto alla programmazione orientata agli oggetti e la natura di linguaggio compilato, ma la differenza fondamentale che presentano è che il Dart è stato progettato ex-novo. Invece TypeScript si pone come "superset" di JavaScript, essendo pienamente retro-compatibile con la sua sintassi e di conseguenza con qualsiasi porzione di codice realizzato con tale linguaggio. Il target dello sviluppatore web moderno, soprattutto per quanto riguarda lo sviluppo lato client, presenta per una buona percentuale un'esperienza anche minima con il linguaggio JavaScript e di conseguenza questa differenza ha contribuito al raggiungimento di un maggiore successo di TypeScript nei confronti di Dart. Nonostante abbia un anno in meno di vita, la conoscenza del linguaggio JavaScript nel caso di TypeScript si traduce in un processo nullo, poichè estremamente simili. Infatti la compatibilità con la sintassi JavaScript pone TypeScript pienamente all'interno del suo mondo, composto da un ampio parco di librerie, ma soprattutto da una vasta comunità di sviluppatori al supporto dello sviluppo. Di conseguenza le applicazioni sviluppate in JavaScript potranno essere convertite in TypeScript senza perdite di tempo, potendo sfruttare le sue potenzialità al fine di evolvere tali applicazioni in versioni con una migliore strutturazione, riusabilità e manutenzione.


Nuovi linguaggi e piattaforme

Un aspetto di fondamentale importanza legato alle nuove tecnologie web (Dart e Typescript) riguarda la compatibilità con le piattaforme nelle quali dovranno essere eseguiti i sistemi software realizzati con esse. Innanzitutto questo aspetto sottolinea un'altra differenza esistente tra i due linguaggi, in quanto Dart presenta un proprio ambiente runtime in grado di eseguire sistemi software con performance nettamente migliori rispetto a JavaScript, mentre TypeScript non possiede questa possibilità.
Entrambi i linguaggi però, a livello di compilazione, offrono la possibilità di convertire il codice sorgente in JavaScript così da essere compatibili con le piattaforme nelle quali è presente un ambiente runtime per JavaScript: tale conversione nel caso di TypeScript presenta però minimi cambiamenti rispetto al codice sorgente e in questo caso si presenta un vantaggio in termini di leggibilità del codice generato.
Prendendo quindi come riferimento la piattaforma Web, la presenza di un proprio ambiente di runtime in Dart attualmente non rappresenta un vero e proprio vantaggio. Tra i principali browser solamente Chrome lo installa, quindi è necessario fare ricorso alla conversione in JavaScript per tutti gli altri browser.
Per quanto riguarda le piattaforme mobile, attualmente tra le più diffuse, la compatibilità con applicazioni sviluppate con tecnologie web è vincolata all'utilizzo di tecnologie come ad esempio PhoneGap che si occupano della conversione del codice sorgente (vincolato ad essere realizzato in questo caso con JavaScript+HTML+CSS) in codice compatibile con le piattaforme in questione; in questo caso l'utilizzo di Dart o TypeScript è da valutare tenendo in considerazione eventuali vincoli imposti da PhoneGap (o altre tecnologie simili utilizzate).
La tendenza, ultimamente, è quella di avvicinare il target dello sviluppatore Web sempre di più alle piattaforme mobile; a tal proposito sono nati progetti come Tizen, BlackBerry 10, ecc… atti a rendere compatibili nativamente applicazioni realizzate con tecnologie Web.
Anche in questo caso TypeScript si troverebbe ancora una volta in vantaggio nei confronti di Dart, il cui successo continuerà a dipendere dalle politiche di mercato attuabili per diffondere il suo ambiente runtime con elevate performance.

Aggiungi un commento

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.