Entry tags:
Разумный консерватизм и изобилие
Лж-френд Никитонский в своём посте про полный абзац в вебе в смысле не просто поддержки стандартов, а вообще качества стандартов, немного иронически страдает.
В самом деле это не бардак и не анархия. Так выглядит изобилие.
Замечу, что изобилие – нисколько не менее хищный зверь, чем аскеза. Изобилие порождает удивительно привлекательные, захватывающие – и при этом очень расточительные артефакты. Обычно они прекрасны снаружи, но очень капризны изнутри. Причём капризность, как и в реальном мире, мало зависит от простоты или сложности артефакта. Пока не попробуешь – не узнаешь.
Скажем, мне лично несколько раз крупно не везло с синтаксисом «код внутри разметки». Вот php там, angular, handlebars и всё такое. Да, xslt ещё. Сначала просто и красиво, но чуть отвернёшься – и кровавое месиво с костылями.
Чтобы не попадать постоянно на такие артефакты, достаточно соблюдать разумный консерватизм и умеренность. На пёстрый хайп интересно посмотреть с балкона – но не обязательно же в него вливаться. Ну не прямо же сразу, как минимум. Тем более, у изобилия есть два приятнейших момента:
А) Полно стабильных и проверенных артефактов. Хочешь rich controls, нормальные event-ы и ajax, работающие на чём угодно всегда – юзай jquery. Хочешь pub/sub и не париться про сокеты, лонгполлы и пр – юзай сокетио. Хочешь нормальную локальную базу – юзай localforage или pouchdb. То-есть, по аналогии с HAL (hardware abstraction layer) эти артефакты можно назвать BAL – browser abstraction layer.
Фуллстэк инженер – это не когда ты все комбинации всех чудес попробовал, а когда можешь этот самый фуллстэк средних масштабов собрать снизу до верху. И чтобы было дёшево, не ломалось, а если ломалось – легко чинилось, без необходимости продираться через слои транспайлеров, полифиллов и пр.
Б) Под вновь открытую проблему быстро появляется простое и эффективное лекарство. То-есть потом, когда-нибудь, эта новая проблема может и будет побеждена и искоренена во всей экосистеме – но можно не ждать светлого будущего, а жить в реальном мире.
Прямо как в жизни: новая болезнь – новая прививка, но если есть секта, которая прививки не делает по религиозным принципам – ну жаль очень. Нет большой разницы между прозелитством чисто функционального подхода и отказом от прививок потому что не благославляется, или там надеванием шапочки из станиоля. Это всё глупости, и не всегда безвредные.
В общем, изобилие – комфортнейшее состояние экосистемы, если быть консервативным и избирательным, но прощать хорошим вещам небольшие несовершенства.
Но самый стресс, конечно, от безнадеги. Если на сервере ты работаешь на технологии и страдаешь, то ты знаешь, что рядом есть компании, который пишут на чем-то хорошем, и когда-нибудь ты там окажешься. <…> А на фронте не так. Логики нет, и надежды никакой нет.Я понимаю, но мнение не разделяю. Конечно, когда впервые в полный рост сталкиваешься со всем набором прелестей около-яваскриптной экосистемы, становится грустно. Кажется, что везде бардак, анархия и вообще «куда катится этот веб».
В самом деле это не бардак и не анархия. Так выглядит изобилие.
Замечу, что изобилие – нисколько не менее хищный зверь, чем аскеза. Изобилие порождает удивительно привлекательные, захватывающие – и при этом очень расточительные артефакты. Обычно они прекрасны снаружи, но очень капризны изнутри. Причём капризность, как и в реальном мире, мало зависит от простоты или сложности артефакта. Пока не попробуешь – не узнаешь.
Скажем, мне лично несколько раз крупно не везло с синтаксисом «код внутри разметки». Вот php там, angular, handlebars и всё такое. Да, xslt ещё. Сначала просто и красиво, но чуть отвернёшься – и кровавое месиво с костылями.
Чтобы не попадать постоянно на такие артефакты, достаточно соблюдать разумный консерватизм и умеренность. На пёстрый хайп интересно посмотреть с балкона – но не обязательно же в него вливаться. Ну не прямо же сразу, как минимум. Тем более, у изобилия есть два приятнейших момента:
А) Полно стабильных и проверенных артефактов. Хочешь rich controls, нормальные event-ы и ajax, работающие на чём угодно всегда – юзай jquery. Хочешь pub/sub и не париться про сокеты, лонгполлы и пр – юзай сокетио. Хочешь нормальную локальную базу – юзай localforage или pouchdb. То-есть, по аналогии с HAL (hardware abstraction layer) эти артефакты можно назвать BAL – browser abstraction layer.
Фуллстэк инженер – это не когда ты все комбинации всех чудес попробовал, а когда можешь этот самый фуллстэк средних масштабов собрать снизу до верху. И чтобы было дёшево, не ломалось, а если ломалось – легко чинилось, без необходимости продираться через слои транспайлеров, полифиллов и пр.
Б) Под вновь открытую проблему быстро появляется простое и эффективное лекарство. То-есть потом, когда-нибудь, эта новая проблема может и будет побеждена и искоренена во всей экосистеме – но можно не ждать светлого будущего, а жить в реальном мире.
Прямо как в жизни: новая болезнь – новая прививка, но если есть секта, которая прививки не делает по религиозным принципам – ну жаль очень. Нет большой разницы между прозелитством чисто функционального подхода и отказом от прививок потому что не благославляется, или там надеванием шапочки из станиоля. Это всё глупости, и не всегда безвредные.
В общем, изобилие – комфортнейшее состояние экосистемы, если быть консервативным и избирательным, но прощать хорошим вещам небольшие несовершенства.
no subject
Нет, меня печалят базовые технологии и вектор их развития. Что ни анонс, то плохо, криво и не в тему. Плюс это всё копится из-за обратной совместимости, т.е. всё что сейчас придумают будет с нами навсегда. Поэтому не будет проще, быстрее, а только медленнее и сложнее.
Примеры:
- Из JS делают язык вместо compilation target. Зачем?
- Зачем-то сделали классы, когда надо было всего-то починить прототипы
- Добавили Maps/Sets, но ключи у них опять только строковые, потому что нет equivalence semantics. Для set-ов это особенно смешно
- WebWorkes хорошо, но вещь в себе, т.к. выяснилось что данные туда и назад надо сериализовывать
- Что такое SSE и зачем он нужен, я так и не понял. При живом-то WebSocket. SSE еще и задизайнен по-идиотски, что его нужно именно парсить, даже если ты хочешь заюзать пришедшую строку как есть
- WebAssembly вместо compilation target стал средством трансляции C++
- WebComponents провалились
- CSS Grids это торжество каких-то частных случаев над общим подходом. И не очень понятно, кому он нужен
Это всё базовые вещи, возникшие за сколько? Последние 5 лет? И это всё бессмыслица какая-то. Мертвый груз. Я бы так не переживал, если бы это были мертворожденные библиотеки где-то там на NPM-е. Нет, это сразу в браузер. Поэтому мы уже молимся на те браузеры, что есть, и не ждем новых, быстрых, легких. Тупик
no subject
Ну есть уже compilation target, локальный процессор.
> Зачем-то сделали классы
Хехе, их не сделали, их типа чуть полирнули. По-хорошему, вся полировка заключается в том, что сначала в ES5 стало можно делать non-enumerable props, а в ES6 не ставить запятые. А так это всё никакие не классы, а просто сахар чтобы попаболь джавистов/сиплюсплюсеров ослабить. Ну типа вот садятся они за ненавистный яваскрипт – а им тут кривенькие, но классы же.
Очень гуманный жест, по-моему ггг
> Добавили Maps/Sets
Ну, Map очень даже юзабелен. Set – да, можно было бы и получше.
> CSS Grids
Вполне юзабельно – надо просто дать отстояться. Вот смотри, есть http://lesorub.pro/news например. Если её сделать по ширине меньше 1000 чтоли пикселей, галерея вверху перестроится. Сейчас это всё сделано яваскриптом, и довольно суровым. Я был бы счастлив делать это css-ом.
Остальное – нет мнения, пока мимо пролетает. WebWorkers кста по указанной тобой причине )
И всё равно, разнообразие – это хорошо. Накопившиеся усложнения в какой-то момент дают новый виток JIT-ам, рендер энджинам и пр. Ну пусть их. Чем-то надо же занимать новые процессоры, жирнеющую память, толстые каналы и пр.
no subject
Так как раз не дают. Типа, JIT смотрит, вот тут можно сделать красиво и быстро. А, блин, по спеке JS какой-нибудь дебил может влезть и в динамике все предположения разрушить, поэтому этой оптимизации не получает НИКТО
Как раз вчера на TED был чувак, который вскользь упомянул, почему его лаптоп с каждым годом медленнее и медленнее работает. Процессор же не старет, память не пылится, смазка не высыхает. Это, говорит, как ожирение: энергии тратится много, основное количество тратится, чтобы эту ожиревшую массу перемещать в пространстве.
no subject
no subject
Про SSE я тебе наврал – я сталкивался, когда делал covercouch, http://ermouth.livejournal.com/628697.html. CouchDB умеет отдавать таким манером свой changes feed – и гадость этот eventsource каэш редкостная.
no subject
> In December 2009, Google Chrome 4 was the first browser to ship full support for the standard, with WebSocket enabled by default
> On September 1, 2006, the Opera web browser implemented this new experimental technology in a feature called "Server-Sent Events"
> Это всё базовые вещи, возникшие за сколько? Последние 5 лет?
no subject