Друзья!
Времени до C++ Russia 2017 остается чуть-чуть, и в ожидании конференции мы задали некоторым нашим докладчикам вопросы про C++. Надеемся, Вам будет интересно почитать их ответы.
У большинства из наших героев первым языком была какая-то разновидность Basic. Тем не менее это люди, давно знакомые с С++. Иван Чукич только пошел в начальную школу, а уже им занимался. Павел Филонов влюбился в него с третьего курса, а Нил Макинтош начал использовать его компании Telstra еще в 1996 году.
Какие, по Вашему мнению, области С++ нуждаются в разработке?
Ivan Cukic — Мне бы хотелось, чтобы в стандартные библиотеки были добавлены неизменяемые контейнеры.
Во многих случаях наличие изменяемых данных может быть опасным, а все контейнеры STL оптимизированы на проведение изменений непосредственно «на месте». Внесение неизменяемых (или персистентных) версий STL контейнеров в стандарт позволит нам работать по другую сторону спектра — оптимизировать наборы для копирования вместо работы над модификациями. Это означает, что можно будет полностью забыть о мьютексах и других формах синхронизации.
Rainer Grimm — Перед нами стоят два типа проблем. Во-первых, нам нужны лучшие абстракции для правильного решения сложных задач, таких как параллелизм или многопоточность. Во-вторых, нам нужен более удобный в использовании С++. Порог входа слишком высок. Мне не нравится подход «чем сложнее, тем лучше». Это видно в приложениях и, в особенности, в докладах. Это не «user friendly».
Павел Филонов — В первую очередь мне интересно развитие библиотек. Я считаю, что наличие в стандартной библиотеке таких ходовых вещей как сетевое программирование и поддержка сетевых протоколов (в первую очередь HTTP) позволят языку стать более динамичным и удобным. С большим интересом наблюдаю за развитием модулей.
Что же касается ожиданий от новых стандартов, то Райнер и Павел Филонов ждут больше библиотек, а Иван Чукич хотел бы увидеть как можно больше общих инструментов для построения DSL и универсальный синтаксис вызова функций.
Нил же с нетерпением ждет ряда инкрементных улучшений. Кроме того, в С++20 он надеется увидеть Ranges в стандартной библиотеке (как и “span”, и возможно еще больше GSL).
Ну а теперь дадим слово некоторым из гостей, чтобы они могли ответить на оставшиеся у нас более индивидуальные вопросы об их деятельности.
Ivan Cukic
Какое место в твоей работе занимает функциональное программирование (ФП)?
Если не считать KDE, то бóльшая часть моей работы — ФП.
Я отношусь к С++ как к хорошему языку свободной формы, который предоставляет тебе полный контроль над всем, что ты делаешь. Поэтому я стал исследовать, как я могу улучшить свой код через применения в нем ФП. Выяснилось, что С++ довольно открыт к использованию функционального стиля. В нем нет такого же уровня синтаксического сахара, как в других функциональных языках, но он дает несравненный контроль над жизнеспособностью и продуктивностью этих функциональных концепций на железе.
Когда я работаю над KDE я стараюсь держать баланс между обычным объектно-ориентированным стилем и функциональным. Я стараюсь не использовать эзотерические вещи, которые другие люди не смогут понять. По крайней мере, там, где я ожидаю, что будет работать кто-то еще.
Пару слов о твоей работе в проекте KDE. Основные впечатления?
В KDE я связан в основном с проектом Plasma. Именно в него ушёл мой первый официальный коммит (во времена до версии 4.о), и благодаря потрясающим людям в команде Plasma, я могу с уверенностью сказать, что никогда не брошу этот проект.
Из-за Plasma я зачастую был вынужден выходить на нижние уровни KDE-софта, и в итоге получилось, что я создавал и поддерживал ряд его фреймворков.
KDE — это скорее такое сообщество людей, в котором представлен весь диапазон — от прекрасных художников до потрясающих разработчиков. Мне очень понравилось работать в таком окружении. К тому же это прекрасное место для развития своих навыков — как в программировании, так и в общении.
На твой взгляд, главное преимущество использования функционального подхода в С++?
Чистота.
Я думаю, ФП привносит в нормальный код С++ те же улучшения, что и С++ привнес в нормальный код С. Мы все знаем, что алгоритмы STL делают код чище, безопаснее, и проще для понимания, а ФП всего лишь поднимает это еще на уровень.
Ну и напоследок: Plasma падает! Что делать?!
Это происходит, только если вы используете не пропатченную версию на FreeBSD :)
Rainer Grimm
Каков Ваш опыт в сфере встроенных систем (ВС)?
На протяжении последних трех лет я был ответственным за архитектуру ПО для дефибрилляторов (ПО для их сборки, для их обслуживания, ПО для самих дефибрилляторов).
Каковы главные трудности в мире ПО для встроенных систем?
Это довольно просто. Есть проблема обучения. Разработчик часто знает и, следовательно, использует только C. Они не знают и не ценят преимущества современного C++ в этой области. Для меня, встроенные системы — это одна из ключевых областей для C++. С одной стороны, вы можете напрямую общаться с “железом”; с другой стороны, у вас есть удобные абстракции в C++ для решения сложных проблем. А проблем в мире ВС с каждым годом становятся все больше. Подумайте хотя бы об IoT.
На Ваш взгляд, чем в первую очередь нужно руководствоваться для приоритезации требований к таким системам?
Позвольте мне ответить немного по-другому. Программирование для встроенных систем не так уж отличается от программирования приложений. Программирование для ВС особенное, потому что у вас более сильные требования к ПО. Вы имеете дело с системой, для которой безопасность критична, у которой ограничены ресурсы, но при этом ей нужна высокая производительность и она имеет дело с несколькими задачами параллельно. Именно последними четырьмя пунктами я обычно и руководствуюсь при разработке ПО для для встроенных систем.
Neil Macintosh
Расскажи о своем опыте в сфере статического анализа.
Я работал в команде статистического анализа С++ в Microsoft с 2010 года, и был её главой с 2014 года. Это очень интересная сфера. Это и работа над компилятором, и поисковая работа, и ты сталкиваешься с кучей испытаний, пытаясь приспособить аналитические результаты так, чтобы они вписывались в разумные пространственно-временные рамки.
Из Австралии в Вашингтон? Не скучаешь по солнышку?
Ха-ха-ха. Да, особенно в конце зимы. Но лето на северо-западе США, в особенности на Тихоокеанском побережье невероятно красиво, так что это меня «лечит». Мне кажется, красота снегов, гор, рек и озер более чем возмещает редкие ясные дни. Южная Австралия — тоже красивый уголок. Возможно сейчас, после долгого времени за рубежом, я понимаю это лучше.
До встречи на конференции!
Автор: C++ User Group