Я давно займаюся веб-програмуванням, і десь я втратив слідку, чому ми робимо те, що робимо сьогодні (або як ми прийшли робити такі речі)?
Я почав з базової веб-розробки ASP, і дуже рано на сторінці змішалися дисплей та бізнес-логіка. Клієнтська розробка дивовижно відрізнялася (VBScript, різні смаки JavaScript), і ми мали багато попереджень про перевірки на стороні сервера (і тому я тримався осторонь від логіки на стороні клієнта).
Потім я на деякий час перейшов до ColdFusion. ColdFusion був, мабуть, першою рамкою веб-розробки, яка розділяла дисплей та бізнес-логіку за допомогою своїх тегів. Мені це здалося дуже зрозумілим, але дуже багатослівним, і ColdFusion не користувався великим попитом на ринку, і тому я рухався далі.
Потім я стрибнув на універсал ASP.NET і почав використовувати їх підхід MVC. Я також зрозумів, що Java здається мовою вежі із слонової кістки в корпоративних системах, а також спробував їх підхід MVC. Пізніше ASP.NET розробив цю модель дизайну MVVM, і Java (саме J2EE або JEE) також боролася і вийшла зі своїми підходами MVC2.
Але сьогодні, що я виявив, це те, що бекенд програмування вже не є хвилюванням та прогресом. Крім того, практика MVC на базі сервера здається застарілою (чи справді люди вже використовують JSTL?). Сьогодні в більшості проектів, над якими я працюю, я виявив, що рамки JavaScript та розробка на стороні клієнта - це досягнення всіх захоплюючих та інноваційних прогресів.
Чому відбувся цей рух від розробки сервера до клієнта? Я зробив простий підрахунок рядків одного з моїх проектів JEE, і в JavaScript більше рядків коду, ніж у Java (за винятком сторонніх бібліотек). Я вважаю, що більшість розробок, що використовують мови програмування, такі як Java або C #, - це просто створити інтерфейс, схожий на REST, і що всі важкі зусилля для відображення, візуалізації, введення даних / виведення даних, взаємодії користувачів тощо ... за допомогою клієнтської системи, наприклад кутовий, магістральний, вугільний, нокаут тощо.
Протягом епохи до jQuery я побачив безліч діаграм, де була чітка, концептуальна лінія між M, V та C в MVC в n-ярусному розвитку. Post-jQuery, куди малюються ці рядки? Здається, MVC і MVVM все там у коді JavaScript на стороні клієнта.
Що я хочу знати, чому ми зробили такий перехід (від акценту на серверному програмуванні до клієнтської, від переваги компільованих мов до мов скриптів, від імперативного до функціонального програмування, все це, здається, відбулося одночасно ) і які проблеми вирішив цей перехід / зсув?