Ho fatto programmazione web da molto tempo e, da qualche parte, ho perso la cognizione del perché stiamo facendo quello che stiamo facendo oggi (o come siamo arrivati a fare le cose in questo modo)?
Ho iniziato con lo sviluppo web ASP di base e, molto presto, la visualizzazione e la logica di business sono state mescolate nella pagina. Lo sviluppo sul lato client variava in modo incontrollato (VBScript, diversi tipi di JavaScript) e avevamo un sacco di avvertimenti sulle convalide sul lato server (e quindi non mi tenevo alla logica lato client).
Poi sono passato a ColdFusion per un po '. ColdFusion era probabilmente il primo framework di sviluppo web che separava la logica di visualizzazione e business utilizzando i propri tag. Mi è sembrato molto chiaro, ma molto prolisso, e ColdFusion non era molto richiesto dal mercato, quindi sono andato avanti.
Poi sono saltato sulla banda ASP.NET e ho iniziato ad usare il loro approccio MVC. Ho anche realizzato che Java sembrava essere un linguaggio tower avorio per i sistemi aziendali e ha anche provato il loro approccio MVC. Successivamente, ASP.NET ha sviluppato questo modello di progettazione MVVM e anche Java (precisamente J2EE o JEE) ha faticato ed è uscito con i suoi approcci MVC2.
Ma oggi, quello che ho scoperto è che la programmazione back-end non è più quella in cui l'eccitazione e il progresso sono più. Inoltre, le pratiche MVC basate sul lato server sembrano essere obsolete (le persone usano davvero JSTL più?). Oggi, nella maggior parte dei progetti in cui mi trovo, ho scoperto che i framework JavaScript e lo sviluppo lato client sono dove sono stati fatti tutti i progressi interessanti e innovativi.
Perché questo movimento dal server allo sviluppo client-side ha avuto luogo? Ho fatto un semplice conteggio delle righe di uno dei miei progetti JEE e ci sono più righe di codice in JavaScript che Java (escluse le librerie di terze parti). Trovo che la maggior parte dello sviluppo di backend che utilizza linguaggi di programmazione come Java o C # è semplicemente per produrre un'interfaccia simile a REST e che tutto il duro sforzo di visualizzazione, visualizzazione, input / output dei dati, interazioni dell'utente, ecc ... sono stati affrontati tramite il framework lato client come Angular, Backbone, Ember, Knockout, ecc ...
Durante l'era pre-jQuery, ho visto molti diagrammi in cui c'era una linea concettuale chiara tra M, V e C in MVC nello sviluppo a più livelli. Post-jQuery, dove vengono disegnate queste linee? Sembra che MVC e MVVM siano a posto nel codice JavaScript, lato client.
Quello che voglio sapere è, perché abbiamo fatto una tale transizione (dall'enfasi della programmazione lato server al lato client, dal favorire i linguaggi compilati ai linguaggi di scripting, dalla programmazione imperativa alla programmazione funzionale, tutti questi sembrano si sono verificati contemporaneamente) e quali problemi ha risolto questa transizione / cambiamento?