ermouth: (ang)
[personal profile] ermouth
Лж-френд Никитонский в своём посте про полный абзац в вебе в смысле не просто поддержки стандартов, а вообще качества стандартов, немного иронически страдает.
Но самый стресс, конечно, от безнадеги. Если на сервере ты работаешь на технологии и страдаешь, то ты знаешь, что рядом есть компании, который пишут на чем-то хорошем, и когда-нибудь ты там окажешься. <…> А на фронте не так. Логики нет, и надежды никакой нет.
Я понимаю, но мнение не разделяю. Конечно, когда впервые в полный рост сталкиваешься со всем набором прелестей около-яваскриптной экосистемы, становится грустно. Кажется, что везде бардак, анархия и вообще «куда катится этот веб».

В самом деле это не бардак и не анархия. Так выглядит изобилие.

Замечу, что изобилие – нисколько не менее хищный зверь, чем аскеза. Изобилие порождает удивительно привлекательные, захватывающие – и при этом очень расточительные артефакты. Обычно они прекрасны снаружи, но очень капризны изнутри. Причём капризность, как и в реальном мире, мало зависит от простоты или сложности артефакта. Пока не попробуешь – не узнаешь.

Скажем, мне лично несколько раз крупно не везло с синтаксисом «код внутри разметки». Вот php там, angular, handlebars и всё такое. Да, xslt ещё. Сначала просто и красиво, но чуть отвернёшься – и кровавое месиво с костылями.

Чтобы не попадать постоянно на такие артефакты, достаточно соблюдать разумный консерватизм и умеренность. На пёстрый хайп интересно посмотреть с балкона – но не обязательно же в него вливаться. Ну не прямо же сразу, как минимум. Тем более, у изобилия есть два приятнейших момента:

А) Полно стабильных и проверенных артефактов. Хочешь rich controls, нормальные event-ы и ajax, работающие на чём угодно всегда – юзай jquery. Хочешь pub/sub и не париться про сокеты, лонгполлы и пр – юзай сокетио. Хочешь нормальную локальную базу – юзай localforage или pouchdb. То-есть, по аналогии с HAL (hardware abstraction layer) эти артефакты можно назвать BAL – browser abstraction layer.

Фуллстэк инженер – это не когда ты все комбинации всех чудес попробовал, а когда можешь этот самый фуллстэк средних масштабов собрать снизу до верху. И чтобы было дёшево, не ломалось, а если ломалось – легко чинилось, без необходимости продираться через слои транспайлеров, полифиллов и пр.

Б) Под вновь открытую проблему быстро появляется простое и эффективное лекарство. То-есть потом, когда-нибудь, эта новая проблема может и будет побеждена и искоренена во всей экосистеме – но можно не ждать светлого будущего, а жить в реальном мире.

Прямо как в жизни: новая болезнь – новая прививка, но если есть секта, которая прививки не делает по религиозным принципам – ну жаль очень. Нет большой разницы между прозелитством чисто функционального подхода и отказом от прививок потому что не благославляется, или там надеванием шапочки из станиоля. Это всё глупости, и не всегда безвредные.

В общем, изобилие – комфортнейшее состояние экосистемы, если быть консервативным и избирательным, но прощать хорошим вещам небольшие несовершенства.

Date: 2017-04-10 03:35 am (UTC)
From: [identity profile] tonsky.livejournal.com
Немножко не так. За изобилие JS-экосистемы у меня не припекает, и даже left-pad по-моему довольно милая история. Вообще распределенный гигантский репозиторий reusable функций — крутая штука и возможно даже взгляд в будущее. Надо только технологическую платформу подтянуть. NPM, конечно, смешон.

Нет, меня печалят базовые технологии и вектор их развития. Что ни анонс, то плохо, криво и не в тему. Плюс это всё копится из-за обратной совместимости, т.е. всё что сейчас придумают будет с нами навсегда. Поэтому не будет проще, быстрее, а только медленнее и сложнее.

Примеры:

- Из JS делают язык вместо compilation target. Зачем?
- Зачем-то сделали классы, когда надо было всего-то починить прототипы
- Добавили Maps/Sets, но ключи у них опять только строковые, потому что нет equivalence semantics. Для set-ов это особенно смешно
- WebWorkes хорошо, но вещь в себе, т.к. выяснилось что данные туда и назад надо сериализовывать
- Что такое SSE и зачем он нужен, я так и не понял. При живом-то WebSocket. SSE еще и задизайнен по-идиотски, что его нужно именно парсить, даже если ты хочешь заюзать пришедшую строку как есть
- WebAssembly вместо compilation target стал средством трансляции C++
- WebComponents провалились
- CSS Grids это торжество каких-то частных случаев над общим подходом. И не очень понятно, кому он нужен

Это всё базовые вещи, возникшие за сколько? Последние 5 лет? И это всё бессмыслица какая-то. Мертвый груз. Я бы так не переживал, если бы это были мертворожденные библиотеки где-то там на NPM-е. Нет, это сразу в браузер. Поэтому мы уже молимся на те браузеры, что есть, и не ждем новых, быстрых, легких. Тупик
Edited Date: 2017-04-10 03:38 am (UTC)

Date: 2017-04-10 04:34 am (UTC)
From: [identity profile] ermouth.livejournal.com
> Из JS делают язык вместо compilation target. Зачем

Ну есть уже compilation target, локальный процессор.

> Зачем-то сделали классы

Хехе, их не сделали, их типа чуть полирнули. По-хорошему, вся полировка заключается в том, что сначала в ES5 стало можно делать non-enumerable props, а в ES6 не ставить запятые. А так это всё никакие не классы, а просто сахар чтобы попаболь джавистов/сиплюсплюсеров ослабить. Ну типа вот садятся они за ненавистный яваскрипт – а им тут кривенькие, но классы же.

Очень гуманный жест, по-моему ггг

> Добавили Maps/Sets

Ну, Map очень даже юзабелен. Set – да, можно было бы и получше.

> CSS Grids

Вполне юзабельно – надо просто дать отстояться. Вот смотри, есть http://lesorub.pro/news например. Если её сделать по ширине меньше 1000 чтоли пикселей, галерея вверху перестроится. Сейчас это всё сделано яваскриптом, и довольно суровым. Я был бы счастлив делать это css-ом.

Остальное – нет мнения, пока мимо пролетает. WebWorkers кста по указанной тобой причине )

И всё равно, разнообразие – это хорошо. Накопившиеся усложнения в какой-то момент дают новый виток JIT-ам, рендер энджинам и пр. Ну пусть их. Чем-то надо же занимать новые процессоры, жирнеющую память, толстые каналы и пр.

Date: 2017-04-10 05:01 am (UTC)
From: [identity profile] tonsky.livejournal.com
> Накопившиеся усложнения в какой-то момент дают новый виток JIT-ам, рендер энджинам и пр.

Так как раз не дают. Типа, JIT смотрит, вот тут можно сделать красиво и быстро. А, блин, по спеке JS какой-нибудь дебил может влезть и в динамике все предположения разрушить, поэтому этой оптимизации не получает НИКТО

Как раз вчера на TED был чувак, который вскользь упомянул, почему его лаптоп с каждым годом медленнее и медленнее работает. Процессор же не старет, память не пылится, смазка не высыхает. Это, говорит, как ожирение: энергии тратится много, основное количество тратится, чтобы эту ожиревшую массу перемещать в пространстве.

Date: 2017-04-10 05:04 am (UTC)
From: [identity profile] tonsky.livejournal.com
Чего-то недорассчитал в шапке, кстати

Edited Date: 2017-04-10 05:06 am (UTC)

Date: 2017-04-10 02:49 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Спасибо. Правило есть, но его другое правило перешибло. CSS же. С другой стороны, и правится за 1 секунду.

Про SSE я тебе наврал – я сталкивался, когда делал covercouch, http://ermouth.livejournal.com/628697.html. CouchDB умеет отдавать таким манером свой changes feed – и гадость этот eventsource каэш редкостная.

Date: 2017-04-10 07:15 am (UTC)
From: [identity profile] jamhed.livejournal.com
Про SSE хорошо, да. При живом то WebSocket.

> 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 лет?

Date: 2017-04-10 04:29 pm (UTC)
From: [identity profile] tonsky.livejournal.com
Косяк, да. Мне казалось, что интерес к SSE всплыл задолго после WebSockets

Profile

ermouth: (Default)
ermouth

July 2017

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526 272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 04:34 am
Powered by Dreamwidth Studios