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

Поделиться с друзьями
-->

Комментарии (15)


  1. MindVersal
    15.06.2016 12:12

    Возможные ответ к упражнению 5:

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

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

    То есть в любом случае ответ C?


    1. phillennium
      15.06.2016 12:18
      +2

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


    1. phillennium
      15.06.2016 12:49
      +2

      Напишу тут вот что (не говорящее, правильный ли ответ): но если «предыдущий разряд всегда увеличивается на единицу» и из -1.5 получается -2, то ведь тогда из -0.5 должно получаться -1, а не 0 (то есть вариант B, а не C), разве нет?


      1. justmara
        15.06.2016 23:48

        .


      1. PsyHaSTe
        23.06.2016 14:44

        Во-первых давно придумали такую замечательную вещь,

        как
        спойлеры


        1. phillennium
          23.06.2016 17:12

          Про спойлеры забыл, да, спасибо.

          Про «два вида округлений» — так человек при этом предполагал, что «в любом случае ответ C», то есть что оба упомянутых им вида округлений приведут к одному и тому же результату. На это я и возражал.


  1. e23fx
    15.06.2016 14:07
    +1

    Говоря про окружение для деплоя, интересно было бы обратить внимание, что для некоторых дистрибутивов ситуация ухудшается. Например, имеющаяся и так древняя версия mono 2.10.8 в Astra Linux 1.3, вообще исчезла к версии 1.4.
    Java и Python же, наоборот увеличили своё присутствие. Это может быть актуально для нашей страны.
    Сравнение пакетов: lab50.net/wp-content/uploads/se13-se14.html


  1. werwolfby
    15.06.2016 14:16
    +1

    Смотрели конференцию онлайн, но не всё удалось посмотреть.
    Когда будут доступны видео докладов? Нигде информации найти не удалось.


    1. VMAtm
      15.06.2016 15:32

      Обычно примерно месяц уходит на обработку всех видео, если судить по прошлым конфам.


    1. yegelletezeta
      15.06.2016 17:09
      +1

      Видеозаписи уже доступны тем участникам конференции (и онлайн-участникам в том числе), которые заполнили форму обратной связи.
      Если вы не оставляли свой отзыв в анкете — значит, для вас видеозаписи, как и для всех остальных, будут в открытом доступе осенью :).


      1. werwolfby
        15.06.2016 17:14

        У нас компания это организовывала, и фидбек нашей организации я оставил :)
        Про форму обратной записи ничего не говорили, значит буду наших «огранизаторов» пытать.
        Спасибо


        1. yegelletezeta
          15.06.2016 18:32
          +1

          Напишите, пожалуйста, мне на почту: yana@jugru.org — да пребудет с вами форма обратной связи :).


          1. werwolfby
            15.06.2016 19:16

            Спасибо, форму заполнил.
            Очень рад что успел, до закрытия анкеты :)


  1. dmitry_ch
    15.06.2016 15:24

    Если не секрет, что вам помешало картинки нормального размера вставить, а не ужимать ее браузером? Они ж 1920 по ширине, а на сайте дизайн их до 1000 по ширине уменьшил, получились очень корявые артефакты.

    image

    Чес-слово, интересный рассказ и прямо видимые косяки картинок очень диссонируют.


    1. phillennium
      15.06.2016 15:49

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

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