1 ноября я покинул Google и в своей прощальной записке украдкой сказал, что попробую удачу в небольшом стартапе с огромным потенциалом. Прошел месяц, и пришло время объяснять больше. Итак, позвольте мне рассказать вам, чем я занимаюсь в последнее время.

Сейчас я вице-президент по связям с разработчиками в source {d}. Может быть, вы никогда об этом не слышали, может быть, слышали немного или использовали некоторые из их замечательных библиотек с открытым исходным кодом, таких как go-git, kmcuda, go-kallax или proteus.

Прежде чем я расскажу вам о том, что делает источник {d}, позвольте мне дать вам немного контекста.

Исходный код как данные

Сопровождающим любую большую кодовую базу, например проекты с открытым исходным кодом или крупные технологические компании, важно понимать их кодовую базу. На основе этой информации принимаются важные решения с точки зрения бизнеса и инженерии.

Год назад я написал статью о том, как можно использовать Bigquery для анализа всего кода Go, доступного на GitHub.

Позже такой вид анализа стал требованием для обоснования дополнений к стандартной библиотеке Go.

Например, функция time.Until была добавлена ​​в Go с этим предложением после анализа того, сколько раз мы могли найти эквивалентный фрагмент кода на GitHub.

Это мощный подход, но он определенно имеет свои ограничения.

Прежде всего, это ограничивает анализ, который мы можем выполнять, регулярными выражениями исходного кода. Большинство вопросов требуют более глубокого понимания структуры исходного кода, например абстрактного синтаксического дерева, или даже информации о типах.

Вдобавок, когда я сказал «все репозитории на GitHub», это было не совсем точно, это частичный дамп всех этих репозиториев, и даже если он был завершен, многих других репозиториев нет на GitHub: как насчет ядра Unix?

Так что же делает источник {d}?

Так что же делает источник {d}? Они мы! предоставить мощную платформу для более простого и эффективного доступа ко всем этим данным.

Вместо ограничения репозиториев на GitHub, source {d} может анализировать любой репозиторий кода в мире, включая те, которых нет даже в Интернете, путем запуска нашего программного обеспечения с открытым исходным кодом в вашем собственном помещении. Мы очень гордимся конвейером, который мы строим, чтобы принимать все публичные репозитории git в мире.

Во-вторых, мы считаем, что входными данными для многих хороших анализов должно быть абстрактное синтаксическое дерево программы, а не плоский набор байтов, который является исходным кодом. Мы так сильно в это верим, что создали Babelfish - проект, который однажды сможет проанализировать любой язык программирования и сгенерировать абстрактное синтаксическое дерево в универсальном формате. Мы называем этот формат универсальным абстрактным синтаксическим деревом или UAST.

Наконец, хотя мы любим регулярные выражения, мы верим, что машинное обучение произведет революцию в том, как мы анализируем программы. Существует бесконечный список вариантов использования, в которых ML может быть выгоднее исходного кода: автозаполнение (которое не требует подключения к стороннему серверу), линтеры кода, анализаторы архитектуры, автоматические обзоры кода и (на один день) исходный код. генерация кода из модульных тестов или даже спецификаций естественного языка.

Если вам интересно, посмотрите наши статьи и сообщения в блогах по этим темам.

Что мне больше всего нравится в компании? Невероятно невероятно талантливая команда, решающая задачи на разных уровнях:

  • извлечение: давайте извлечем весь код в мире.
  • Engine: создание декларативного API для доступа ко всему этому коду.
  • ML: создание и обучение моделей, которые могут использоваться в сложных приложениях.
  • приложения: поиск вариантов использования, которые позволяют нам доказать мощь платформы, обеспечивая при этом максимальную пользу для сообщества.

Но команда разработчиков приложений в источнике {d} - не единственная, кто создает приложения, потому что мы создаем платформу. Мы хотим предоставить каждому разработчику доступ к самому большому набору данных кода и самым передовым инструментам машинного обучения, поэтому с помощью наших технологий и вашего творчества мы можем улучшить то, как пятьдесят миллионов разработчиков в мире пишут код.

Что будет?

В качестве вице-президента по связям с разработчиками моя работа состоит в том, чтобы разработать стратегию того, как исходный код {d} может дать разработчикам по всему миру возможность писать лучший код за счет:

  • написание новых моделей, которые приведут в действие удивительные инструменты,
  • создание инструментов, основанных на машинном обучении на коде, и, конечно же,
  • использование этих инструментов разработчика для анализа и улучшения исходного кода.

source {d} создает платформу разработчиками, где разработчики могут создавать инструменты для разработчиков (*). Итак, представьте, как я рад оказаться в самом центре этого урагана отношений с разработчиками.

Хотите узнать больше?

Присоединяйтесь к каналу slack сообщества source {d}, подписывайтесь на нас в twitter или напишите мне на [email protected].

Я невероятно рад новым возможностям, которые предоставляет машинное обучение в коде. Вместе мы можем создавать лучшие инструменты, улучшать исходный код и в конечном итоге сделать мир лучше.