Algumas letras técnicas sobre as ferramentas C ++ do JetBrains e o que os unicórnios têm a ver com isso

Eu não estou começando com o meu típico "Olá, Habr! Temos outro lançamento interessante aqui ", e com" Olá, meu nome é Nastya, sou PMM no JetBrains e sou responsável por nossas ferramentas C ++ ". Ou não, tentarei novamente: "Olá, um desenvolvedor de C ++ com 8 anos de experiência escreve para você, que há 5 anos encontrou o mesmo aplicativo em sua amada e familiar empresa de sonhos - JetBrains, e então o relógio acabou subitamente em um dia, e todas as ideias grudam. ”

Não, este não é um post tradicional sobre a busca de candidatos para uma vaga. Vou tentar falar sobre por que temos várias ferramentas C ++ e quais idéias e planos temos para elas , e por que você não esquece C ++ se parar de escrever como desenvolvedor e se tornar PMM (spoiler se Como você não é membro do comitê de padronização da linguagem C ++, você tem uma boa chance de aprender uma língua ainda melhor). E se depois disso você quiser participar como PMM, ficarei feliz em ter seu currículo em anastasia.kazakova@jetbrains.com .

Por que você não pode simplesmente obter e criar um IDE para C ++?


Parece para muitos que é muito fácil criar um analisador para um IDE a partir de um compilador de linguagem C ++. Nas conferências ACCU, C ++ Now e CppCon, há alguns anos, comecei a falar sobre por que as coisas não são tão simples. Por exemplo, você pode ver registros de 2017 com ACCU ( Uma visão de C ++ através dos óculos de uma ferramenta de linguagem ) e CppCon ( Novos padrões para o resgate: a visão através dos óculos de um IDE ). Pontos principais: quanto mais inteligente o ambiente, mais difícil é o C ++:

  • manter um bom desempenho (e capacidade de resposta) do editor,
  • poder trabalhar com código incorreto (o compilador emitirá apenas um erro e deixará de funcionar) e
  • “Pense” não nas unidades de tradução (TU), mas na escala de todo o projeto (porque Renomeie você deseja exatamente o símbolo contextual, e não apenas o mesmo nome, e em todo o projeto).

Então, em 2014, não um, mas até 2 (ou até mais corretamente 3) ambientes para o desenvolvimento de C ++ nasceram. E tudo aconteceu de repente. Acabamos de fazer o Objective-C no AppCode e, em seguida, descobrimos que estávamos escrevendo um analisador de C ++. E lá vamos nós! A propósito, contei essa história engraçada em uma entrevista na recente conferência C ++ Rússia 2019 em Moscou:


Como resultado, parte da equipe decidiu criar um IDE baseado na plataforma IntelliJ - CLion. E a outra parte começou a implementar uma abordagem diferente em uma arquitetura diferente - ReSharper C ++, uma extensão para o Visual Studio. E então outro analisador baseado em clangd apareceu. Em geral, temos vários produtos e muitos analisadores.

Dragão de três cabeças e como vendê-lo


Ao mesmo tempo, nossos produtos para C ++ têm um público um pouco diferente.

O CLion está focado no desenvolvimento de plataforma cruzada em C ++, ou seja, para aqueles que desejam executar o IDE em várias plataformas (incluindo Linux, onde não há muitas opções). Este é um ambiente autônomo e completo, em que muitas integrações (diretamente e através de plug-ins, de terceiros e nossas) com outras ferramentas (Valgrind Memcheck, Google Sanitizers, DTrace, Perf, Conan) e idiomas (Python, Rust, Swift, Kotlin / Native ) É no CLion que agora estamos trabalhando para apoiar o mercado de desenvolvimento incorporado . O IDE é popular no setor financeiro, no mercado de desenvolvimento de carros autônomos e outras áreas. Fomos mostrados recentemente em um anúncio da BMW .

O ReSharper C ++ é uma extensão do Visual Studio, projetada para quem está desenvolvendo em um ambiente Windows e se concentra na cadeia de ferramentas correspondente (msbuild, MSVC). Aqui, não estamos tentando implementar os recursos que já estão no Visual Studio, mas estamos tentando tornar o trabalho com código mais conveniente, rápido e produtivo, especialmente com o C ++ moderno. Portanto, o produto possui muitos recursos interessantes de nerd que podem fazer de você um guru do desenvolvimento de C ++. Agora você pode ver o trabalho ativo que estamos fazendo no ReSharper C ++ para oferecer suporte aos desenvolvedores de jogos no Unreal Engine. Isso é bastante lógico, uma vez que o principal público desses jogos é desenvolvido no Windows, no ambiente MS. Portanto, adotamos a otimização de desempenho e recursos especiais especificamente para jogos no UE4 .

Além disso, o suporte a C ++ do CLion está presente no AppCode (onde realmente se originou) e no Android Studio (que o Google faz com base em nossa plataforma IntelliJ).

E, de alguma maneira, para explicar isso aos usuários, criamos uma campanha de marketing, chamada de C ++ . Se você já viu nosso estande em conferências C ++, ou assistiu a gravações da conferência C ++ Now (que apoiamos como patrocinadores de vídeo), ou pegou garrafas verdes ou ícones C ++ como material de divulgação, entenderá exatamente do que se trata:



Mas e os unicórnios?


O unicórnio de toda essa diversidade agora é um - sou eu. Se você não está familiarizado com o conceito de “unicórnio no JetBrains”, aqui está uma postagem da abreslav , que descreve com bastante precisão a posição do PMM no JetBrains . E uma vez investimos muita energia (mental e física) na Escola de Verão do PMM e percebemos muito sobre nós mesmos enquanto dizíamos aos outros quem somos e o que fazemos. paullarionov aqui em Habré contou como foi (ao mesmo tempo, há links para slides de palestras). O visualizador não é do JetBrains, se alguém estiver interessado.

Eu não sou uma pessoa de marketing inicialmente. Eu vim para o JetBrains a partir do desenvolvimento de C / C ++: 5 anos em terceirização incorporada, 3 anos em Yota / Roox / Scartel (existem muitos nomes, basicamente um) fez PCRF e otimizou tudo que voou mal (e depois escreveu sobre isso em Habré ) e, de repente ... Na verdade, com C ++ eu não me interceptei menos. É claro que não escrevo sistemas comerciais prontos, mas aprofundo os meandros da linguagem, quebro o suporte no IDE junto com nosso valioso controle de qualidade e depois descrevo tudo isso em blogs de produtos. Eu avalio o quão bem os escritores técnicos descreveram bem este ou aquele cenário do próximo recurso, constantemente me comunico com os usuários finais (ou seja, desenvolvedores de C ++) e mostro a eles todos os tipos de "casos interessantes". Discuto planos de produtos e problemas atuais com a equipe, trabalho com advogados de desenvolvedores e com a comunidade. Além disso, começamos a nos comunicar mais de perto com o comitê de padronização e a ir às reuniões dele. Também gosto de falar sobre C ++ e seu ecossistema em conferências e organizar reuniões da comunidade C ++ em São Petersburgo.

Mas os produtos para PMM têm tarefas menos técnicas - campanhas publicitárias, preparação de conferências, vários materiais de marketing e muito mais. Isso também está na minha lista TODO sempre crescente.

Se você leu esse lugar e percebeu que o emprego dos sonhos provavelmente está bem aqui ao seu lado, temos duas vagas , que são basicamente a mesma coisa. Não pretendo deixar o JetBrains, mas o tempo em dias está se esgotando rapidamente, por isso preciso de outra cabeça que me ajude a realizar muitas idéias existentes e nos traga novas idéias. As tarefas serão amplamente baseadas no ReSharper C ++ e, é claro, comuns também. Porque C ++, como dizemos;)

PS Escreva perguntas ousadas nos comentários - eu gosto de responder no Habré!

E venha, vai ser divertido! A unidade para desenvolver garantida!

Source: https://habr.com/ru/post/pt451510/


All Articles