Лишнее подтверждение тому, как стремителен мир JavaScript: всего лишь полгода назад, когда конференция HolyJS проходила в Москве, актуален был Angular 2, а теперь к петербургской успел выйти Angular 4. Будем считать, что существовал ещё и третий, но мы моргнули и пропустили его!
Раз всё так быстро меняется, то что было на самой конференции по сравнению с предыдущей? Как выступил именитый Дуглас Крокфорд? О чём были другие заметные доклады? Всё это — под катом.
Первое значимое отличие — организационное. Конференция стала двухдневной, не пытаясь затолкать в сетку максимально возможное число докладов, а вместо этого предоставив получасовые перерывы: можно было и как следует расспросить спикеров в дискуссионных зонах, и поучаствовать в активностях на стендах спонсоров, и обсудить друг с другом наболевшее.
Кстати, о стендах спонсоров — в этот раз всё прошло с размахом. Стендов не просто было много, вокруг них ещё и непрерывно что-то происходило. Кажется, больше всего внимания привлекли ВКонтакте, устроив конкурс по правилам «Code in the Dark». Соперники верстали страницу по заданному макету «вслепую», им не виден был результат собственных действий — зато всем зрителям был виден и результат, и код. Подробнее о происходящем писали на официальной странице конкурса (и неудивительно, что эта страница — ВК-паблик).
А что до самих докладов, ради которых все и собрались? Два дня целиком не пересказать, но отметим некоторые моменты.
Дуглас Крокфорд выступил два раза — с открывающим кейноутом и с докладом «Goto There and Back Again». Изначально предполагалось, что кейноутом станет «The Post JavaScript Apocalypse» (уже известный по зарубежным конференциям), но в итоге получилось ещё интереснее: зрители увидели совсем свежий материал «Numbers».
Что в нём было? Разговор о числах Дуглас завёл совсем издалека, с числа пальцев на руках и египетской системы счисления, а до JavaScript добрался очень нескоро (со словами «то, что в JS только один тип для чисел, спасает нас от целого ряда ошибок — но, к сожалению, это неправильный тип»).
Это всё может показаться излишне отвлечённым — часто ли в работе нам требуется думать о том, как с числами обращались тысячи лет назад? Но не сделав этот шаг назад и не увидев большую картину, вряд ли можно понять, как стоит двигаться вперёд. А Дуглас перешёл именно к будущему, где с числами могут начать обращаться иначе — например, используя формат DEC64, предложенный самим Крокфордом для «языков программирования следующего поколения». Как он признавал, в JavaScript это уже не добавить, но «не можем же мы оставить нашим детям JavaScript, это было бы ужасно».
Мартин Сплитт стал уже регулярным героем HolyJS. В декабре зрителям московской конференции очень понравилось его выступление о WebVR, а теперь он выступал с темой «Rendering performance from the ground up». Это было резким контрастом: вместо того, чтобы заглядывать в увлекательное будущее с новыми интересными устройствами, в этот раз он начинал с «низов» — потому что в настоящем в многих пользователей не такие мощные устройства, как хотелось бы, и думать о цене отображения любых элементов по-прежнему приходится.
Но кое-что у Сплитта осталось неизменным: во-первых, вкрапления русскоязычных слов (к этому разу он успел научиться даже не очень хорошим словам), во-вторых, очень положительная реакция аудитории (разумеется, особенное оживление вызвало нехорошее слово). Кстати, сам он тем временем предлагает свою помощь российским джаваскриптерам, желающим выступать на английском:
Имад Эльяфи рассказывал об опыте миграции громадного сервиса на React, который он получил в Pinterest. Причём интересный опыт Имада этим не ограничивается: ранее он работал ещё и в Facebook, где React и появился. Поскольку он может сравнить, каково работать с React «внутри» и «снаружи» Facebook, сразу хотелось спросить его об этом. А поскольку в онлайн-трансляции HolyJS между докладами мы делали интервью со спикерами, там и спросили.
Ответ оказался таким: с одной стороны, в Facebook близость к создателям React действительно ощущается (поскольку офис — это «большой ангар», разные разработчики часто пересекаются друг с другом, и пообщаться с интересующей командой несложно). А с другой — сторонняя компания зачастую может позволить себе больше смелых решений при использовании React, чем сам Facebook. Неудивительно — в конце концов, сам Цукерберг уже отошёл от своего раннего девиза «Move fast and break things» к куда более осторожному «Move fast with stable infra».
Интервью делали и с Алексеем Ивановым (Evil Martians), на конференции рассказывавшим о внутреннем устройстве бандла webpack. И его как человека, активно залезавшего «внутрь» webpack, мы в числе прочего спросили: «А возникало ли при этом ощущение “что ж тут всё так, по уму ведь надо вот так”, и, если да, что хотелось бы изменить в первую очередь?» Алексей ответил, что ощущение, конечно, возникало, и больше всего его вызывал CSS loader: мол, сейчас он делает слишком много, и даже создатели webpack это признают.
Вообще слова «настройка webpack» ассоциируются у многих с неприятными и при этом неизбежными процедурами. Но Алексей Золотых, сравнивавший в докладе ECMAScript, TypeScript и Dart, замечал там, что как минимум один способ избежать этой боли существует: «Средств сборки для ECMAScript/TypeScript много разных, единственная проблема — их все тяжело конфигурировать. А у Dart всё просто: у него Pub, и он из коробки». В случае с пакетными менеджерами ситуация оказывалась похожей — единый «изкоробочный» вариант Dart против ряда доступных вариантов у ECMAScript и TypeScript, где даже npm перестал быть однозначным стандартом с появлением Yarn.
Помимо трёх перечисленных языков, у фронтендеров недавно появился ещё один вариант. Залим Башоров (JetBrains) рассказывал на HolyJS об использовании Kotlin во фронтенде, и на его докладе могли испытать дежа вю те, кому знаком Java-мир. Пару лет назад на конференциях по Java и Android можно было услышать «вступительные» доклады про Kotlin: «существует такой молодой Java-совместимый язык, который может понравиться вам больше Java, и вот его главные особенности вроде nullability». Прошло время, язык набрал обороты в Java-экосистеме, появилось множество использующих его разработчиков, и разговоры перешли от «он существует» к разбору более узких и конкретных вопросов — вроде реализации корутин.
А с недавним выходом версии Kotlin 1.1, где появилась компиляция в JavaScript, история пошла на новый виток: теперь уже джаваскриптеры слушали на HolyJS о главных особенностях молодого перспективного языка, который они могут использовать. Получится ли у JetBrains на новой территории выступить так же успешно? Окажется ли так, что на HolyJS 2019 уже будут разбирать конкретные детали для зрителей, активно использующих язык в продакшене? Гарантировать невозможно, но пока можно уверенно сказать следующее: послушать про Kotlin на HolyJS собралось немало зрителей, так что интерес к языку налицо.
JavaScript-мир часто ругают за то, что разработчики в нём зациклены на чужих решениях, гоняясь за новомодными фреймворками и подыскивая на каждый чих NPM-пакет. Когда это спровоцировало left-pad-катаклизм, на Хабре появился перевод текста с заголовком «Мы разучились программировать?», и есть немало ощущающих «Кажется, мы стали забывать, как вообще писать на самом JavaScript». Всех таких на конференции мог порадовать доклад Джейкоба Мэттсона «Forgotten funky functions»: он говорил именно о возможностях языка, оказавшихся незаслуженно подзабытыми.
Наконец, закрывала конференцию своим кейноутом Лиа Веру, бодро начавшая «Я с острова Лесбос, что технически делает меня географической лесбиянкой». Пока кто-то делит всех на «разработчиков-технарей» и «дизайнеров-гуманитариев», Лиа любит и код, и дизайн — настолько, что за час до выступления подправляла hex-коды цветов в своей презентации, чтобы цветопередача на проекторе максимально соответствовала задуманному.
И само выступление было соответствующим: она предложила посмотреть непосредственно на код с точки зрения UX/UI. «Мы привыкли считать, что UX — это что-то для дизайнеров. Но если открыть определения слов «usability», «UX» и «UI», они вообще-то не про дизайн, они куда шире». Как надо кодить API, чтобы получился хороший user experience? Лиа назвала множество составляющих — дойдя в конце до того, что нужно уметь быть не только профессионалом, но и непрофессионалом: «Мы привыкли изображать себя всё более хардкорными, но с точки зрения юзабилити это вообще-то вредит. Когда слишком много знаешь, перестаёшь понимать проблемы юзабилити. Это называется «проклятием знания»». Лиа выбилась из тайминга, задержав закрытие конференции — но судя по аплодисментам, многие зрители охотно слушали бы её ещё и ещё.
До новой встречи в Москве в декабре! Посмотрим, сколько версий Angular успеет выйти до неё.
Автор: phillennium