A Conferência C ++ Rússia é de longe a conferência de tubos mais severa e ao mesmo tempo dos últimos tempos. Foi realizado no Parque de Congressos do Hotel Ucrânia em Moscou e reuniu uma audiência de mais de seiscentas pessoas.
Como um dos camaradas de pós-festa disse: "Eu tenho tentado aprender C ++ na escola, mas estou constantemente encontrando algo novo". Aqui, quase todo relatório falava sobre algo novo. Às vezes - sobre algo completamente alucinante que permanecerá para sempre com você.
O C ++ Russia sempre se destacou pela presença de palestrantes e relatórios especiais, e desta vez não foi exceção. Vamos dar uma olhada no que aconteceu nesses dois dias ocupados.

Vídeos e fotos
Muitas pessoas vão a esses artigos para fazer duas perguntas clássicas: "Quando serão os vídeos?" e "Quando serão as fotos?"
Os registros dos relatórios ficam disponíveis para todos os participantes imediatamente após o preenchimento do formulário de feedback. Após cerca de um mês, no mesmo link, todos os vídeos serão recarregados , mas com a melhor qualidade. A qualidade que é agora é boa, mas pode ser ainda melhor.
A oportunidade de preencher um feedback será encerrada neste sábado às 23:59 . Precisa chegar a tempo!
Mas aqueles que não compareceram à conferência aguardarão a gravação dos relatórios por muito mais tempo. Provavelmente, os publicaremos mais perto da data do próximo C ++ Russia.
As fotos dos participantes já estão no VKontakte . A lista de fotos também será reabastecida; portanto, é melhor se inscrever no grupo inteiro de uma só vez.
Âmbito de aplicação
Como esperávamos, todos os relatórios podem ser condicionalmente divididos em categorias:
- Recursos novos e modernos da linguagem C ++;
- Programação funcional;
- Metaprogramação;
- Multithreading, simultaneidade, assincronia e tudo-tudo-tudo;
- Como viver com as ferramentas existentes.

Durante a conferência, todos precisam organizar um certo número de números e descobrir em que você deseja participar ao vivo e o que deseja ver na gravação.
Existem várias abordagens para viajar pelo programa. Em um, você escolhe entre tópicos interessantes. Em outro, você vai a palestrantes específicos que você sabe que têm a garantia de contar tópicos interessantes. Menos comum, as pessoas vão ouvir representantes de empresas específicas.
Eu tinha uma estratégia muito simples: selecionamos tópicos sobre compiladores, metaprogramação e jogos, e dentro deles vamos para oradores famosos. Foi fácil escolher dentro dessa estratégia.
Para os revisores na gravação, o programa inteiro não apenas ficou no site , mas também foi complementado com slides. Você pode continuar o programa novamente, agora escolhendo relatórios sobre outro princípio e organizar por si mesmo, por assim dizer, uma segunda conferência.
Pluralismo de opiniões e BOF
É claro que nem todos estão interessados em tudo ao mesmo tempo. Às vezes, é visto de maneira especialmente brilhante. Por exemplo, em uma sessão do BOF sobre o tópico “C ++ contra todos”, um dos participantes sugeriu discutir o C ++ Enterprise Edition e parte do público não o entendeu imediatamente. Pelo contrário, era muito estranho para mim ouvir sonhos sobre como em outras tecnologias (Golang, JS e Java, nas quais, por um momento, eu entendo alguma coisa) tudo é cor-de-rosa - não é realmente assim!

É interessante que cheguemos aos relatórios pela manhã (obviamente), mas só podemos entender completamente a posição dos cúmplices no final da tarde.
Falando em sessões do BOF: elas se mostraram especialmente boas. Para aqueles que se esqueceram de repente, o BOF é algo como uma “mesa redonda” da noite, mas sem mesa e palestrantes - apenas moderadores e participantes. Apesar do tema inicialmente de Hollywood "C ++ contra todos", conseguimos não apenas não lutar um contra o outro, mas continuamos a nos comunicar por um longo tempo após a conclusão oficial. Mais precisamente, até o fechamento do site, quando a administração veio até nós e pediu para transferir a discussão para outro local (alguns o fizeram, continuando na próxima barra).
É claro que eu não estava no segundo BOF, mas, a julgar pela maneira como o público se uniu, tudo também ficou bom lá. Algo assim, pouco ortodoxo ou algo assim, basta olhar para esta foto.

O problema de escrever um habrapost sobre a conferência era muitas coisas. Se você começar a listar todos os palestrantes, todos os patrocinadores, traga uma foto de tudo que é legal em cada uma das arquibancadas - este post nunca terminará. Todo mundo que é mencionado aqui chegou aqui por acaso, e não com base em algum princípio justo.
Descoberta
Como apresentador da transmissão on-line, nunca consegui assistir a todo o relatório do começo ao fim. No entanto, isso também permitiu visitar mais de um relatório dentro do slot, o que é bastante específico. O mesmo se aplica a todos que fazem férias para você - por exemplo, fabricantes de stands em stands da empresa.
Mas há vários momentos em que todos os participantes se reúnem ao mesmo tempo e não há escolha - palestras, abertura e fechamento.
Na abertura, fiquei satisfeito pelo fato de Sergey Platonov sermp e Andrey Dmitriev real_ales do Grupo JUG.ru estarem no mesmo palco. Agora, a conferência está nas mãos de muitas pessoas, e Sergei assumiu o papel orgulhoso e mais importante do diretor do programa nesse processo. O rei está vivo, viva o rei! :-)

Palestra de abertura
Outro ponto que todos vimos e sobre o qual podemos especular. Foi hospedado por Nicolai Josuttis, autor da Biblioteca Padrão C ++ e Modelos C ++.

Para alguns, esses livros são percebidos como um texto sagrado e um conhecimento dado acima. Alguém, pelo contrário, é cético de que os bons velhos tempos em que os livros eram escritos e não havia cppreference não eram tão velhos, nem tão gentis, e seus autores deveriam ser considerados com suspeita em 2019.
E aqui vemos Nikolai com outro imperecível sobre "C ++ moderno" - e parece que este é um dos relatórios mais sensatos sobre o assunto. Provavelmente, isso afeta de alguma forma que ele é membro do comitê de padronização há quase vinte anos. Durante o ano, às vezes fazemos resumos de texto e transcrições de relatórios para Habr, e parece que esse é o primeiro candidato a uma análise detalhada.
Este é um relatório que me deixou com um vazio (agradável?) Em minha alma. O fato é que, se eu vejo algum tipo de código C ++, geralmente é algo no C ++ 98 no estilo "C com classes", e está escrito, apesar de parecer extremamente nojento, mas o mais simples e desajeitado possível. O relatório de Oleg não é assim. Neste relatório, Oleg aborda a questão de como escrever código para trabalhar com listas de tipos, semelhante ao Boost.Hana.

Até onde você está disposto a escrever um bom código - bom graças à metaprogramação? E o que acontecerá com esse código no futuro, os criadores do padrão realmente pensam e se preocupam com suas maneiras de usar? Tantas perguntas.
Olhei para este relatório simplesmente porque se trata do mecanismo de jogo e da Wargaming. Eu acho que muitos desenvolvedores entraram na programação precisamente porque jogavam jogos na infância e queriam fazer o mesmo. E aqui temos um desenvolvedor ao vivo da parte do cliente do World of Tanks - ou seja, apenas a parte em que todas as coisas mais interessantes são como geometria. Esta é outra conversa sobre metaprogramação, desta vez sobre a reflexão de funções nativas no Python e por que o Boost.Python não é necessário.

Em geral, escrever um programa em várias línguas ao mesmo tempo é uma questão teórica e prática muito interessante, que pode ser considerada sob ângulos completamente diferentes. Cada vez que você se conscientiza de métodos cada vez mais perversos que permitem fazer coisas cada vez mais sofisticadas. Por exemplo, meu último amor é o GraalVM, uma máquina virtual poliglota que permite escrever em C ++ com inserções em Python ou em Python com inserções em C ++, e não é de surpreender que eu tenha aderido a este relatório como se estivesse com um litro de cola "Moment".
A principal questão para o desenvolvedor não é o software do usuário final, mas a biblioteca - "por quê". Por que os usuários devem usar o que você cria? Nesse caso, Anton dá uma boa explicação: quase todo mecanismo de jogo é construído sobre a interpretação do conteúdo do jogo e a reflexão das estruturas internas, a fim de organizar o feedback dos objetos e da lógica do jogo, e precisamos do Python, e aqui podemos dar a volta em pleno crescimento!

Os rivais do relatório foram reativismo e inicialização. Um camarada disse que ele não tem escolha neste slot - devemos ir para reactivschina. Eu simplesmente não tive escolha - você precisa ir aos compiladores.
Lembre-se da observação anterior sobre a pergunta "por quê?" Por exemplo, aqui você está vendo o sistema mais legal de compatibilidade com atualizações de cadeias de ferramentas e, em seguida, o chefe pergunta - por quê? Claro, é por isso!

Justificativa sobre o valor do trabalho para a liderança, o uso de Conan (descobrimos que alguém não conhece sua existência!), Atualizações do Visual Studio e problemas de reprodutibilidade, uma atualização no C ++ 17 - muitos hacks ao longo do caminho para a introdução de recursos interessantes .

E também, em geral, é interessante como duas pessoas podem conduzir um bom relatório simultaneamente. Esse é um formato muito impopular porque complica insanamente a preparação para os alto-falantes - os custos do protocolo e da sincronização. Bem feito.
Ivan Čukić, “Design C ++ somente para movimentação”

Durante toda a minha vida, usei o KDE (exceto em raras ocasiões em que tive que pular o Xfce em cima do freeNX). Lembro-me de como o plasma caiu e depois parou. Às vezes, você passa longas noites conversando com desenvolvedores imaginários do KDE tentando fazer algo fora do comum. Eu não reclamo do KDE, pelo contrário - muito esforço foi gasto nele precisamente porque eu o amo muito. E agora um homem chega à conferência que coloca ainda mais esforço nela do que você . Principalmente porque ele não é um usuário, mas o desenvolvedor de Plasma e Atividades.

Ah sim, sobre o relatório. Este é outro relatório "todo mundo precisa saber", como Nicolai Josuttis. O nome dele mudou no último momento. Inicialmente, era apenas "design C ++ somente para movimentação", mas tornou-se "design C ++ somente para movimentação - Parte I". Isso ocorre porque o tópico em questão é muito grande e continua a crescer. Ivan enfatizou que é ruim nomear os relatórios como "Parte I" porque "Parte II" geralmente nunca acontece. Mas aqui é óbvio que as informações são facilmente digitadas em mais algumas partes. Ivan não se limitou a descrever os recursos da linguagem (como conceitos, etc. - bem, você entende), mas em algum momento ele arregaçou as mangas, investigou os problemas de desempenho, e o restante do relatório foi para Godbolt com listas de montadores pela metade tela. Quinze minutos alocados após o relatório para as perguntas foram completamente gastos. Em geral, parece ser um tópico muito quente.
Alexander Granin, Analisadores Monádicos
Em geral, com a programação funcional é de alguma forma triste. Recentemente, pensei em qual artigo traduzir para o Habr, li blogs aleatórios com o Hackernews, chorou. Há um grupo de líderes que não entendem nada no PF, mas estão tentando desesperadamente fingir que entendem combinando raras palavras inteligentes em uma ordem diferente, na esperança de que alguém o compre. Às vezes, eles se vêem quando copiam palavras da Wikipedia na ordem errada. Há um grupo que, pelo contrário, entende, mas já foi queimado pela experiência anterior de tentar explicar, e, portanto, sai com palavras gerais e faz belas apresentações. Separar alguns dos outros é difícil, especialmente quando você mesmo não entende. Isso e aquilo na forma de apresentação se assemelham a um lixo raro, do qual não está claro se o autor pode escrever pelo menos uma Todo-List com uma interface da web.
Neste contexto, Alexander "Monadic Parsers" - uma lufada de ar. Em primeiro lugar, o apresentador é capaz de programar em Haskell e faz isso profissionalmente. Em segundo lugar, essa é uma narrativa coerente com slides limpos e bonitos, preenchidos não com memorandos da Internet, mas com código. Em terceiro lugar, está claro que vale muito.

O relatório examinou os analisadores monádicos: como essa abordagem difere de outros tipos de análise (analisadores combinatórios à la Boost :: Spirit, geradores de analisadores, soluções ad hoc como máquinas de estados finitos crescentes etc.), quais são suas vantagens e desvantagens e quais são as manifestações de conceitos tão importantes da programação funcional como functor, functor aplicativo e mônada. Em geral, tudo o que você queria (e não queria) saber sobre o tópico lá.
Viktor Kirilov, “O guia do mochileiro para construções mais rápidas”
Quando você vem (ou até olha de soslaio) em C ++ após a experiência com outras tecnologias, torna-se um pouco assustador devido à velocidade da montagem. Depois de escrever um artigo sobre o Habr, como depurei o navegador Chromium, e meu principal problema não era a complexidade da tarefa (a tarefa é muito simples), mas o Chromium pode ser montado por horas. Se você se acostumar com JavaScript ou Java, depois de alterar algumas letras no código, reinicie imediatamente os testes - então, para o código Chromium, tenho notícias desagradáveis, talvez você veja os resultados apenas pela manhã. Dói, dói.
Neste relatório, Victor decidiu aliviar nosso sofrimento, falando sobre as principais maneiras de otimizar a montagem. Mais precisamente, provavelmente tudo isso é conhecido por muitos desenvolvedores de experiência, mas para um iniciante - é inestimável.

O relatório deixou uma impressão mista na minha alma. Bem, isto é, primeiro você aprende muitas maneiras de economizar em ninharias, e então elas explicam que tudo isso não é necessário, porque em breve haverá módulos. Mas, no momento, não há módulos, e você ainda precisa usar todos esses truques antigos, e todo esse trabalho terá que ser jogado fora!
E, no entanto, os módulos (e as rotinas) estão apenas parcialmente em Clang, e os conceitos estão apenas no GCC. E o que fazer agora? Dói, dói. Mas depois do relatório, ficou um pouco melhor.
Áreas de discussão
Um recurso distinto das conferências do grupo JUG.ru é a disponibilidade de zonas de discussão obrigatórias. O orador não foge desconhecido logo após o relatório, mas continua a se comunicar em um site especialmente designado. Infelizmente ou felizmente, ninguém está gravando discussões em vídeo nas áreas de discussão. Felizmente - porque essa é uma maneira de discutir questões muito delicadas e, finalmente, admitir que você não entende alguma coisa :-)

Relatórios restantes
Havia muito mais relatórios. Agora eu parei em algum lugar no meio do segundo dia. Você pode falar sobre eles sem parar, por isso vale a pena mudar essa discussão para os próximos posts sobre Habré. Libere transcrições, faça uma análise detalhada de resumos e assim por diante. Inscreva-se no blog da empresa JUG.ru Group e aguarde as novidades!
Os participantes da conferência (incluindo aqueles que assistiram à transmissão ao vivo) poderão ver todos os relatórios na gravação. Você já deve ter entradas, se tiver preenchido um feedback - verifique seu e-mail. Todo o resto terá que esperar um tempo bastante decente.
Para completar a descrição dos relatórios, aqui está uma foto do insubstituível Anton Polukhin na palestra de encerramento! Anton é muito legal. No entanto, existe um receio de que ele seja questionado com tanta frequência sobre o trabalho no Standard e no Boost que um dia ele parará de responder ... mas até agora temos a chance de descobrir tudo o que é necessário!

Exposição
No centro do local havia uma grande exposição. Muitas empresas se reuniram de toda a Rússia para nos dar um feriado de verdade. Você pode dirigir matraquilhos, participar de sorteios e assim por diante. Tudo o que você pode esperar da área de exibição da conferência.

Viemos não apenas da Rússia - por exemplo, houve um estande da comunidade CoreHard da Bielorrússia, que também fez sua conferência em Minsk .

Entre o caso, você pode comprar um livro em uma livraria improvisada.

Além disso, agora temos sempre o chamado Demo Stage. Essa é uma plataforma em que os relatórios ao vivo são exibidos ou um vídeo é transmitido da cena de um dos corredores.

Todos os tipos de prêmios são jogados lá às vezes. Por exemplo, Denis Kalanov explicou por que os torneios esportivos têm sido muito mais do que "apenas lazer corporativo" e resumiu os resultados do torneio de kicker de dois dias.

Pós-festa e o quê? Onde Quando?
No final do primeiro dia, não se podia apenas ir aos bofs, mas também participar da sessão de esportes “O quê? Onde Quando? (a amizade, como você se lembra) venceu e terminou o dia com uma pós-festa de fogo.


O que vem a seguir? Próximo C ++ Rússia 2019 Piter
Como você pode imaginar, após esse sucesso, o C ++ Russia não pode parar por aí. A próxima conferência será realizada neste outono - de 31 de outubro a 1 de novembro em São Petersburgo. O local ainda está sendo esclarecido - você precisa escolher o local mais apropriado para tantas pessoas.
Se você estiver pronto para fazer seu próprio relatório, é hora de fazê-lo. Você precisa seguir o link e fazer cuidadosamente tudo o que está escrito lá.
Vários oradores já são conhecidos.
Primeiro, este é o próprio Eric Nibler - um homem que agora é conhecido por quase todos graças ao seu trabalho no campo de desenvolvimento de Ranges no C ++ 20 e na biblioteca de range-v3. Ele também é desenvolvedor sênior no Facebook, membro ativo do comitê de padronização, autor de várias bibliotecas no Boost e membro do comitê diretor do Boost. De fato, um dos palestrantes mais procurados da conferência C ++.
O segundo desenvolvedor conhecido é Sean Parent, principal cientista e arquiteto da Adobe, que trabalha no Photoshop desde 1993 e, antes disso, na Apple na transição para o PowerPC. Ele também trabalhou no ChromeOS por um ano, mas retornou à Adobe. Apple, Google, Adobe - em diferentes épocas, essas empresas eram chamadas de "empresas dos sonhos", e ele visitou todas elas. Você também pode conversar com ele na área de discussão e fazer algumas perguntas interessantes e desconfortáveis (como perguntas sobre a necessidade de integrar o mecanismo JavaScript à infraestrutura C ++ do Photoshop, ou o que mais você gostaria de aprender com um dos melhores desenvolvedores da Adobe).
É claro que Anton Polukhin, da Yandex.Taxi, continua conosco. Anton é o representante da Rússia na ISO em reuniões internacionais do grupo de trabalho sobre padronização C ++. O autor de várias propostas aceitas para o padrão da linguagem C ++. Autor das bibliotecas Boost TypeIndex, DLL, Stacktrace e mantenedor ativo Any, Conversion, LexicalCast, Variant. Ele é o autor do Boost C ++ Application Development Cookbook e Second Edition.
E, finalmente, Alexander Bychuk, da Kaspersky Lab. Desde 2007, Alexander desenvolve o middleware e um sistema de gerenciamento eletrônico de documentos. Tudo isso foi escrito em C e C ++, portanto, o C ++ Enterprise Edition para Alexander não é ficção, mas trabalho diário. , — , . MQ-Brokers , , .
C++ Russia 2019 , .
! , ( Early Bird-). . , C++ Russia 2019 !