DotNext 2016: Між сьогоденням і майбутнім

Як повинна виглядати .NET-конференція в 2016-му, коли в .NET-світі відбувається тектонічний зсув? Очевидно, що (ASP).NET Core дуже сильно позначиться на життя розробників, але для більшості з них це відбудеться лише через значний час. Про що в такому разі розповідати — масштабних нововведення, які стануть актуальні пізніше, або більш звичних теми, які важливі тут і зараз?

Петербурзький «Літній фестиваль розробників», що складається з трьох конференцій поспіль, почався з DotNext 2016. Як там була дозволена виникла дилема, і як взагалі пройшов DotNext? За допомогою команди організаторів видно, що при всій хардкорності захід не обійшлося без літнього настрою, а всі інші подробиці — під катом.





Складно очікувати, що найпам'ятнішою деталлю на відкритті конференції стане назва завдання волонтера, але тут сталося саме так. Програмний директор Андрій Дмитрієв, кажучи про те, що спікери після своїх доповідей відправляються в експертну зону» (де відповідають на питання зацікавлених глядачів), уточнив, що для задачі «відвести спікера після доповіді» у волонтерів навіть є спеціальна роль. І називається вона так: «буксирувальник доповідача».



Звучить кумедно, але в той же час показовий момент: це відповідає на питання «навіщо ходити на конференції, коли можна і в інтернеті все дізнатися». Можливість задати питання в кулуарах завжди була перевагою особистої присутності, а коли для цього ще і створені всі умови, з виділеною експертної зоною і дошками для ілюстрацій, можна отримати від заходу ще більше.

Після відкриття був keynote від Дмитра Сошнікова (Microsoft) «Скільки життів .NET». Почавши з ностальгії (на екрані з'явився навіть код на COBOL) і дійшовши до майбутнього (зразок локальних функцій в C# 7), в процесі він влаштував шоу: за допомогою Microsoft Band виміряв свій пульс («тут різко впав, зазвичай це говорить про смерть доповідача, але не в цьому випадку»), а з допомогою Microsoft Cognitive Services розпізнавав власні емоції за виразом обличчя («щасливим у мене краще виходить, ніж сумним»).



Частина виступу була присвячена «розвінчання міфів про Microsoft». Не дивно, що євангеліст компанії відстоював її правоту в спірних питаннях, але його аргументи сподобалися залу. Наприклад, заперечуючи тезу «Microsoft змушує розробників постійно переучуватися», він підкорив аудиторію фразою «Не Microsoft такий, життя таке» (сміх сміхом, але не посперечаєшся: переучуватися не доводиться тільки там, де немає прогресу). А потім добив слайдом «Тим часом у паралельній всесвіту», на якому були просто перераховані популярні JavaScript-фреймворки: порівняно з цим постійно мінливих зоопарком .NET-світ і справді може виглядати тихою гаванню.



Потім всі розділилося на різні зали, і тут стало ясно, як революційність і повсякденність можуть співіснувати в рамках однієї конференції: їм просто були віддані різні треки, так що кожен відвідувач міг вибрати для себе, що йому важливіше.

З головної сцени англомовні спікери (Моріс де Бейер, Діно Еспозіто, Адам Ситник) говорили про те, що для .NET-світу означає перехід до (ASP).NET Core. Вийшов зал для тих, хто хоче вже сьогодні бути готовим до викликів завтрашнього дня.



Третій зал спочатку окупували спікери від JetBrains з серією доповідей про свою нову IDE Rider (нещодавно вони вже коротко розповідали нам про неї, а тут змогли розповісти детальніше). Оскільки проект ще не дійшов до релізу, виходило теж про майбутнє, але більш близьке. Завдяки Early Access Program при бажанні його можна використовувати, а в числі перших користувачів є самі JetBrains, використовують Rider для розробки Rider. Це пояснює, чому їх продукти так люблять: можна ефективніше мотивувати розробника вдосконалювати продукт, ніж коли він на власній шкурі відчуває будь-які недоліки?



А в другому залі в цей час були доповіді про кодогенерации, оптимізації та динамічному прототипировании — тобто мова йшла про те, від чого можна отримувати практичну користь тут і зараз, не чекаючи світлого майбутнього.



Цікаво, наскільки по-різному звучали доповіді про ASP.NET Core. Моріс де Бейер спокійно констатував факти: .NET у його звичному вигляді перестав відповідати запитам часу, так що тепер все стане модульнее і кроссплатформеннее (не дивно: коли Azure став багато значити для Microsoft, жорстка прив'язка до Windows почала заважати отримувати клієнтів).



А ось Діно Еспозіто використовував на всю котушку свою саркастичность, описуючи ситуацію «Microsoft спочатку влаштовує революцію, а вже потім раптово замислюється, які проблеми виникнуть у лояльних клієнтів з legacy code». У його виконанні гіпотетичний діалог про міграції великого проекту виглядав так жваво, що глядачі чудово зрозуміли суть останньої репліки, яку він зобразив беззвучно:

— Скільки нам буде потрібно вкласти?
— Мільйон доларів і рік роботи.
— А заради чого?
— Щоб робити те, що зараз.
— ...!



Раптові зміни на стадії release candidate дійсно виглядають дивно. Але це не означає, що Microsoft робить поганий продукт, і Діно такого і не казав. Він заявляв лише, що до стадії «по-справжньому підходить для продакшена» справа дійде лише через пару років. Як він єхидно зауважив в кінці виступу, «це добре поєднується з загальною політикою Microsoft: їх продукти не варто використовувати до третьої версії». Судячи по гучності сміху в залі, для дуже багатьох з присутніх Windows коли почалася з 3.x.



Еспозіто змінив Саша Гольдштейн (Sela Group) з виступом про PerfView. Це був вже третій поспіль доповідь англійською мовою, а всього за день таких у головному залі виявилося цілих п'ять: на цій конференції можна було не занудьгувати, навіть взагалі не знаючи російської. Як показали відгуки глядачів про доповіді Гольдштейна, багато зробили для себе практичну користь, вперше ознайомившись з інструментом і відразу ж захотівши застосовувати його.



А пізніше в іншому залі він виступав з темою «The C++ and CLR Memory Models», і в цьому випадку відгуки виявилися ще восторженнее: багатьма була відзначена здатність «говорити просто про складне». В результаті в топ-10 доповідей DotNext (згідно з глядацьким оцінками) один і той же доповідач взяв і «золото» і «бронзу»:

  1. Sasha Goldshtein — The C++ and CLR Memory Models
  2. Dino Esposito — ASP.NET Core 1.0: Challenges and Opportunities
  3. Sasha Goldshtein — PerfView: Measure and Improve Your App's Performance For Free
  4. Андрій Акіньшин, Юлія Цісик, Анатолій Куркулів — Поговоримо про арифметику
  5. Дмитро Сошників — Скільки життів .NET: розмірковуємо про долю коханої платформи
  6. Сергій Щегрикович — ETW .Net розробників
  7. Ігор Чевдарь — Кодогенерация для оптимізації
  8. Дмитро Іванов — Реактивне многопроцессное взаємодія: JetBrains Rider Framework
  9. Ігор Лабутін — Діагностуємо WCF
  10. Віталій Баум — Практичні приклади створення Микросервисов


Тим часом у другому залі Ромуальд Здебский (Microsoft) говорив про іграх, і виникало питання «наскільки доповідь актуальне конкретно на цій конференції». Здебский використовував ефектні відеоролики новітніх ігор на зразок Deus Ex: Mankind Divided, але це AAA-тайтли, великий геймдев, великі західні компанії — а міг щось отримати для себе звичайний російський .NET-розробник? Як виявилося, міг.



По-перше, доповідь звертав увагу на те, що нескладні ігри (наприклад, 2D) можна робити з допомогою Xamarin — так що можна спробувати зробити що-то відразу для всіх мобільних платформ, при цьому, не стикаючись з високим порогом входу. А по-друге, говорилося, що навіть у більш амбітний проект можна зрізати кути: взявши движок Unity і купивши моделі в офіційному магазині, створити повноцінну гру без освоєння багатьох речей.



Мимохідь було згадано рішення Microsoft відкрити платформу Windows Holographic (використовувану в HoloLens). Прямо зараз це на розробниках не позначається, але в перспективі новина хороша: якщо ринок VR/AR виявиться більшим, то буде добре писати код відразу для великої користувацької бази AR-пристроїв від різних виробників. До речі, в перервах конференції можна було оцінити перспективи VR/AR на власному досвіді і вестибулярному апараті: атракціон з DK2-версією Oculus Rift без діла не стояв.



Післяобідній доповідь в головному залі, хоча був зовсім не про Core, теж опинився у форматі «навряд чи необхідно вам для поточного проекту, але взагалі-то варто знати». Андрій Акіньшин (JetBrains) представляв паззлеры, пов'язані з арифметикою, і відкривав залу нове в, здавалося б, самих базових операціях. Перший приклад, «Write(0.1 + 0.2 == 0.3);», навряд чи здивував багатьох тим, що відповіддю виявилося false (широко відомо, що операції з плаваючою точкою підкидають такі сюрпризи). Але от далі приводів помилитися виникало багато — наприклад, виявлялося, що начебто очевидний вираз призводить до несподіваних результатів у специфічній конфігурації. А як по-вашому, який з варіантів вірний ось тут?



Потім дві доповіді поспіль — від Микити Цуканова (ProMarket) та Моріса де Бейєра — були присвячені Docker. Як зауважив Моріс, назву проекту та логотип вибрано дуже вдало: аналогія з завантаженням контейнерів на морські судна відмінно пояснює його користь. Коли на кораблі все вантажили «як є» (наприклад, окремими бочками), і це призводило до «проблем сумісності»: як розташувати їх так, щоб влізло як можна більше, і при цьому все не звалилось? З появою транспортних контейнерів строго фіксованого розміру, що гарантовано сумісних один з одним, життя помітно спростилася, і навантаження кораблів стала набагато ефективніше. Docker дозволяє досягти приблизно того ж.

А Цуканов, перераховуючи оточення для деплоя, звертав увагу на те, що потреба в кроссплатформенности починається вже всередині команди розробників: «фронтэндщики сидять з джаваскриптом за своїми макбуками, вони цю нашу вінду в труні бачили». Відразу хотілося дочекатися HolyJS і почути, чи будуть у своїх доповідях згадувати Docker самі «фронтэндщики з макбуками».



Нарешті, в останньому слоті була доповідь Романа Неволіна (WaveAccess) про машинному навчанні. Тут, як і у випадку з доповіддю про іграх, виникало питання «релевантно це для аудиторії»: нехай за цим майбутнє, але чи має це значення конкретно для присутніх? І тут доповідач пояснював, що має: коло завдань, для яких машинне навчання може стати в нагоді, досить широкий, а поріг входу нижче, ніж можна припустити. Щоб не бути голослівним, Неволін демонстрував його застосування для такої нагальної задачі, як розпізнавання спаму в потоці вхідних повідомлень. Особливо запам'ятовувалася фраза «метод наукового тику — це основа машинного навчання, він врятує нас».



За словами Романа, машинне навчання насамперед корисно у таких випадках:
1. Коли алгоритм важко описати в коді, але легко пояснити людині.
2. Коли намагаєшся передбачити зміни (наприклад, курси акцій).
3. Коли алгоритм повинен удосконалюватися за рахунок накопичення даних.

Цікаво дізнатися в коментарях: те, над чим ви працюєте зараз, доводиться стикатися з завданнями, які підпадають під ці описи і в яких машинне навчання могло б допомогти?

На цьому конференція закінчилася (тих, кому хочеться ще, чекаємо в грудні на московському DotNext). Зате не закінчився «Літній фестиваль розробників»: попереду залишалися Mobius мобільного розробці та HolyJS про JavaScript, і про них розповімо в наступних текстах.


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.