Интервью с Брин Томас

Привет, Эшли! Не могли бы вы рассказать нам о своей работе инженером-программистом в Google и о новом проекте, который только что запустила ваша команда?

Я работаю над Abseil, который представляет собой коллекцию кода библиотеки C ++ с открытым исходным кодом, предназначенную для расширения стандартной библиотеки C ++. Мы много лет использовали эти библиотеки в Google, а теперь выпускаем их для более широкого сообщества разработчиков.

Я работаю в Google с августа 2015 года. Я начал работать в команде инфраструктуры, но с июля 2016 года я тратил до 20% своего рабочего времени на участие в Abseil. Эти так называемые 20% -ные проекты - отличный способ изучить проект или команда, полностью ортогональная вашему основному заданию. Мне так понравилось, что в сентябре я перешла на полный рабочий день Abseil. Оказывается, я лучше исправлю низкоуровневые библиотеки C ++, чем построю сетевой прокси!

Что было самым сложным при запуске Abseil и как ваша команда преодолела это?

Масштаб проекта был одной из самых сложных частей. Значительная часть нашей предрелизной работы включала изменение имен файлов и пространств имен наиболее распространенных библиотек C ++ в Google. Например, у нас был файл base / time.h, содержащий класс base :: Time. Мы хотели переместить файл в новый каталог, присвоив ему имя absl / time / time.h. Мы также хотели переместить его в пространство имен absl (т.е. absl :: Time). В меньшей кодовой базе это было бы не так уж плохо - переместите файл, переименуйте класс и обновите пользователей этого класса одним набором изменений. Однако в Google около 12 тысяч разработчиков работают над 250 миллионами строк кода C ++. Атомарное обновление всей кодовой базы для каждого из этих переименований было совершенно исключено. (Более того, у нас была команда из ~ 15 человек, которые занимались такого рода крупномасштабными изменениями!)

Если бы мы хотели перенести всю базу кода из base :: Time в absl :: Time, нам пришлось бы делать это постепенно. Мой товарищ по команде Джон сделал отличный доклад о том, как мы это делаем на CppCon, и я настоятельно рекомендую всем, кто интересуется этой темой, посмотреть. Вкратце, мы использовали псевдонимы типов для переименования библиотек, которые мы хотели выпустить, позволяя пользователям этих библиотек продолжать использовать старые имена. В долгосрочной перспективе мы не хотим поддерживать несколько наборов имен для одного и того же объекта, поэтому в этом квартале мы проведем несколько автоматических рефакторингов, чтобы очистить старые имена.

Вы упомянули, что проект получил большой отклик на CppCon, когда о нем было объявлено. Что делает Abseil таким важным и интересным для сообщества в целом и почему?

В краткосрочной перспективе Abseil предоставляет несколько библиотек, которые, как мы надеемся, заинтересуют разработчиков. Мы предоставляем совместимые с C ++ 11 версии типов C ++ 17, такие как std :: optional, чтобы разработчики могли использовать их, даже если они не готовы перейти на компилятор C ++ 17. Мы также предоставляем альтернативы стандарту (например, absl :: Time и absl :: Mutex), которые лучше подходят для некоторых вариантов использования.

В долгосрочной перспективе Abseil стремится к стабильности во времени, как и стандартная библиотека C ++. Но мы делаем это иначе, чем большинство проектов с открытым исходным кодом - мы не используем семантическое управление версиями, чтобы не нарушать работу наших пользователей. (Семантическое управление версиями в любом случае не помогает избежать поломки пользователей, поскольку что угодно может быть критическим изменением; я настоятельно рекомендую пленарное выступление нашего технического руководителя Титуса Винтерса на CppCon, чтобы подробнее узнать об этом вопросе.) Google живет в голове уже много лет, и мы просим наших пользователей поступать так же. Если мы хотим внести критические изменения в API, мы предоставим автоматический рефакторинг для переноса внешних пользователей. Мы еще не проработали все детали, но мы очень рады видеть C ++ как язык общения, выходящий за рамки Google.

Tech Ladies объединяет женщин с лучшими вакансиями и возможностями в сфере высоких технологий. Присоединяйтесь к группе или отправьте объявление о вакансии на: www.hiretechladies.com