Visão geral do programa C ++ Russia 2019 Piter: assincronia, módulos, bibliotecas ... e táxi


O que essas pessoas têm em comum, além do fato de serem conhecidas no mundo C ++?


  • Sean parent
  • Eric Niebler
  • Marshalllow
  • Bryce adelstein lelbach
  • Anton Polukhin
  • Andrey Davydov

Resposta: todos eles virão para o C ++ na Rússia. Agora que o verão acabou e todo mundo voltou das férias, é hora de aguardar a próxima grande conferência C ++ : C ++ Russia 2019 Piter . Será abordado não apenas pelas pessoas desta lista, mas também por muitos outros oradores internacionais. 30 relatórios, 2 dias completos das 10h às 19h, sem histórias introdutórias e documentação de leitura de sílabas - imediatamente sólido.


Essa acabou sendo uma das conferências mais rápidas e mais qualitativamente organizadas, metade do programa ficou conhecida no verão: os palestrantes sabem claramente o que querem dizer na C ++ Rússia. Agora, o programa quase se estabilizou e é hora de abrir o véu do segredo.


Dividimos todos os relatórios em "categorias de planejamento", que depois preenchemos com tópicos interessantes. Aqui estão elas:


  • Capacidades de novos padrões
  • C ++ prático
  • A infraestrutura
  • Multithreading
  • Metaprogramação
  • Programação funcional

As categorias são apresentadas em ordem decrescente do número de relatórios: a partir de nove relatórios sobre novos recursos padrão e terminando com o único relatório sobre o funcionalismo no momento - “Marcação do tipo em tempo de compilação” por Ivan Chukich. Ainda existem algumas manchas brancas no programa que serão preenchidas literalmente nas próximas semanas. Vamos ver o que aconteceu como resultado.


Headliners


Todos os palestrantes são figuras conhecidas da comunidade; escrever sobre eles pode ser interminável. Vamos falar em detalhes pelo menos sobre aqueles que listamos antes do kat.


Sean Parent é um dos principais pesquisadores e arquitetos da divisão móvel da Adobe. Ele desenvolveu uma carreira brilhante em empresas mundialmente famosas. No período de 1988-1993, ele ajudou a Apple a escrever seus famosos sistemas operacionais para PowerPC, desde 1993 começou a desenvolver o Photoshop, passou 2009 no Google, desenvolvendo o ChromeOS e retornou à Adobe. O que uma pessoa com uma história tão rica pode nos dizer? No momento, você pode encontrar no YouTube muitos vídeos com a participação dele, por exemplo - uma série de relatórios Better Code , que fala por si. Esta não é a primeira vez que estamos na C ++ Rússia: no início da história da conferência, em 2015, foi ele quem fez o primeiro relatório de abertura e, em 2017, fizemos uma entrevista de meia hora com ele. Tudo o que Sean Parent diz é diferente em profundidade e elaboração, não é material de “olhar e esquecer”, mas algo que vale a pena lembrar e voltar sempre.


Agora ele voa para nós com um novo relatório da série BetterCode: Relationships , e você definitivamente não quer perder isso. É por isso que o relatório foi escolhido pela palestra da conferência - todos os participantes poderão vê-lo antes de se dispersarem em salas separadas.


A segunda palestra é liderada por Eric Niebler . Aqui seria o fim da história, porque recentemente o nome dele foi mais do que conhecido publicamente, graças às gamas padrão , e os niblóides que se tornaram o termo (veja a marcação no CppReference ) receberam o nome dele. Mas, de um modo geral, tudo isso é apenas hype, e ele fez muito pelo C ++.


Eric é um membro ativo do C ++ Standardization Committee, um desenvolvedor sênior do Facebook, e foi nessa época que ele começou a se envolver. Nos tempos anteriores ao facebook, ele era consultor, trabalhando individualmente e com o BoostPro Computing . No impulso, ele não apenas escreveu várias de suas bibliotecas e desempenhou o papel de gerente de lançamento, mas também se tornou membro do Comitê de Boost Steering, que (de acordo com o nome) lida com questões estratégicas de desenvolvimento. A moda de Eric está escrevendo um código poderoso e ao mesmo tempo elegante, desenvolvendo belas abstrações (que, em geral, você pode ver em intervalos ... ou não, dependendo das preferências). Igualmente importante, ele pode transmitir pensamentos não apenas com código, mas também na forma de relatórios inteligíveis e inteligíveis.


Eric chega com a palestra “Uma abstração unificadora para assíncrona em C ++” . Brevemente sobre o problema: a assincronia em C ++ está agora na parte inferior, deve ser reparada. Ferramentas padrão como promessas, futuros, threads, bloqueios e até std::async - todas funcionam de maneira ineficiente ou quebrada ou ambas ao mesmo tempo. Horror. Pior ainda, não existe uma maneira padrão de dizer exatamente onde o trabalho deve ser feito. No entanto, temos várias tarefas específicas de C ++ que precisam: algoritmos paralelos, computação heterogênea, rede e E / S, fluxos reativos ... todas as principais tecnologias críticas que esperam uma abstração padrão há anos para refletir a idéia de computação assíncrona. Neste relatório, Eric cavará conosco a pesquisa do Comitê, na qual eles determinaram as operações básicas por trás de qualquer cálculo assíncrono. Veremos por que futuros e promessas diminuem tanto, o que é um executor, o que é comum entre retornos de chamada e corotinas e como a abstração "Tarefa" (que agora está sendo estudada ativamente no Facebook por P&D) pode fazer a mesma revolução na assincronização que ocorreu com o advento dos iteradores em código síncrono regular.


Se Eric é um engenheiro e pesquisador legal que raramente fala de forma adequada, Marshall Clow é a estrela de conferências internacionais. Se você for ao YouTube e digitar o nome dele na pesquisa , o YouTube se tornará sua home page pessoal. CppCon, C ++ Agora, ACCU, EuroLLVM - tudo o que você pode imaginar. E agora aqui é C ++ Rússia. Curiosamente, com tudo isso, ele não é apenas mais um evangelista regular, mas C ++ - um desenvolvedor com 35 anos de experiência, o autor original do Boost.Algorithm (e geralmente o colaborador do impulso por mais de 15 anos), o chefe do grupo de trabalho sobre bibliotecas no Comitê Padronização em C ++ e desenvolvedor líder da libc ++ (biblioteca padrão para LLVM). Uma lenda viva e uma pessoa que escreveu magistralmente em C ++ quando metade das pessoas que lêem este texto ainda não nasceu.


Marshall virá com o relatório "Endurecendo a biblioteca de modelos padrão C ++" , a essência é esta: como a biblioteca padrão é usada por todos em uma fileira, ela deve ser muito bem escrita e não quebrar em nenhum lugar. O relatório é dedicado a uma discussão de técnicas e ferramentas que fazem o libc ++ da LLVM atender a esses requisitos: depuração, suítes e cobertura de testes, análise estática e dinâmica, difusão. Obviamente, este relatório não é apenas para desenvolvedores de LLVM, todos podem tirar suas próprias idéias e tirar suas próprias conclusões.


Bryce Adelstein Lelbach estudou C ++ um pouco menos que Marshall, mas ele tem algo a surpreender. Ele é um dos líderes globais na comunidade C ++. Sua atividade social é que Bryce agora é o diretor do programa das principais conferências C ++ - CppCon e C ++ Now, chefe do Grupo de Usuários C ++ em São Francisco e no Vale do Silício. No Comitê de Padronização, ele participa do JTC1 / SC22 / WG21, é o presidente do Tooling Study Group (SG15) e da Library Evolution Incubator (SG18), e no C ++ 17 trabalhou em uma longa lista de coisas (algoritmos paralelos, executores, futuros, remetentes / receptores, multidimensionais). matrizes, módulos). Entre outras coisas, Bryce lidera a equipe de desenvolvimento da CUDA na NVIDIA, às vezes ajudando o LLVMLinux e se comprometendo com o Boost.


Bryce chega com uma palestra sobre "A biblioteca de sincronização C ++ 20" . Desde que o C ++ 11 foi lançado, mais de uma dúzia de anos se passaram, o mundo mudou! Nos dias do C ++ 11, os processadores com vários núcleos já estavam firmemente estabelecidos, mas o número normal de núcleos era de dois ou quatro. Tudo o que é mais do que dez, como o povo antigo, foi indicado pela palavra "muitos". "Dois", "quatro" e "muitos". Agora, é normal ter dezenas de objetivos e suportar atrasos de sincronização de um milissegundo inteiro. Tornou-se comum ter dezenas e centenas de threads, e a palavra "muitos" agora significa "centenas de milhares". Dez anos atrás, era improvável que alguém pudesse imaginar claramente os problemas atuais do multithreading. Atualmente, usando ferramentas tradicionais, somos confrontados com uma latência inaceitavelmente alta ou com conteúdo inaceitável para sincronizar threads. A biblioteca C ++ 20 oferece novas soluções - primitivas leves que podem funcionar com centenas de milhares de threads. std::atomic::wait , std::atomic::notify_* , std::atomic_ref , std::counting_semaphore , std::latch , std::barrier ... Este relatório é construído como uma sequência de exemplos nos quais aprenderemos como usar todas essas ferramentas para criar um aplicativo moderno que possa ser executado em paralelo em praticamente qualquer hardware, desde CPUs incorporadas e de servidor até novas GPUs.


O próximo palestrante é o famoso desenvolvedor russo Anton Polukhin . Conhecido por relatórios em áreas em que o C ++ é considerado indispensável e coisas adicionais que seria bom ter em C ++. Representante da Rússia na ISO em reuniões internacionais do grupo de trabalho sobre padronização C ++, autor de várias propostas aceitas para o padrão da linguagem C ++. Em preparação para a conferência anterior, publicamos uma entrevista com ele em Habré . Em geral, o tópico da participação russa no Comitê já foi amplamente discutido tanto em Habré quanto em todos os lugares (veja, Yandex chegou a escrever um post sobre isso em VK), e agora não vamos abrir esse tópico. Você pode ir para stdcpp.ru e ver uma lista de representantes, agora é: Anton Polukhin, Anton Bikineev e Alexander Fokin. Anton também é autor de várias bibliotecas do Boost: TypeIndex, DLL, Stacktrace, está ativamente envolvida no suporte a Any, Conversion, LexicalCast, Variant. Ele escreveu o Boost C ++ Application Development Cookbook e a Segunda Edição.


Dessa vez, Anton chega com o relatório "C ++ Taxi Tricks" (o relatório é chamado dessa maneira, obviamente, porque Anton trabalha no Yandex.Taxi). A essência dos truques é como escrever soluções aparentemente conhecidas de maneira bonita e eficaz - por exemplo, no Pimpl, você pode eliminar a alocação dinâmica e fixar o cache.


Vamos diluir nossa lista com alguém que não trabalha no Comitê. Cumprimente Andrei Davydov, da JetBrains - ele trabalha na equipe ReSharper C ++ há três anos e muitos de nós usam os resultados de seu trabalho todos os dias. No relatório, Andrei vai falar sobre como a aparência dos módulos afetará o núcleo da linguagem C ++: se o compilador trabalhava com unidades de tradução uma de cada vez, com o advento dos módulos, as regras do jogo mudavam. Os seguintes tópicos serão discutidos:


  • o que é uma entidade alcançável e como ela difere do visível;
  • como os módulos afetam a ADL;
  • se as entidades com ligação interna podem vazar para outro módulo;
  • pode importar uma classe ao mesmo tempo que completa e incompleta;
  • o que acontecerá com as funções embutidas em um mundo modular.

Observe que este não é um relatório introdutório para os módulos para iniciantes. Espera-se que os alunos se familiarizem com os princípios dos módulos e entendam por que os módulos são necessários. A boa notícia é que, em primeiro lugar, entender isso é bastante simples (basta pesquisar no Google um bom artigo) e, em segundo lugar, este C ++ Rússia terá outra palestra introdutória emparelhada sobre módulos de Dmitry Kozhevnikov (também funciona no JetBrains).


O resto do programa


É bastante óbvio que é impossível contar cerca de 30 pessoas e seus 30 relatórios em um breve pós-anúncio sobre Habré. Portanto, tudo isso é descrito em mais detalhes no site oficial da conferência . É importante observar que o programa continua a mudar: por exemplo, como os apresentadores, com a ajuda do Comitê do Programa, continuam a melhorar seus relatórios, suas descrições também são atualizadas. Tão perto de 31 de outubro, tudo parecerá um pouco diferente, mas o significado geral permanecerá o mesmo.


Relatórios não são tudo!


Obviamente, uma conferência não é apenas relatórios, mas também um mar de comunicação. É aqui que a presença ao vivo difere da transmissão on-line, que também planejamos fazer. Dê uma olhada na lista acima - com a maioria dessas pessoas que eu gostaria de conhecer e discutir sobre algo importante. Temos uma oportunidade: após o final do relatório, todos vão para a área de discussão e conversam lá por tempo suficiente. No final do dia, as chamadas sessões BOF são organizadas (algo como uma mesa redonda, mas apenas todos estão participando).


Você pode apenas conhecer pessoas interessantes da comunidade que também vieram, mas sem um relatório. Você pode encontrar empresas de interesse, aprender algo com seus representantes e participar de concursos. Haverá atividades paralelas diferentes nas quais estamos pensando agora. Em resumo, tudo o que se pode imaginar sobre uma grande conferência.


Master classes


Além do programa principal da conferência, haverá também master classes (a participação nelas é estabelecida e paga separadamente). Eles serão realizados no dia anterior à conferência e, diferentemente dos relatórios, levarão pelo menos várias horas cada. Descrições detalhadas e termos de participação em master classes podem ser encontrados no site oficial .


Anton Polukhin - “C ++ ágil e moderno”


Anton é um desenvolvedor russo bem conhecido, sobre quem falamos um pouco mais alto neste artigo. Sua experiência como autor das bibliotecas Boost, um participante e o Comitê de Padronização, além de ampla prática, permite que ele escreva um código C ++ inteligente competente e ensine outras pessoas a fazê-lo.


Em qualquer grande base de código, você pode encontrar partes de código absolutamente incompreensível. Como regra, esse código é escrito para ganhar um pouco no desempenho do aplicativo ... e, como regra, esse código não é necessário em princípio, pois otimiza não o que é necessário, não no local onde é necessário e não como deveria. .


A master class começará com um pequeno exemplo, onde você encontrará todos os erros comuns da otimização prematura. Depois, ela seguirá o básico e considerará algoritmos e contêineres da biblioteca padrão (e não apenas a padrão), semântica de movimento e seu comportamento inesperado, multithreading. Este é um workshop completamente prático, usando o Google Benchmark e tarefas que parecem tarefas para otimizar códigos específicos.


Rainer Grimm - “Programação Incorporada com C ++ Moderno”


Rainer Grimm é um experiente instrutor de programação em C ++, Python e desenvolvedor de software da Alemanha. O Embedded é uma das principais áreas de aplicação do C ++ moderno. O C ++ permite a comunicação direta com o hardware e fornece abstrações para a construção de sistemas complexos. No C ++ moderno, há muitas coisas que ajudam na incorporação. São coisas como semântica de movimento e funções constexpr (para melhorar o desempenho), literais definidos pelo usuário e características de tipo (para sistemas para os quais a segurança máxima é crítica), ponteiros inteligentes e std::array (para menos bagunçar os recursos )


Esta aula principal ensina como usar melhor os recursos do C ++ em relação ao incorporado. Em particular, fornece respostas para uma ampla gama de perguntas sobre as limitações exclusivas de tais sistemas. Este workshop é ministrado em inglês.


Pavel Filonov - “Integração Contínua para C ++ - Desenvolvedor”


Pavel Filonov acredita que o processo de desenvolvimento não deve terminar após um commit, portanto, ele apresentará uma master class sobre Integração Contínua. O objetivo da master class é dar o próximo passo em direção à integração contínua (CI, Eng. Continuous Integration) e automatizar a resolução de dependência, montagem e teste de unidade para todas as plataformas de destino. Como resultado, os participantes poderão implantar de forma totalmente independente toda a infraestrutura necessária para a CI e preparar um projeto C ++ para montagem automática e teste de unidade.


O que vem a seguir?


E então você precisa vir para o C ++ Russia 2019 Piter! A conferência será realizada de 31 de outubro a 1 de novembro em São Petersburgo. Os ingressos podem ser adquiridos no site oficial . Você também pode se familiarizar com a versão atual do programa em detalhes (lembro que ele continua a mudar).


Uma observação importante sobre preços e descontos. O sistema de emissão de bilhetes pode emitir tickets de quatro tipos: Acadêmico, Pessoal, Padrão e Online. Por que é importante: se você comprar as passagens, custará muito mais barato que uma passagem para a empresa. E se você é estudante, estudante de graduação ou professor (e há um documento apropriado para confirmação), o desconto é especialmente impressionante. Condições detalhadas, é claro, precisam ser lidas no site - tudo o que foi escrito acima foi apenas informativo.


Antecipando o C ++ Russia 2019 Piter, você pode assistir a gravações de duas conferências anteriores que ocorreram nesta primavera em Moscou e Novosibirsk.Em geral, todas as gravações dos últimos anos estão bem no nosso canal do YouTube . Assim, você pode avaliar visualmente a qualidade dos relatórios.


Encontre-me no C ++ Russia 2019 Piter!

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


All Articles