Ho fatto la programmazione web da molto tempo ormai, e da qualche parte, ho perso la traccia 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 pagina e la logica di business erano miste nella pagina. Lo sviluppo sul lato client è variato notevolmente (VBScript, diverse versioni di JavaScript) e abbiamo ricevuto molti avvisi sulle convalide lato server (e quindi sono rimasto lontano dalla logica lato client).
Mi sono quindi trasferito a ColdFusion per un po '. ColdFusion è stato probabilmente il primo framework di sviluppo web che ha separato la logica di visualizzazione e di business utilizzando i loro tag. Mi è sembrato molto chiaro, ma molto dettagliato, e ColdFusion non era molto richiesto dal mercato, e così sono passato.
Ho quindi saltato sul carro a banda ASP.NET e ho iniziato a utilizzare il loro approccio MVC. Mi sono anche reso conto che Java sembrava essere un linguaggio torre d'avorio di sistemi aziendali e ho 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ù l'eccitazione e il progresso. Inoltre, le pratiche MVC basate sul lato server sembrano essere obsolete (le persone usano davvero più JSTL?). Oggi, nella maggior parte dei progetti in cui mi trovo, ho scoperto che i framework JavaScript e lo sviluppo lato client sono il luogo in cui vengono fatti tutti i progressi entusiasmanti e innovativi.
Perché si è verificato questo passaggio dallo sviluppo lato server a quello lato client? 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 back-end usando linguaggi di programmazione come Java o C # sia semplicemente quello di produrre un'interfaccia simile a REST e che tutto il duro sforzo di visualizzazione, visualizzazione, input / output dei dati, interazioni dell'utente, ecc ... siano stati affrontati tramite framework lato client come Angular, Backbone, Ember, Knockout, ecc ...
Durante l'era pre-jQuery, ho visto molti diagrammi in cui c'era una linea chiara e concettuale tra M, V e C in MVC nello sviluppo di livello n. Post-jQuery, dove sono disegnate queste linee? Sembra che MVC e MVVM siano tutti lì nel codice JavaScript, lato client.
Quello che voglio sapere è, perché abbiamo fatto una simile transizione (dall'enfasi della programmazione lato server a quella lato client, dal favorire i linguaggi compilati ai linguaggi di scripting, dalla programmazione imperativa a quella funzionale, tutto ciò sembra essersi verificato contemporaneamente ) e quali problemi ha risolto questa transizione / turno?