Семь вопросов Дмитрию Вьюкову, обладателю титула “Мастер программирования, Черный пояс Intel®”

Создать новую статью

Дата последнего изменения :   18.02.2009 04:47
Рейтинг
 


Расскажите немного о себе: где живете и чем занимаетесь?

Я живу в Москве, работаю разработчиком программного обеспечения на С/С++. На текущей работе занимаюсь телекоммуникационными серверами, клиент-серверными системами, VoIP. В свободное от работы время, как хобби, занимаюсь алгоритмами синхронизации, средствами верификации многопоточного кода, моделями программирования для многоядерных процессоров и всем, что с этим связано.

Каков был Ваш первый опыт работы в компьютерном секторе?

На первой работе я занимался тестированием веб-приложений. Хотя я достаточно быстро перешёл в другой отдел на должность программиста, о работе тестировщиком нисколько не сожалею. Даже наоборот, считаю, что это - необходимый и очень полезный опыт для любого программиста, т.к. тестирование - это неотъемлемая деятельность в процессе разработки. Хотя "любительской" разработкой программного обеспечения я занялся значительно раньше. Когда мне было 9 лет, родители подарили нам с братом наш первый "компьютер" - это был программируемый микро-калькулятор МК-85. Хоть это и был микро-калькулятор с однострочным дисплеем, но на нём можно было программировать на упрощённом диалекте Basic. Потом был ZX-Spectrum, ну и уже потом IBM PC совместимый компьютер с процессором 80x286. Хотя в то время значительное время за компьютером было посвящено играм, мне всегда было интересно "заставлять компьютер делать то, что я хочу" - программировать. Это был для меня своего рода конструктор, только со значительно бОльшим количеством разнообразных деталей.

С какими технологиями Вы работаете? Какие из них впечатляют Вас больше всего?

Сложно сказать... впечатляет что-то новое и нетривиальное, поэтому с расширением кругозора и знаниями начинает впечатлять всё меньше и меньше, к тому же большинство технологий - это не что-то новое, а лишь хорошо забытое старое на новом витке развития. Последние 2 вещи, которые действительно меня впечатлили, которые дали ощущение "там есть что-то ещё, что-то непонятное и принципиально отличное от того, что я знаю", - это были lock-free алгоритмы синхронизации и алгоритмы синхронизации для расслабленных моделей памяти - соответственно примерно 2004 и 2005 года.

Что Вас интересует в деятельности сообществ, форумов?

В сообществах и форумах меня прежде всего интересует обмен опытом и идеями с "единомышленниками". Я стараюсь всегда быть "на переднем крае", интересуюсь всем новым, и стараюсь вносить и свой вклад в прогресс IT сферы. Не смотря на то, что материал в книгах хорошо и полно изложен, он неминуемо отстаёт от текущего состояния дел в отрасли как минимум на пару лет. Некоторый актуальный материал можно находить в научных статьях, но их тематика зачастую носит более теоретический характер, нежели практический; к тому же статьи - это, так сказать, односторонний канал коммуникации. В такой ситуации форумы и сообщества разработчиков - это исключительно ценный ресурс, где можно находить новые идеи "из первых рук", где можно публиковать свои идеи и получать ценную обратную связь. В частности, это именно то, что привлекло меня в своё время на Intel Software Network. Так же помощь коллегам, как начинающим, так и значительно более опытным, как ни странно, - очень хороший источник собственного развития. Нельзя просто и понятно объяснить что-то кому-то, если ты сам этого не понимаешь до мелочей ("Если ты не можешь объяснить теорию относительности ребенку, значит, ты ее не понимаешь" А.Энштейн). Общение на профессиональном форуме - это постоянный стимул к развитию, приходится разбираться в документации, проводить тесты, организовывать и структурировать своё знание.

Какие проекты, идеи Вас вдохновляют?

Я занимаюсь многопоточностью и синхронизацией, поэтому, конечно, меня вдохновляет то, что сейчас происходит в области микропроцессорных технологий. Процессоры становятся многоядерными, ядра поддерживают более одного аппаратного потока, добавляются разделяемые кэши данных, на пару с процессором работает GPU, процессоры объединяются в NUMA системы, и всё это начинает располагаться у каждого на рабочем столе. Это - поистине поворотный момент в истории развития вычислительной техники. Все эти тенденции вызывают множество проблем, но в тот же время и дают возможность начать с чистого листа, дают почву для разработки и реализации новых идей, моделей и подходов - а какой разработчик не любит придумывать новые подходы и переписывать код с нуля? :) Конечно, всё бы предпочли дальнейшее планомерное увеличение тактовой частоты процессора без каких-либо архитектурных изменений; но на данном этапе это уже невозможно по технологическим причинам. А раз уж так, то я здесь, что бы частью этого.

Над какими новыми проектами Вы работаете?

Сейчас я продолжаю развивать свою библиотеку для юнит-тестирования алгоритмов синхронизации Relacy Race Detector; основное направление в котором я сейчас двигаюсь - это упрощение написания пользовательских юнит-тестов. В пределе хотелось бы иметь возможность тестировать непосредственно "продакшн" код проектов без каких-либо изменений... хотя, видимо, с текущим подходом полностью этого добиться не удастся. Попутно разрабатываю новые алгоритмы синхронизации, ставя как основную проектную цель достижение линейной масштабируемости на системах с многоядерными процессорами, SMP системах и NUMA системах (http://groups.google.com/group/lock-free). Так же в фоновом режиме я занимаюсь своей идеей фикс - это что-то типа улучшенного Эрланга + улучшенный Threading Building Blocks + встроенная поддержка паттернов проектирования направленных на масштабируемость, и всё это завернуто в высокоуровневую С++ библиотеку. Я знаю, что такого масштаба амбициозные проекты обречены на провал :) но сейчас меня это не смущает, т.к. никакими коммерческими обязательствами и сроками я в его отношении не связан, однако сама работа над ним интересна и познавательна, и заставляет думать над множеством актуальных и нетривиальных вопросов. Не знаю, возможно, через некоторое время этот проект и увидит свет...

Какие улучшения/ изменения хотели бы Вы увидеть в сообществе Intel Software Network?

Ещё больше участников, ещё больше интересных дискуссий и блогов, ещё больше технических материалов!