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, и о них расскажем в следующих текстах.

    JUG.ru Group 1 299,48
    Конференции для взрослых. Java, .NET, JS и др. 18+
    Поделиться публикацией
    Похожие публикации
    Комментарии 17
    • 0
      Возможные ответ к упражнению 5:

      ru.wikipedia.org/wiki/Округление

      Математическое округление — округление всегда в бо́льшую по модулю сторону (предыдущий разряд всегда увеличивается на единицу).
      Банковское округление (англ. banker's rounding) — округление для этого случая происходит к ближайшему чётному, то есть 2,5 → 2, 3,5 → 4.

      То есть в любом случае ответ C?
      • +2
        Чтобы не спойлерить здесь словами о том, правильный ли это ответ, сошлюсь на презентацию Акиньшина — там можно и на этот паззлер ответ увидеть, и другие порешать.
        • +2
          Напишу тут вот что (не говорящее, правильный ли ответ): но если «предыдущий разряд всегда увеличивается на единицу» и из -1.5 получается -2, то ведь тогда из -0.5 должно получаться -1, а не 0 (то есть вариант B, а не C), разве нет?
          • 0
            .
            • 0
              Во-первых давно придумали такую замечательную вещь,
              как
              спойлеры

              Во-вторых если вы присмотритесь, то человек говорил про два вида округлений.
              Я почти уверен, что
              правильный ответ
              Это С, т.к. идет округление до ближайшего четного. Насколько я помню, это связано с ошибками округления, которые при округлении всегда в одну сторону накапливаются, а в результате такого вот трюка частично взаимно компенсируются
              • 0
                Про спойлеры забыл, да, спасибо.

                Про «два вида округлений» — так человек при этом предполагал, что «в любом случае ответ C», то есть что оба упомянутых им вида округлений приведут к одному и тому же результату. На это я и возражал.
          • +1
            Говоря про окружение для деплоя, интересно было бы обратить внимание, что для некоторых дистрибутивов ситуация ухудшается. Например, имеющаяся и так древняя версия mono 2.10.8 в Astra Linux 1.3, вообще исчезла к версии 1.4.
            Java и Python же, наоборот увеличили своё присутствие. Это может быть актуально для нашей страны.
            Сравнение пакетов: lab50.net/wp-content/uploads/se13-se14.html
            • +1
              Смотрели конференцию онлайн, но не всё удалось посмотреть.
              Когда будут доступны видео докладов? Нигде информации найти не удалось.
              • 0
                Обычно примерно месяц уходит на обработку всех видео, если судить по прошлым конфам.
                • +1
                  Видеозаписи уже доступны тем участникам конференции (и онлайн-участникам в том числе), которые заполнили форму обратной связи.
                  Если вы не оставляли свой отзыв в анкете — значит, для вас видеозаписи, как и для всех остальных, будут в открытом доступе осенью :).
                  • 0
                    У нас компания это организовывала, и фидбек нашей организации я оставил :)
                    Про форму обратной записи ничего не говорили, значит буду наших «огранизаторов» пытать.
                    Спасибо
                    • +1
                      Напишите, пожалуйста, мне на почту: yana@jugru.org — да пребудет с вами форма обратной связи :).
                      • 0
                        Спасибо, форму заполнил.
                        Очень рад что успел, до закрытия анкеты :)
                        • 0
                          А есть ещё возможность заполнить форму или уже поздно? А то ссылки на опрос никакой не было =(
                          • 0
                            Поправка: коллеге приходила ссылка (причём только одному) и он заполнял, но ссылку на видео не прислали.
                  • 0
                    Если не секрет, что вам помешало картинки нормального размера вставить, а не ужимать ее браузером? Они ж 1920 по ширине, а на сайте дизайн их до 1000 по ширине уменьшил, получились очень корявые артефакты.

                    image

                    Чес-слово, интересный рассказ и прямо видимые косяки картинок очень диссонируют.
                    • 0
                      Я помнил, что Habrastorage автоматически уменьшает большие картинки, и всегда думал, что до стандартной хабровской ширины, а только после вашего комментария понял, что до 1920. Спасибо, что обратили внимание.

                      Сейчас уменьшил первую до 1000, перезалил — артефакты пропали, но при этом она почему-то поблёкла. Буду разбираться)

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое