.NET-Хардкор в Москве

Конференция DotNext 2015 Moscow уже скоро! Мне посчастливилось быть в программном комитете этого замечательного мероприятия, так что я теперь в курсе закулисной деятельности: наблюдаю за общей организацией и помогаю готовить доклады. Организаторы долгими неделями трудятся с утра и до вечера, чтобы у вас была возможность на один день погрузиться в уникальную атмосферу: послушать крутые доклады, пообщаться с умными людьми, завести полезные знакомства, покушать вкусной еды, вдохновиться на великие свершения и просто хорошо провести время.

Впрочем, самым важным на конференции является не атмосфера, а контент. В этом году программа очень насыщенная: 22 докладчика (из которых 7 являются MVP) будут в 4 потока целый день рассказывать вам про .NET. Темы будут самые разные: есть доклады про новинки .NET-мира, про современные подходы и тенденции разработки ПО, про использование хороших библиотек/инструментов и про много чего ещё. Но моя любимая тема — это внутренности .NET, потроха рантайма и прочий хардкор. Мне кажется, что рано или поздно каждый сеньор разработчик приходит к осознанию того, что для разработки действительно сложных продуктов явно не помешает понимать, что же происходит под капотом наших программ. Увы, разбираться с этим самостоятельно зачастую долго и сложно: слишком уж много всего надо изучить. Поэтому с каждой следующей конференцией DotNext мы повышаем градус хардкора и пытаемся умудриться в течение одного дня загрузить в оперативную память разработчиков максимальное количество интересной и полезной информации о том, что же на самом деле делают наши приложения и как их лучше писать.

По долгу служебных обязанностей я уже послушал почти все доклады (каждый докладчик подвергается серии изнурительных прослушиваний, тренировок и тренингов с целью повышения качества материала и изложения), так что хорошо представляю, что же вас ждёт через две недели. А сегодня мне бы хотелось немного поговорить про доклады с тэгом hardcore. Если вы любите разбираться с рантаймом также, как люблю это я, то крайне рекомендую посетить шесть нижеприведённых докладов.

ee157a9e844a4d7b802c4be27a18b81e.png


Я очень рад, что в этом году мы смогли заполучить такого докладчика. Саша — автор очень клёвой книжки под названием «Pro .NET Performance», автор крутых курсов на Pluralsight, блоггер (беглого взгляды на его посты хватит для осознания того, что ему есть, о чём рассказать), MVP и просто замечательный человек. В этом году он привезёт нам сразу два доклада, один из которых будет про векторизацию. Тема в .NET-мире не такая уж и раскрученная, т. к. до недавнего времени не было нормальных возможностей для этой самой векторизации. Но теперь у нас есть .NET 4.6 и RyuJIT, которые позволяют резко поднять эффективность многих алгоритмов. Знания эти весьма полезные, так что если у вас руки ещё не дошли до того, чтобы нормально разобраться с System.Numerics.Vectors, то на этом докладе вы явно узнаете много нового и полезного.

fc262d9299c846c985cad31109e80dd8.jpg


В Java-мире люди любят обсуждать Java Memory Model. На эту тему мне очень нравятся выступления Алексея Шипелёва и доклады Алексея Фёдорова. Я очень долго ждал, когда же в .NET-мире подобная тема начнёт популяризироваться. И наконец-то дождался! К нам придёт Карлен szKarlen Симонян и прочитает восхитительный доклад на эту тему. Неделю назад он выслал мне свои слайды, с тех пор я каждый вечер перед сном открываю их, перечитываю и радуюсь.

Могу сказать, что там много слов типа race condition, acquire/release, volatile, store buffer, data alignment, spurious wakeup, false sharing, lock-free, atomics.net и не только. Во время доклада Карлен пополнит приведённый список важных терминов популярными объяснениями, а также приведёт показательные примеры, иллюстрирующие сложность современных процессоров. Уровень детализации материала и количество увлекательных фактов зашкаливают, так что если вам доводится работать больше, чем в один поток, то посещение доклада относится к разряду обязательных.

6d48c60187c64b3b8d50e94beed2b8cf.jpg


Generic-классы активно используются практически в любом .NET-проекте. Но многие ли из вас задумываются о том, что же скрывается за волшебной конструкцией ? Многие ли из вас ценят ту титаническую работу, которую каждодневно проделывает для нас JIT-компилятор, генерируя из удобочитаемых и лаконичных синтаксических конструкций тысячи ассемблерных инструкций? Если нет, то рекомендую сходить на доклад Александра. А ещё рекомендую почитать его блог, из него сразу становится понятно, что этот человек явно может многое рассказать про внутренности generic-классов.

598d7f74c06d4e3ba2a3fa7be31ac6bf.png


Слушать и читать про происходящее внутри ваших программ безусловно полезно, но ещё полезнее брать собственный код и начинать самостоятельно лезть внутрь, изучая ассемблерные листинги, таблицы методов и внутренние структуры сборщика мусора. Дело это сложное, но проведённые в дебаггере ночи дают уникальный опыт, который другими путями не приобрести. Если вы уделите данному занятию должное внимание, то впоследствии начнёте намного лучше понимать происходящее и сможете вылавливать хардкорные ошибки самого рантайма за вменяемое время. Разумеется, для анализа внутренностей .NET необходим хороший и удобный инструмент. Увы, такого пока не изобрели, поэтому приходится использовать WinDbg. Я помню, как я познакомился с этой программой первый раз. Я открыл WinDbg, посмотрел на него, WinDbg посмотрел на меня, после чего каждый пошёл своей дорогой. В последствии мне пришлось вернуться в этому чудо-инструменту, но первые дни приходилось много страдать. Жаль, не было у меня человека, который бы мне всё рассказал и показал.

А вот у вас такой человек есть! На DotNext приедет Михаил Щербаков и расскажет нам, как же совладать с WinDbg и насколько крутые штуки можно делать с его помощью. Миша — постоянный спикер на разных .NET-конференциях (любит рассказывать про безопасность приложений), организатор .NET-митапов в Петербурге, автор проекта IntelliDebugger и крутой .NET-разработчик. Если во время доклада вы не осознаете все тонкости работы с WinDbg, то Мишу можно будет подкараулить в кулуарах и заставить показать рассказанное на примерах.

c46c63885801492eaead3b844d9c7a2a.jpg


DLR — тема специфическая, далеко не все ей занимаются. Но если вам всё-таки доводится писать ключевое слово dynamic, то явно не помешает знать, что же оно означает и во что может превратиться обычное a + b, если вы решили идти по пути динамической типизации. В этом случае вам обязательно нужно сходить на доклад Игоря: он расскажет про внутреннюю кухню данного подхода и про то, как он может вам пригодиться в жизни. А если вас за всю карьеру не посещала идея о том, что под .NET можно писать динамический код, то всё равно сходите: тема интересная и познавательная. Игорь не так давно уже рассказывал про DLR в Петербурге, а в Москву он приедет со значительно доработанной и улучшенной версией своего материала.

0da0e52e00124ea8b87373ef73b6186c.png


Я тоже выступлю с докладом, буду рассказывать про то, как делать ваши приложения супер-быстрыми. Мне довелось выступать по данной теме на прошлом DotNext в Петербурге, а в этот раз я продолжу свою любимую тему и целый час буду травить разные весёлые истории про производительность.

Все сюжеты основаны на реальных событиях: это проблемы, с которыми сталкивался лично я, мои коллеги и программисты с просторов интернета. Буду рассказывать как про старые темы вроде бенчмарков (вот тут есть свежее видео про то, почему бенчмарки сложны), так и про новые вроде blittable-типов. Историй у меня много, но для доклада я попытался выбрать самые простые и показательные, чтобы за отведённое время пройтись по самым разным темам и познакомить вас с удивительным миром микрооптимизаций.


Заключение


Резюмирую: конференция получается очень крутой и хардкорной. Если у вас есть возможность, то настоятельно рекомендую посетить DotNext 2015 Moscow, других подобных конференций вы не найдёте!

ef0f83f25950458c98dd2a73418a727f.jpg

© Habrahabr.ru