пятница, 26 февраля 2016 г.

JetBrains C++ минус

По итогам JetBrains C++ Night - впечатление от мероприятия осталось странное, что я и вынес в заголовок.

Собственно, так или иначе C++ в продуктах JetBrains было посвящено только одно выступление - "Виртуозное использование юнит-тестирования в CLion" - да и то опосредованно: был явный перекос в сторону фреймворка от Google (Test и Mock), а сами возможности CLion и та самая виртуозность остались за кадром. Впрочем, было можно заметить, что CLion унаследовал от платформы IDEA достаточно пристойную юзабилити. По крайней мере, в написания юнит-тестов для упомянутого фреймворка и элементов управления проектом (использование только CMake аудиторию несколько обескуражило, но это, в принципе, можно пережить). Предполагаю, что люди, которые работают над CLion, как минимум думают в процессе своей работы. Тут ведь такое дело: если IDEA была написана на самой же IDEA, что сильно улучшало и ускоряло процесс разработки, то вот с CLion ситуация "как у всех", в смысле вряд ли CLion написан на C++ и потому нужны заметные потусторонние усилия, чтобы у команды было концентрированное понимание, а как вообще мы программируем в несферических условиях не в вакууме.
Само же мероприятие началось с "Оптимизация ReSharper C++". Тут вообще всё сложно. Понятно, что в среднем присутствовавшая публика так или иначе заинтересована в том, чтобы писать код на C++
(В качестве отступления. Если и были товарищи, которые только ещё думают в сторону C++ или пока только пытаются делать что-то осмысленное и может даже боевое,то  должны после этого вообще перестать так думать, ибо зачем нужен настолько сложный язык программирования, который в свою очередь требует сложных и дорогих инструментов для достижения сравнимой эффективности, скажем, с Java или .Net? Проще сразу в управдомы на Java и вообще уже мозг не морщить никогда.),
но далеко не всем интересны глубинные проблемы ReSharper C++ по работе с кодом на C++ же. По мне со времён Together C++ (а это, на минуточку, лет 10-15 как) мало что изменилось в этом смысле, разве что дельту парни из JetBrains поэффективнее научились пересчитывать,.. но тут задачи у продуктов отличные друг от друга (Together не был классической средой разработки, там можно было сэкономить кое в чём). А вот информации и примеров того, что (возможно) ReSharper C++ делает лучше или по-другому относительно той же Visual Studio категорически не хватило. Зато примеры гаденьких плюсовых фрагментов были хороши. Интересно, как с этим справляется CLion? - ибо докладчик нерешительно упомянул, что у продуктов кодовая база разная.
Вишенкой на торте показался третий и последний по счёту доклад про HPC (high performance computing). Хорош и по форме и по содержанию, так что в итоге вопросов к докладчику можно сказать не возникло вообще. Но и опять, на мой взгляд, несколько мимо ожидаемого по двум причинам. Во-первых, и C++ и JetBrains остались далеко за сценой. Во-вторых, HPC в представленных измерениях это такие вычисления, которые или надо ухитриться выполнить быстрее конкурентов, или очень надо завершить до момента кончины этой вселенной. Не то чтобы я прямо считал это каким-то маргинальным направлением, но я так считаю что-то мне подсказывает, что подобными вещами с воодушевлением занимаются очень и очень немногие. Основное поверье "давайте мы сейчас поставим Hadoop и кучу серверов и всё станет хорошо" вытравить из народных масс просто так не получится. А более приземлённые HPC... ну, какие-то практические штуки, как-то: уложить в real time какую-то могучую цифровую обработку сигналов, добавить в существующую систему кучу дополнительного функционала не поломав время отклика требуют и размышлений не таких глобальных и инструментов поприземлённее. Можно сидеть и профилировать код, поискав какие-то способы по-другому разбросать нагрузку по ядрам, подвигать память между быстрыми и медленныеми банками, купить новую железку (если клиент платит), где ядер/мегагерц/памяти побольше, или есть железная реализация нужного конвейера (скажем, быстрое преобразование фурье) или поискать закатившиеся под ковёр полезные интринсики от вендора. Вот где влияние правильной софтины для разработчика недооценить невозможно. Это я к тому, что в докладе смешались два разных направления за один час времени, и это немного порвало контекст.
Да, и что хочу сказать: так вот, сподвигся на то, чтобы наконец заглянуть в опции C/C++ компилятора для VS - а там есть готовые опции для распараллеливания кода. А я и не думал!

5 комментариев:

  1. Интересный отзыв - спасибо!

    Если честно, изначально не было плана рассказывать про продукты и показывать "магию" самих продуктов. Хотелось скорее поговорить о чем-то, связанном с продуктами (а иначе откуда нам взять релевантный опыт) и с С++. Самые далекий от продуктов последний доклад - основное направление деятельности докладчика (помимо евангелизма в JetBrains), поэтому нам показалось, он может поделиться интересными знаниями.

    А что бы Вам хотелось услышать в рамках такого мероприятия? Какие темы?
    Мы делали мероприятие первый раз, так что будем рады мнениям и советам на будущее. Хочется верить, что это не последний такой ивент)

    > Зато примеры гаденьких плюсовых фрагментов были хороши. Интересно, как с этим справляется CLion?
    Код база разаная, а тесты есть целые сьюты одинаковые. Специально, чтобы "гаденькие" примеры в обеих IDE проверять.

    ОтветитьУдалить
    Ответы
    1. Ну, тут, возможно, у меня создалось ложное ожидание от мероприятия. Ибо я как раз рассчитывал узнать, а что в смысле поддержки C++ творится внутри JB вообще и в продуктах JB в частности. Когда-то давно я ставил самый первый EAP CLion, но он меня тогда не воодушевил. А тут я думал посмотреть, что же изменилось. Ну и хедлайн мероприятия, что разработчикам JB интересно мнение С++-программистов о программировании вообще и о продуктах JB в частности как-то с толку тоже сбил.
      А вот если рассматривать это только как такой C++ митап, то вполне всё годно, да. Ибо C++-ных площадок нам категорически не хватает, разработка на C/C++ потихоньку в глазах общественности маргинализируется:)
      Тогда нужно обязательно добавить площадок для трёпа посетителей с докладчиками и между собой. Чтобы не мешать друг другу.

      Удалить
    2. Да, теперь поняла Вас. Спасибо! Про площадки для трепа полностью согласна - сама об этом стала думать на ивенте.
      Про ивент именно про продукты мы подумаем - если спрос будет, сделаем)
      Кстати есть идея попробовать организовать C++ User Group SPb. Может, подскажете, кого бы хотели услышать в рамках такого мероприятия. Не из JB, но с Питера для начала.

      Удалить
    3. Добрый день,
      запоздал с комментарием, я не каждый день захожу сюда:)
      Иметь свой C/C++ UG SpB идея хорошая, ибо, повторюсь, такой площадки у нас не хватает. Но есть проблема: фрагментированность аудитории. Десктопного софта на С/C++ сейчас мало кто пишет; в основном наша братия, я почти уверен, это эмбеддерщики, системщики и местами телеком. Очень мало пересекающиеся друг с другом люди. Можно, наверное, начать с каких-то общих точек соприкосновения, что всем более менее интересно. Например, в использовании новых фич 11-го и 14-го релизов в боевом коде. Или, скажем, кодогенерация (размеры бинарников, ABI и прочие штуки).
      А вот кого послушать - вопрос большой. Столпов C++ много, но они почти все - за рубежом. Наших немного. Наверное, вот в Microsoft'е есть. И в Yandex'е.

      Удалить
    4. Ага, спасибо за мнение.

      Удалить

Спутник взлетает. Первая ступень отработала.

 И, кажется, неплохо: Посмотрим, что будет когда отработает вторая.