Всем привет. Опять No Slides, и сегодня у меня для вас интервью с Дмитрий Нестерук он же мезастель , технический евангелист JetBrains. Я знаком с Дмитрием довольно давно и, честно говоря, очень долго ждал того момента, когда мы наконец пойдем в студию и запишемся.
У меня накопилось к нему слишком много вопросов.
Мы разговаривали с Дмитрием больше часа, но не успели затронуть и половины тем, которые хотели обсудить.
Что успел мне сказать Дмитрий:
- Чем технический евангелист отличается от адвоката разработчиков?
- Как работает евангелизация в JetBrains
- О восприятии мира настоящими гиками
- Почему ИТ — плохая отрасль
- О марже и инвестициях российских аутсорсеров
- О том, какие корпоративные решения позорят отрасль и почему
- Насколько далеко JetBrains от своего простого потребителя?
- О том, как индустрия видеоигр смогла «вырастить» для себя целый сектор аппаратного обеспечения
- Что сейчас происходит на рынке видеокарт?
- Что еще могут придумать компании, чтобы программы работали быстрее?
- О том, как выживет ReSharper и о 64-битных IDE от Microsoft
(на одиннадцатой минуте звука, к сожалению, нет.)
Технологический евангелист против защитника разработчиков
— Дима, у меня к тебе вопрос: кто такой технический евангелист? Каковы его обязанности? Что он делает? — Прежде всего, должен сказать, что мы отказались от термина «технический евангелист».Мы перешли на другой термин — Developer Advocate, потому что евангелизация, так или иначе, в сознании некоторых людей прочно связана с некоторыми религиозными движениями.
И вообще, «евангелие» – «как мы приносим благую весть» – слишком претенциозно, я бы сказал.
Это типа — мы пришли избавить вас от плохих практик разработки, поэтому — Developer Advocate. То есть человек, который защищает определенные принципы хорошего развития, например, посредством, в том числе, инструментов.
Следовательно, это человек, который выступает с докладами на конференциях и работает на стенде на конференциях.
То есть есть конференция — на ней можно поставить стенд и там сотрудники компании будут показывать, рассказывать, дарить всякие брошюры и интересные подарки, да и просто общаться с пользователями.
Потому что одно дело, когда мы общаемся с пользователями через Интернет, а другое — иногда хочется получать обратную связь в прямом эфире.
А некоторые хотят увидеть живых разработчиков JetBrains, чтобы подойти и сказать: «Вот, ребята, смотрите, у меня такая проблема, вы ее не решаете, давайте обсудим это прямо сейчас, здесь, на конференции».
И это, я считаю, здорово.
Кроме того, мы создаем маркетинговые материалы – в частности, скринкасты, вебинары… — Блоги.
— Блоги, опять же, да.
То есть, с одной стороны, мы действительно описываем особенности нашей продукции, но сейчас делаем упор на общетехнологические вещи.
Если вы посмотрите мои вебинары — например, последний — мы не делаем что-то вроде «Вот, посмотрите: вот наш продукт и вот наши фичи, мы сейчас вам разберем, что там есть».
То есть мы делаем такие вещи просто как скринкасты, а возможности продукта показываем в ходе какой-то тематической беседы.
Например, давайте обсудим современный C++, какие есть возможности языка - и в фоновом режиме используется наш редактор, какие-то наши возможности, возможно, но мы о них даже не упоминаем.
— В общем, понятно, что это какой-то трюк, этот прием называется продакт-плейсмент и известен еще со времен первых фильмов о Джеймсе Бонде.
То есть 50 лет. — Нюанс в том, что пользователи, по сути, не хотят маркетинга.
Многие компании не понимают, что если вы проводите конференцию или мероприятие, посвященное маркетингу, люди будут испытывать отвращение.
Мы этого не делаем.
Поэтому все доклады, которые я представляю на конференции, просто тематические.
Идет конференция по C++ — рассказываю, как сделать что-нибудь интересное на C++.
А продакт-плейсмент – да, он на втором плане и никого не волнует. То есть если я что-то сделал, скажем, с CLion, а если вы хотите использовать Eclipse, то вперед, без проблем.
Как работает евангелизация в JetBrains
- Ну ладно.Как ощущается евангелизация в JetBrains – работает или не работает? Помогает ли он компании или нет? Дело в том, что мы не единственные, кто занимается евангелизацией.
Например, Microsoft занимается евангелизацией, и наши подходы радикально отличаются, потому что у Microsoft более формальный подход — то есть они нанимают стороннюю компанию, которая затем звонит потенциальным пользователям, будь то студенты или бизнесмены, и спрашивает их.
: «Ребята, мы сделали мероприятие.
Стало ли у вас больше желания устанавливать Windows 10Э» Эти метрики являются KPI и эти метрики фактически дают бонусы евангелистам и т. д. Понятно, что Microsoft в России, поскольку это в основном евангелизация, у них более крупная команда и все это систематизировано.
У нас есть команда из шести человек, микроскопическая по масштабам JetBrains. И у нас действительно нет никаких KPI. То есть мы для себя понимаем, что у нас получилось круто, а что у нас получилось нормально.
То есть, если, скажем, человек выпустил какую-то классную вещь, которую заметил весь мир, — он сделал что-то такое крутое, то мы это понимаем — смотрите, это достижение.
Нам не нужна сторонняя валидация, потому что продажи есть продажи — то есть у нас нет таких метрик, что «смотрите, мы сделали событие и после него продали столько-то лицензий».
Мы так не думаем, мы просто делаем все, что можем.
Те же скринкасты нужны, потому что у вас есть продукт и люди хотят знать, какие у него функции.
Они могут просто прочитать страницу или посмотреть видео.
То есть мы знаем, что скринкасты есть, что в них есть необходимость, можем посмотреть статистику просмотров.
Но очень сложно понять, что именно эти скринкасты привели непосредственно к продажам.
Это очень сложно показать математически и мы этого не делаем.
Мы понимаем, что это необходимо, поэтому делаем это и стараемся делать это хорошо.
Вот и все.
— То есть, по сути, это на уровне внутреннего ощущения? - По сути, да.
То есть мы сами видим, когда что-то получается хорошо.
Когда что-то, условно говоря, выстреливает. Например, вы проводите вебинар, и на него записывается столько людей, что вам приходится проводить второй.
Это хороший критерий.
Опять же да, это естественно, что мы, евангелисты, и маркетологи определенных команд — мы все равно смотрим на продажи, смотрим на скачивания — держим руку на пульсе.
В том смысле, что если куда-то надо подтолкнуть, то, возможно, подтолкнем.
Но нет такой прямой связи с некоторыми показателями, как «Смотрите, я продал через евангелизацию больше, чем вы».
- Это хорошо или плохо? - Мне кажется, это хорошо.
Потому что с помощью KPI можно делать всякие плохие вещи.
То есть вы можете, например, иметь евангелиста не очень коммерчески успешного продукта и по KPI он будет получать меньше бонусов — потому что продукт менее успешен, и соответственно вы получаете меньше.
У нас этого нет, и на самом деле наша продукция продается по-разному – что-то очень успешно, что-то не очень.
И есть продукты, которые освещают евангелисты — есть продукты, которые, к сожалению, пока не освещают евангелисты.
Как я уже говорил, команда очень маленькая, но продуктов много.
— Почему компания не хочет его расширять? — Дело в том, что поиск евангелистов — очень сложный процесс.
Потому что нужен человек, который: во-первых, технически грамотен — в том смысле, что у него уже есть опыт разработки и, по сути, мы настаиваем, чтобы человек продолжал писать код. Видите ли, во многих компаниях, не называя имен, евангелисты — это люди, которым раздают слайды и они их рассказывают. Вот и все.
А нам нужно, чтобы человек был технически подкован — чтобы ответить на любой вопрос (то есть, если вы делаете, скажем, рассказ о C++, то вы должны знать C++, вы должны писать на нем).
И в то же время мы хотим, чтобы у человека были коммуникативные навыки, коммуникативные навыки, чтобы он был готов постоянно летать по миру.
И рассказать что-нибудь или просто пообщаться.
И это сложно.
Это действительно сложная задача, потому что таких людей не так много.
— Я знаю Баруха Садогурского, и он говорит, что вы украли у них термин «Адвокат разработчиков».
Он пошутил, что его религия не позволяет ему называться евангелистом, и в данном случае он является защитником разработчиков.
И теперь это название вашей профессии действительно стало трендом.
Барух большой молодец.
В мире Java он, вероятно, самый известный Адвокат. - Понимаете, это в каком-то смысле шоу-бизнес.
Естественно, ты приходишь домой и пишешь кучу кода, отлаживаешь и копаешься во всем этом, но когда ты выходишь на публику — да, это шоу-бизнес, насколько хорошо ты можешь передать определенную тему.
Еще одна вещь, о которой я не упомянул, но которую тоже очень важно упомянуть, — это обращение к клиентам.
То есть, помимо поездок на какие-то мероприятия, мы еще и пишем – как потенциальным, так и существующим клиентам.
Мы говорим: «Ребята, хотите пообщаться? Мы приедем, сможем вам что-нибудь рассказать, можем посидеть с блокнотом, записать ваши проблемы, посмотреть, как можно их лучше решить».
Например, вы приходите в какой-нибудь хедж-фонд или инвестиционный банк — вам нужен человек, говорящий на их языке.
И это тоже проблема.
Потому что таких людей не найти.
Продавцы у нас, конечно, есть, но они вам скажут, сколько это стоит, какие скидки мы вам можем дать.
И вам нужен кто-то живой, кто «Смотри, я вычисляю то-то и то-то, а это не работает», и мы можем напрямую посмотреть на этот код и что-то с ним сделать.
То есть это тоже часть работы.
— Если попытаться разбить все это по процентам рабочего времени, как примерно получится? В вашей команде, наверное, по-другому, да? - Слушайте, на самом деле все очень неоднородно в том смысле, что действительно есть мероприятия, на которые мы просто ходим чуть ли не каждый год, а иногда делаем перерывы.
Происходят события, которые из года в год поражают воображение.
Допустим, вы знаете, что на 3 дня там будет 20 000 человек и поэтому лучше не пропускать это мероприятие.
Поэтому в этом есть определенная закономерность.
В выпусках, конечно, тоже есть регулярность — то есть, когда происходит релиз, вы должны подготовить материалы для этого выпуска.
Например, скринкасты, в которых описаны все особенности, потом по частям, какие-то блокпосты, но кроме этого много просто случайных вещей, и инициатива не наказуема.
Я, например, просто иногда провожу вебинары — хочу поговорить о генеративном искусстве.
То, как генерирует программа, на самом деле является небольшим бизнесом, которым мы с сыном занимаемся.
Генерируйте случайные картинки, затем помещайте их в рамку со стеклом и все.
Как раз об этом я и говорю.
Я, например, провожу вебинар.
То есть таких спонтанных активностей у нас много — я думаю, это тоже хорошо, потому что, с одной стороны, это привлекает людей в JetBrains, с другой стороны, нет никакого натирания продукта — вообще ничего такого.
.
— Ты понимаешь, что ты.
Только не бей меня и не тыкай ножом.
Что ты абсолютный фанатик.
То есть человек, который вместе с сыном занимается компьютерным искусством – другого слова для него нет. - Я вам больше скажу - я учу сына программированию на ПЛИС, так что.
- То есть твой сын тоже компьютерщик! — Не знаю, в этом возрасте о вундеркиндах говорить рано.
О восприятии мира настоящими гиками
— Этот термин сам по себе странный… Есть ли у вас ощущение, что вы воспринимаете мир — и индустрию, и профессию, и индустрию — иначе, чем окружающие вас люди в JetBrains, например? - Это.И так, я бы сказал, было всегда, потому что когда я впервые начал работать в IT-индустрии, когда я наконец решил не писать диссертацию, а пойти работать, я оказался в очень странном месте.
Туда, где, скажем так, искусством программирования мало кто интересовался.
— Это было в Петербурге? - Да, в Питере.
— Я даже знаю, что это за место — не назовем.
- Мы не будем.
И соответственно.
Я бы не сказал, что я тогда был большим компьютерщиком - я просто прочитал все книги, мне хотелось все знать и, соответственно, я быстро повзрослел, но у меня быстро сложилось впечатление, что просто нет один вокруг интересовался чем угодно как на программном уровне, так и на аппаратном уровне, а меня интересовало все сразу.
То есть, соответственно, ощущение, что ЭТО на самом деле не так гиково, как могло бы быть - оно у меня осталось.
Потому что у нас есть определенные конкретные люди, которые просто без ума от технологий и хотят знать все, в том числе работать над экзотическими вещами FPGA, XeonPhi, CUDA и т. д. Но большинству людей все это не нужно.
Большинство людей просто хотят получить зарплату в конце месяца.
Вот и все.
— Нашим слушателям и читателям эта позиция может показаться снобистской, но в целом я с вами согласен.
У меня такое ощущение, что для многих ИТ — это просто способ существования.
Это не увлечение и не хобби.
Это очень грустно.
Если говорить в более общем плане, то в мире огромное количество людей, которые делают то, чего на самом деле делать не хотят. Я просто не знаю, насколько это типично для ИТ или для мира в целом? — На самом деле, если говорить о нашей неудовлетворенности жизнью, скажем так — я думаю, что IT в этом плане пока нормальная отрасль.
Например, у нас нет сильных физических нагрузок.
Почему ИТ — плохая отрасль
- А в нашей отрасли ведь что-то платят. - Да, они что-то платят. То есть, если посмотреть на среднюю зарплату программистов по всему миру, она составляет $80 000, а значит, на это можно как-то прожить.В России в два с половиной раза меньше, но на это еще можно прожить.
Поэтому естественно, что частного самолета, наверное, нет, но для нормальной машины, квартиры или дачи – этого вполне достаточно.
Поэтому я никого не виню, не говорю, что плохо, когда люди идут в IT ради стабильного заработка.
Другое дело, что в глобальном масштабе ИТ — довольно бедная отрасль.
Однажды я был гостем подкаста «Разбор полетов» и честно сказал в эфире, что ИТ-специалист, то есть типичный программист, — это даже не средний класс.
Это рабочий класс, это своего рода функциональная позиция, потому что сама ИТ-отрасль, по большому счету, системно не важна.
Он обслуживает другие отрасли – розничную торговлю, банки, инвестиционные компании.
- Любое дело.
- Любое дело.
Он служит бизнесу так же, как бизнес служит аудиту, как бизнес служит бухгалтерскому учету и все такое.
— То есть типичный случай — снизить затраты за счет внедрения какой-то автоматизации в каком-то бизнесе? - Да.
— Меня, конечно, сразу поразило то, что у нас бедная отрасль.
Если вы сейчас скажете какому-нибудь программисту, что IT — плохая отрасль, то, скорее всего, он вас не поймет. Можно немного расширить эту тему? — IT — бедная отрасль, например, по той причине, что большинство разработчиков не могут позволить себе результат собственного труда.
У нас появляются очень интересные технологии, такие технологии, которые спасают душу индустрии, я бы, например, назвал появление SSD, потому что до SSD работа с диском была просто болезненной операцией, если у вас была какая-то случайная операция.
доступ, а не только линейные операции - всё, смерть.
Поскольку мы делаем IDE, то для нас это больная тема, потому что разработчик без SSD просто пострадает. Соответственно, когда я даю отчет об эффективном развитии, я говорю о том, как реализовать более серьезные технологии, чем SSD. И тут ко мне подходит директор какой-то аутсорсинговой компании и говорит: «Вы знаете, у нас нет денег, чтобы поставлять SSD разработчикам».
Самое главное, что в свое время, когда я работал, я почувствовал примерно такие же проблемы, т. е.
ты работаешь разработчиком, а компания не может поставить тебе нормальный компьютер.
Компания устанавливает компьютер с 4 гигабайтами оперативной памяти.
Или ты приходишь на работу, а тебе дают один экран.
Я хочу, например, шесть или хотя бы три.
И они смотрят на меня, как на идиота.
А я смотрю на эту индустрию как на идиотскую индустрию наоборот, потому что понимаю, что второй монитор – не такая уж и дорогая вещь.
— Однажды я устроился на работу в Oracle. Отличная компания, но мне еще подарили один 19-дюймовый монитор.
Но я просто пошел, принес еще один свой и купил его.
«Это то, что делают разработчики».
- Да, проблема в том, что, мне кажется, я был один такой.
Те.
все остальные были полностью всем довольны.
- Да.
Менталитет людей уже так настроен, что это то, что нам подарил дядя.
- Нет, я был не один.
Был еще один чувак, который был моим наставником, он тоже хороший чувак.
— Я видел, как люди заменяли диски на SSD. - Или они доставили воспоминания.
– Вот, скажем, у JetBrains таких проблем нет, но если выйти за рамки JetBrains или еще нескольких хороших компаний и перейти на аутсорсинг… Я бывал в довольно ужасных местах.
Я не работал, но посещал.
На развалившемся заводе сидят люди, у них у всех трубчатые мониторы.
- Когда это было? — Это было в 2008, может быть, в 2010 году… Но ведь SSD и мониторы — это верхушка айсберга.
Мы говорим о SSD, мы не говорим о SSD-носителях на базе PCIe, мы не говорим о носителях FusionIO, мы не говорим о всякой экзотике.
— Нет, ну PCIe и M2 уже входят в индустрию.
- Если вы сейчас пойдете в любую компанию и спросите, кто использует М2. - Кто вообще использует SSD? Я думаю, что на этом этапе мы закончим наше «исследование».
— Но на самом деле то, что я делаю, т. е.
, например, использую GPU, Xeon Phi, FPGA — это вещи, которые существуют уже давно, их можно пойти на рынок и купить.
А ИТ-индустрия либо делает вид, что они не актуальны, что их вообще не нужно рассматривать, либо говорит, что это дорого.
Она просто говорит: ну смотри, мы платим застройщику две тысячи долларов в месяц.
И вы предлагаете купить за две тысячи или пять тысяч долларов какое-то устройство, которое вроде бы ускорит нашу жизнь, но мы не очень понимаем, как оно позволит нам зарабатывать больше.
О марже и инвестициях аутсорсеров
«Думаю, я вообще не понимаю эту индустрию».Типичная маржа для российских аутсорсеров составляет 30%.
И это очень высококонкурентный бизнес.
А правда в том, что если вы начнете инвестировать в мониторы и твердотельные накопители, ваша прибыль упадет, и вы проиграете конкуренцию.
«Мне тоже кажется, что это просто плохой бизнес».
Здесь необходимо подчеркнуть одну вещь: теоретически для аутсорсинга важна стоимость инженерного часа.
А если у них есть оборудование, которое сокращает количество этих инженерных часов, то непонятно, что им это дает. Да, они выпустят продукт быстрее, это возможно.
Но денег они получат меньше.
— Они сделают этот продукт быстрее, а значит, им нужно будет искать нового клиента.
- Это один из примеров.
Другой пример: есть компания-монополист. Ей все равно, займет ли разработка два года или двадцать лет. Потому что люди все равно будут покупать ее устройства.
Соответственно, какой стимул, по вашему мнению, у нее должен постоянно что-то делать? - Никто.
- Ноль, абсолютно.
Поэтому у меня такие претензии к ИТ.
Потому что ИТ — это хитрая индустрия.
Она говорит, что «смотрите, мы все улучшаем» .
— «Новейшие нанотехнологии».
— Да, но с другой стороны, ваш начальник может вам сказать: «Слушай, ты, конечно, показал мне классную вещь, но, блин, давай пока обойдемся без этого».
И это не выдуманные истории, это реальные истории.
Компании, например, просто не хотят покупать качественную IDE, потому что она для них слишком дорога.
Хотя на самом деле, если посмотреть на ценник в пересчете на те же зарплаты.
Но вы были правы насчет маржи: маржа в 30% — это, знаете ли, хорошая маржа.
Это скорее маржа аутсорсера, который работает «черным», ему платят долларовыми наличными.
Более реальная маржа для какого-нибудь крупного «белого» аутсорсера — 10-15%.
И тогда инвестиции в IDE съедят маржу.
— Мне кажется, в России это никогда не сработает. Потому что если тебе скажут, чувак, ты сейчас будешь вести бизнес с маржой в 10%, он скажет «иди на хуй!» У нас инфляция выше.
— Пожалуй, при большом, массовом аутсорсинге 20% — приемлемая сумма.
То есть да, конечно, люди хотят сразу больших прибылей, и это понятно.
- Я просто совсем не понимаю, может быть, вы мне объясните.
Мне кажется, это дело очень сложное.
Я имею в виду аутсорсинг, или то, что сейчас называют Сервисной компанией.
Например, есть крупная компания Luxoft. Они довольно крутые, они научились эффективно делать довольно интересные вещи.
Их Agile-процессы уже давно построены просто лучше, чем кто-либо другой.
«Иначе никто у них заказывать не будет».
- Да.
В этом смысле они дико крутые и в этом месте являются двигателем индустрии.
У меня такое ощущение, что движение происходит тогда, когда на тебя накладываются определенные ограничения.
В этом случае рынок труда, рынок заказов и все остальное – все начинает развиваться.
Но, к сожалению, историю, связанную с процессами с коммуникационной эффективностью, они развивают только под давлением рынка, а технологическая составляющая при этом просто проседает. «И это огромная проблема, потому что люди видят, что их доходы зависят от других вещей, и это парадоксально.
И очень грустно.
Мы действительно находимся в ситуации, когда новейшие технологии нужны только для эффективности рынка, только для того процента, который их действительно для чего-то использует. То есть он купит какой-нибудь Fusion IO и выкинет все свои сервера, оставив только десяток.
Для остальных из нас все это не имеет значения.
Это действительно грустно.
Но, с другой стороны, это рынок и против него не попрешь.
Видите ли, у нас есть такая идеология, что программисты любят разработку не из-за денег, а потому, что разработка чертовски интересна.
Действительно, технологии, о которых я упомянул, очень интересны.
И сами по себе они являются прогрессом.
Но если люди с ними не работают, то… как стимулировать разработчиков? То есть им должно быть интересно, они должны куда-то двигаться.
Но, к сожалению, именно в аппаратной сфере и сфере эффективного использования технологий есть большие проблемы.
О том, какие корпоративные решения позорят отрасль и почему
— Знаете, когда говоришь о том, что нам не по карману, первое, что приходит на ум, — это различные дорогостоящие Enterprise-решения.— Дорогие Enterprise-решения — позор нашей отрасли.
Потому что если вы посмотрите на решения для командной разработки от IBM, то они бессмысленны и беспощадны.
Они обойдутся вам в тысячу долларов на одного разработчика в год. Это и дорого, и плохо.
С другой стороны, крупное предприятие будет продавать такое решение другому крупному предприятию вместо того, чтобы иметь что-то маленькое, легкое и качественное.
Так что я никогда не был поклонником большого «Энтерпрайза».
Но не надо путать Enterprise с какими-то аппаратными технологиями, с действительно прогрессивными вещами.
Потому что помимо того, что индустрия делает интересные вещи для развития, у нас есть параллельный мир, в котором людей это не волнует, они хотят, но они всё равно продают свои процессы разработки и сопутствующие технологии.
И кто-то это покупает. И это не просто иллюзия, а действительно вполне себе рынок.
Другое дело, что мы, как люди, которым важна эффективность и то, что реально что-то делаем, на самом деле этого не делаем и порой даже не видим этого.
Компания, в которой я начал работать, использовала Rational ClearCase, она использовала Rational ClearQuest, которые теперь стали принадлежать IBM. И это тихий ужас.
Качество этого программного обеспечения было ниже номинала.
Настолько плохо, что непонятно, кто и как это написал.
Он продается за большие деньги, но работает очень плохо.
Возникает вопрос: «Как это вообще возможно? Кто это позволил? Как это вообще попало на рынок и как оно кому-то продалосьЭ» - Это некомпетентность? Это какой-то коррупционный заговор? - Ну типа того.
Но такое ощущение, что это действительно что-то вроде заговора, не знаю, коррупционный он или нет. Возможно, это просто гениальный маркетинг, ведь даже если выйти за рамки ИТ, мы имеем отличные примеры абсолютно отвратительных продуктов, которые продвигаются через отличный маркетинг.
Если взять, к примеру, наушники Beats, которые сейчас купила Apple, то это наушники ужасного качества.
Но они так много вкладывают в маркетинг, и вы знаете, что все звезды спорта и Голливуда носят эти наушники.
И этот плохой товар благодаря маркетингу продается!
Насколько далеко JetBrains от своего простого потребителя?
— Вы затронули тему качественных и некачественных инструментов.Попробую реализовать такой простой, но не очевидный подход. Вы говорите, что мы, ИТ-компании, не можем себе позволить нормальные ИТ-решения.
Вы пытались что-то сделать с этим в JetBrains? Вы пытались донести эту идею кому-нибудь или нет? И если попробовать, то каким образом? Вопрос в следующем: можно ли как-то трансформировать существующую линейку продуктов с учетом того, о чем вы говорите? - Я бы сказал, что эти вещи нужно разделить.
Сейчас мы говорим об инструментах разработки и о том, как мы готовы ускорить процесс или провести более глубокий анализ.
Что мы можем сделать? Нашим естественным ограничением является аппаратное обеспечение тех, кто использует наши решения.
Поэтому вам нужно влиять на них, а не на нас.
— Смотри, вот ты сидишь в JetBrains, у тебя два монитора, у тебя хорошие «толстые» компьютеры.
А теперь представьте себе человека, сидящего за слабым железом с одним 19-дюймовым монитором и пытающегося что-то сделать в ReSharper. Он «съедает» всю память и тормозит все, что только можно.
У тебя есть что-нибудь для него? Вы понимаете этого своего конечного пользователя? Ведь он бесконечно далек от тебя! — Идет постоянный процесс оптимизации.
Оптимизация использования памяти, оптимизация производительности.
Помимо ReSharper, у нас есть собственные инструменты профилирования.
Мы стараемся сделать все возможное.
Естественно, это борьба с рантаймом, борьба с GC и непонятно, что делать.
Вопрос, который вы задали, более глобальный, в том смысле, что если бы вы задали вопрос так: «Почему вы не поддерживаете GPUЭ» Это хороший вопрос, потому что теоретически, если мы посмотрим на срез программного обеспечения, существующего в мире, очень мало программного обеспечения поддерживает графические процессоры.
Есть Adobe и некоторые решения, использующие CUDA. И здесь можно было бы что-то сделать, но, повторюсь, это очень нестабильный подход. х86 - оно везде.
Итак, вы написали свою программу на Java или .
NET. Под x86 у вас не будет никакой векторизации, все это продвинуто.
- Это не совсем так.
Скажем, в Java в простых случаях всё это есть.
Какое-то сложение целых чисел в цикле — с этим JIT-компилятор справляется блестяще.
- Это только в простых случаях.
Если говорить глобально, то этот вопрос – как максимально эффективно и максимально усваивать железо – очень актуален.
Например, у меня есть ноутбук, там стоит дискретная отдельная огромная видеокарта, с которой я принципиально ничего не делаю.
Я бы хотел дать ей возможность сделать что-то полезное.
Частично это все происходит по тем же причинам, по которым очень сложно, например, поддерживать SIMD. Потому что SIMD, то есть большие регистры ЦП, и возможность работы с ними — они развиваются со временем.
В старых процессорах они такие, потом они становятся всё больше и больше и не знаешь в какой стандарт писать, потому что всё это не работает. Он совместим в том смысле, что если вы скомпилировали программу для AVX, но на компьютере нет AVX, то программа просто вылетает, потому что вы пытаетесь выполнить инструкцию, которой нет на вашем процессоре.
— На самом деле это решается в Runtime. Modern Runtime просто спрашивает процессор, типа, чувак, у тебя есть AVX или нет? Вот чем хорош JIT-компилятор: он спросит Runtime: «он у тебя есть или нетЭ» и в зависимости от этого примет то или иное оптимизационное решение.
— Да, компилятор может сделать для вас какие-то выводы о векторизации только в том случае, если он сможет посмотреть на свой цикл и четко понять, что в данных нет никаких подсказок.
А если он не сможет этого понять, все пойдет через обычные регистры, и все.
— Как вообще обстоят дела с векторизацией в .
NET? - Ее там нет. В настоящее время он делается для нового RuyJIT. Получилось довольно интересно, потому что Mono, Linux-реализация .
NET, уже давно сделана Mono.Simd — это Explicit API для векторизации.
Конечно, это не JIT, который автоматически все за вас векторизует. Это именно Explicit вещь, все нужно делать руками — оперировать векторами напрямую.
Естественно, есть понимание, что это в принципе необходимо.
— Другими словами, у Mono есть API, который заставляет Mono Runtime выполнять векторные операции? - Да.
«Но это извращение, это явно не то, что нужно».
— Но непонятно: мы не всегда знаем, что действительно нужно… — Почему я, как разработчик, должен делать это вручную? Логично было бы разделить ответственность здесь.
Для того, чтобы я понял, что какое-то место у меня в коде тормозит, мне нужно профилировать, понять, что именно там можно отвязать, и переписать его с помощью того API, о котором вы говорите.
Но это дополнительные и достаточно сложные шаги .
— Честно говоря, я не сторонник автовекторизации и автоматических решений вообще, потому что они работают только на тривиальных примерах.
То есть если вы распараллеливаете цикл, то он распараллеливается идеально — ваш хороший компилятор просто перепишет его в OpenMP, и всё будет хорошо.
А вот если у вас что-то посложнее, скажем, параллельная обработка не массива, а дерева, то на этом все.
Весь ваш подход развалился.
— Необходимо заменить одну конструкцию другой, семантически равноценной, обладающей большей производительностью.
- Я приведу вам такой пример.
Ну, у нас есть SIMD, мы можем быстро сложить два массива по четыре числа и получить результат в регистрах.
Представьте, что я хочу использовать SIMD для поиска.
Теги: #microsoft #программирование #C++ #.
NET #рабочее место #Visual Studio #jetbrains #FPGA #индустрия #без слайдов #евангелисты #евангелизм #nesteruk #xeon phi
-
3G Стал Ближе К «Большой Тройке»
19 Oct, 24 -
Электронная Подпись, Faq
19 Oct, 24 -
Автоматизация Лестничного Освещения
19 Oct, 24 -
Mail.ru Согласился Оплатить Видео
19 Oct, 24