Навигация по большим и сложным кодовым базам должна быть легкой
13 марта 2023 г.
Мы часто думаем, что современные вычисления разделены между кодом и данными. Функционально это имеет смысл, когда мы смотрим на любое данное приложение. Но когда мы смотрим на стандартную архитектуру микросервисов, широта и глубина самого кода больше, чем несколько текстовых файлов — он становится собственным набором данных. Наша способность управлять кодовыми базами ограничена понимание их, и нам пора использовать инструменты, созданные для больших данных, и применить их к эпохе большого кода.
Самый известный инструмент работы с большими данными — поиск. Сила поиска экономит драгоценное время. Соучредитель Sourcegraph и главный технический директор Бейанг Лю понял это, когда решил представить его миру разработчиков. Он познал всю боль прихода в новую компанию и изучения новой кодовой базы.
Понимание мнений разных людей и стилей кода может быть ошеломляющим, а кодовые базы со временем разрастаются непредсказуемым и запутанным образом. Поэтому Лю создал Sourcegraph, инструмент, помогающий разработчикам работать более продуктивно. По сути, это поисковая система для кода.
Понимая, что большой код — это большие данные, мы можем использовать возможности графов знаний для поиска и понимания любой кодовой базы в мире.
Недавно я говорил с Лю о его путешествии с Sourcegraph и его долгосрочных целях (чтобы услышать полный разговор, послушайте подкаст Open Source Data). ).
Что такое Sourcegraph?
Sourcegraph – это бесплатная технология с открытым исходным кодом, позволяющая выполнять поиск по всей кодовой базе. Его основная цель — помочь справиться с самой важной частью работы инженера-программиста: понять существующий код.
Это делается следующим образом:
* Поиск всего сразу без клонирования и локального поиска. * Легко обмениваться основными строками кода. * Управление с помощью функций, вдохновленных интегрированной средой разработки (IDE).
«Для большинства инженеров-программистов большая часть работы заключается не в написании нового кода. Это имеет смысл и позволяет понять весь код, который уже существует», — сказал Лю.
В Sourcegraph есть два основных компонента: компонент поиска и глобальный эталонный граф.
Компонент поиска
Как и в большинстве поисковых систем, поисковый компонент Sourcegraph принимает запрос и представляет наилучшие результаты. Скажем, разработчик ищет задачи в определенном репозитории. Разработчик может ввести поисковый запрос, подобный этому repo:facebook/react content:TODO
, и он будет искать любые задачи в указанном каталоге. Вы можете увидеть реальный пример поиска в репозитории Facebook React-native здесь. Одной из ключевых технологий, делающих это возможным, является формат индекса, оптимизированный для поиска по коду.
В 2010 году, когда он был инженером-стажером в группе серверных приложений Google Apps, Лю был вдохновлен использованием Google Code Search. именно это побудило его использовать индексный формат. Еще одна вещь, которая привлекла его внимание, - это работа Расса Кокса над первоначальной реализацией внутреннего поиска кода Google и его повторной реализацией Хан-Вен Ниенхуйсом в виде библиотеки с открытым исходным кодом под названием Zoekt.
"Центральным элементом этого опыта была система поиска кода, которая проиндексировала все коды в Google и сделала их доступными для каждого разработчика, будь то стажер или высокопоставленный инженер уровня Джеффа Дина", – сказал Лю.
Глобальный справочный график
Глобальный справочный граф помогает понять кодовую базу и выполнять такие функции, как «перейти к определению» и найти ссылки, что требует сопоставления всей кодовой базы, чтобы попасть в нужное место.
Для этого Sourcegraph использует ряд библиотек компиляторов и открытых протоколов, а также собственные протоколы, такие как Source Lib и SCIP, которые больше подходят для требований Sourcegraph.
"Все дело в том, чтобы предоставить этот независимый от языка интерфейс для индексаторов, зависящих от языка, которые используют знания компилятора для построения глобального эталонного графа", – сказал Лю.
От хаоса к действию
Sourcegraph появился, когда Лю получил свою первую работу после окончания школы в Palantir Technologies. Он столкнулся с одной из проблем, с которыми сталкивался каждый, устраиваясь на новую работу инженером-программистом:
«Я попал в эту большую и сложную кодовую базу, у которой было несколько владельцев», — вспоминает Лю. «Это было немного грязно, и я помню, как в конце первого месяца или около того я оглядывался назад и спрашивал себя: «Чего я здесь добился? Я тратил все свое время, просто пытаясь понять, что происходит в этом коде, и понять, почему он написан именно так. Похоже, моя работа заключается в том, чтобы просто исследовать существующий код и выяснить, как относительно небольшая часть, которую я пытаюсь добавить, вписывается в эту более широкую картину».
Работа Лю в Google познакомила его с набором внутренних инструментов разработчика, одним из которых был Google Code Search, который сделал весь код в Google доступным. Этот опыт, наряду с трудностями адаптации в Palantir, побудил Лю создать что-то, что помогло бы другим разработчикам программного обеспечения избежать тех же проблем.
Разговоры с Куинном Слаком, коллегой Лю в Palantir, о создании инструмента для универсального поиска по коду переросли в действие. из которых появился SourceGraph.
Будущее Sourcegraph
В 2011 году Марк Андриссен писал о том, как программное обеспечение пожирает мир< /а>. Знаки везде: от еды, которую вы заказываете, до бронирования поездки и управления отоплением вашего дома.
Но Лю считает, что мы видим только верхушку айсберга. Он сказал, что понимание кода станет повседневным делом.
Он сравнил это с грамотностью, заявив: "Когда-то мы жили в мире, где умение читать и писать было ограничено очень небольшой элитной частью общества, что ограничивало возможности развития человеческой цивилизации".
По словам Лю, когда код управляет почти всем в нашей жизни, его понимание станет универсальным требованием. Эта мысль подпитывала страсть Лю к созданию Sourcegraph. Создание поисковой системы для кода предоставит людям доступ к обширной экосистеме с открытым исходным кодом — и все это с помощью простого поискового запроса.
Сэм Рэмджи, DataStax
Сэм Рэмджи — директор по стратегии DataStax. Ветеран с 25-летним стажем работы в Силиконовой долине и Сиэтле, Сэм помог создать два многомиллиардных рынка (управление API в Apigee и сервисная шина предприятия в BEA Systems) и переопределил стратегию Microsoft с открытым исходным кодом и Linux с «искоренения» на «принятие ." Он увлечен открытым исходным кодом, экономикой платформ, промежуточным ПО и облачными вычислениями, уделяя особое внимание опыту разработчиков и корпоративному программному обеспечению.
Также опубликовано здесь
Оригинал