La Conferencia de C ++ Rusia es, con mucho, la más severa y al mismo tiempo conferencia de tubo en los últimos tiempos. Se celebró en el Parque del Congreso del Hotel Ucrania en Moscú y reunió a una audiencia de más de seiscientas personas.
Como dijo uno de los camaradas después de la fiesta: "He estado tratando de aprender C ++ de la escuela, pero constantemente encuentro algo nuevo". Aquí, casi todos los informes hablan de algo nuevo. A veces, sobre algo completamente alucinante que siempre te acompañará.
C ++ Rusia siempre se ha distinguido por la presencia de oradores especiales e informes especiales, y esta vez no fue la excepción. Echemos un vistazo a lo que sucedió en estos dos días ocupados.

Videos y fotos
Mucha gente va a tales artículos para hacer dos preguntas clásicas: "¿Cuándo serán los videos?" y "¿Cuándo serán las fotos?"
Los registros de los informes estarán disponibles para todos los participantes inmediatamente después de completar el formulario de comentarios. Después de aproximadamente un mes, en el mismo enlace, todos los videos se volverán a cargar , pero con la mejor calidad. La calidad que es ahora es buena, pero puede ser aún mejor.
La oportunidad de completar un comentario se cerrará este sábado a las 23:59 . ¡Necesito llegar a tiempo!
Pero aquellos que no asistieron a la conferencia esperarán mucho más tiempo para grabar los informes. Lo más probable es que los publiquemos más cerca de la fecha de la próxima Rusia C ++.
Las fotos de los participantes ya están en VKontakte . La lista de fotos también se repondrá, por lo que es mejor suscribirse a todo el grupo a la vez.
Alcance
Como esperábamos, todos los informes se pueden dividir condicionalmente en categorías:
- Características modernas y nuevas del lenguaje C ++;
- Programación funcional;
- Metaprogramación;
- Multithreading, concurrencia, asincronía y todo-todo-todo;
- Cómo vivir con las herramientas existentes.

Mientras se abren camino a través de la conferencia, todos tienen que organizar un número determinado y averiguar en qué quieres participar en vivo y qué quieres ver en la grabación.
Hay varios enfoques para viajar a través del programa. En uno, eliges entre temas interesantes. En otro, vas a oradores específicos que conoces que tienen la garantía de contar temas interesantes. Con menos frecuencia, las personas van a escuchar a representantes de compañías específicas.
Tenía una estrategia muy simple: seleccionamos temas sobre compiladores, metaprogramación y juegos, y dentro de ellos vamos a oradores famosos. Fue fácil elegir dentro de tal estrategia.
Para los revisores en la grabación, todo el programa no solo permaneció en el sitio , sino que también se complementó con diapositivas. Puede volver a pasar por el programa, ahora elegir informes sobre algún otro principio y organizar una segunda conferencia para usted.
Pluralismo de opiniones y BOF
Está claro que no todos están interesados en todo al mismo tiempo. A veces se ve especialmente brillante. Por ejemplo, en una sesión de BOF sobre el tema "C ++ contra todos", uno de los participantes sugirió discutir C ++ Enterprise Edition, y parte de la audiencia no lo entendió de inmediato. Por el contrario, fue muy extraño para mí escuchar sueños sobre cómo en otras tecnologías (Golang, JS y Java, en las que, por un momento, entiendo algo) todo es color de rosa, ¡no es realmente así!

Es interesante que lleguemos a los informes por la mañana (obviamente), pero solo podemos entender completamente la posición de los cómplices al final de la tarde.
Hablando de sesiones BOF: resultaron ser especialmente buenas. Para aquellos que lo han olvidado repentinamente, BOF es algo así como una "mesa redonda" vespertina, pero sin una mesa y altavoces, solo moderadores y participantes. A pesar del tema inicial de Hollywood "C ++ contra todos", logramos no solo no pelear entre nosotros, sino que continuamos comunicándonos durante mucho tiempo después de la finalización oficial. Más precisamente, hasta el cierre del sitio, cuando la administración vino por nosotros y solicitó transferir la discusión a otro lugar (algunos lo hicieron, continuando en la barra siguiente).
Por supuesto, no estaba en el segundo BOF, pero a juzgar por la forma en que las audiencias se unieron, todo resultó ser bueno allí también. Algo así, poco ortodoxo o algo así, solo mira esta foto.

El problema al escribir un habrapost sobre la conferencia fue muchas cosas. Si comienza a enumerar todos los oradores, todos los patrocinadores, traiga una foto de cada cosa genial en cada uno de los stands: esta publicación nunca terminará. Todos los que se mencionan aquí llegaron aquí por casualidad, y no sobre la base de algún principio justo.
Descubrimiento
Como presentador de la transmisión en línea, nunca he podido ver el informe completo desde el principio hasta el final. Sin embargo, esto también permitió visitar más de un informe dentro del espacio, lo cual es bastante específico. Lo mismo es cierto para todos los que te hacen unas vacaciones, por ejemplo, los fabricantes de stands en los stands de la empresa.
Pero hay varios momentos en que todos los participantes se reúnen al mismo tiempo, y no hay otra opción: notas clave, apertura y cierre.
En la apertura, me complació que Sergey Platonov sermp y Andrey Dmitriev real_ales del Grupo JUG.ru estuvieran en el mismo escenario. Ahora la conferencia está en manos de muchas personas, y Sergei asumió el papel orgulloso y más importante del director del programa en este proceso. El rey está vivo, ¡viva el rey! :-)

Conferencia inaugural
Otro punto que todos vimos y sobre el que podemos especular. Fue alojado por Nicolai Josuttis, autor de The C ++ Standard Library y C ++ Templates.

Para algunos, tales libros se perciben como un texto sagrado y el conocimiento dado anteriormente. Alguien, por el contrario, es escéptico de que los buenos viejos tiempos en que se escribían libros y no había preferencias no eran tan viejos, ni tan amables, y sus autores deberían ser considerados con sospecha en 2019.
Y aquí vemos a Nikolai con otro imperecedero sobre el "C ++ moderno", y parece que este es uno de los informes más sensibles sobre el tema. Probablemente, de alguna manera afecta que haya sido miembro del comité de estandarización durante casi veinte años. Durante el año, a veces hacemos resúmenes de texto y transcripciones de informes para Habr, y parece que este es el primer candidato para un análisis detallado.
Este es un informe que me dejó con un vacío (¿placentero?) En mi alma. El hecho es que si veo algún tipo de código C ++, generalmente es algo en C ++ 98 en el estilo de "C con clases", y está escrito, aunque de aspecto extremadamente desagradable, pero lo más simple y torpe posible. El informe de Oleg no es así. En este informe, Oleg aborda el problema de cómo escribir código para trabajar con listas de tipos, similar a Boost.Hana.

¿Hasta dónde estás dispuesto a llegar para escribir un buen código, bueno gracias a la metaprogramación? ¿Y qué sucederá con este código en el futuro? ¿Los creadores del estándar realmente piensan y se preocupan por sus formas de uso? Tantas preguntas
Miré este informe simplemente porque se trata del motor del juego y Wargaming. Creo que muchos desarrolladores entraron en la programación precisamente porque jugaban juegos en la infancia y querían hacer lo mismo. Y aquí tenemos un desarrollador en vivo de la parte cliente de World of Tanks, es decir, la parte donde todas las cosas más interesantes son como la geometría. Esta es otra charla sobre metaprogramación, esta vez sobre el reflejo de las funciones nativas en Python y por qué Boost.Python no es necesario.

En general, escribir un programa en varios idiomas a la vez es una pregunta teórica y práctica muy interesante, que puede considerarse desde ángulos completamente diferentes. Cada vez que te das cuenta de métodos cada vez más perversos que te permiten hacer cosas cada vez más sofisticadas. Por ejemplo, mi último amor es GraalVM, una máquina virtual políglota que le permite escribir en C ++ con inserciones en Python o en Python con inserciones en C ++, y no es sorprendente que me haya adherido a este informe como si estuviera con un litro de pegamento "Momento".
La pregunta principal para el desarrollador no es el software del usuario final, sino la biblioteca: "por qué". ¿Por qué los usuarios deben usar lo que se les ocurre? En este caso, Anton da una buena explicación: casi cualquier motor de juego se basa en la interpretación del contenido del juego y el reflejo de las estructuras internas para organizar la retroalimentación de los objetos del juego y la lógica del juego, y necesitamos Python, ¡y aquí podemos dar la vuelta en pleno crecimiento!

Los rivales del informe fueron el reactivismo y la inicialización. Un compañero dijo que no tiene otra opción en este espacio: debemos ir a reactivschina. Simplemente no tenía otra opción: debes ir a los compiladores.
Recuerde el comentario anterior sobre la pregunta "¿por qué?" Por ejemplo, aquí está aserrando el mejor sistema de compatibilidad con las actualizaciones de la cadena de herramientas, y luego el jefe pregunta: ¿por qué? ¡Por supuesto, por eso!

Justificación del valor del trabajo para el liderazgo, el uso de Conan (¡en BOF descubrimos que alguien no sabe nada de su existencia!), Actualizaciones de Visual Studio y problemas de reproducibilidad, una actualización en C ++ 17: muchos trucos para la vida en el camino de la introducción de características interesantes .

Y, sin embargo, en general, es interesante cómo dos personas al mismo tiempo podrán realizar un buen informe. Este es un formato muy impopular porque complica enormemente la preparación para los oradores: los costos del protocolo y la sincronización. Bien hecho
Ivan Čukić, “Diseño C ++ solo para movimiento”

Toda mi vida he estado usando KDE (excepto en raras ocasiones cuando tuve que omitir Xfce además de freeNX). Recuerdo cómo cayó el plasma, y luego se detuvo. A veces pasas largas tardes hablando con desarrolladores imaginarios de KDE que intentan hacer algo fuera de lo común. No me quejo de KDE, por el contrario, se ha dedicado tanto esfuerzo precisamente porque me encanta mucho. Y ahora viene a la conferencia un hombre que se esforzó aún más que tú . Principalmente porque no es un usuario, sino el desarrollador de Plasma and Activities.

Oh sí, sobre el informe. Este es otro informe de "todo el mundo necesita saber", como lo ha hecho Nicolai Josuttis. Su nombre cambió en el último momento. Inicialmente, era solo "diseño C ++ solo para movimiento", pero se convirtió en "diseño C ++ solo para movimiento - Parte I". Esto se debe a que el tema en cuestión es muy amplio y continúa creciendo. Ivan enfatizó que es malo nombrar los informes "Parte I" porque "Parte II" generalmente nunca sucede. Pero aquí es obvio que la información se escribe fácilmente en un par de partes más. Ivan no se limitó a describir las características del lenguaje (como conceptos, etc., bueno, ya entiendes), pero en algún momento se arremangó, profundizó en los problemas de rendimiento y el resto del informe fue a Godbolt con listas de ensambladores por la mitad pantalla Quince minutos asignados después de que el informe de las preguntas se haya gastado por completo. En general, parece ser un tema muy candente.
Alexander Granin, Analizadores monádicos
En general, con la programación funcional es de alguna manera triste. Recientemente pensé qué artículo traducir a Habr, leí blogs al azar con Hackernews, lloré. Hay un grupo de líderes que no entienden nada en el FP, pero están tratando desesperadamente de pretender que entienden combinando palabras ingeniosas raras en un orden diferente, con la esperanza de que alguien lo compre. A veces se encuentran cuando copian palabras de Wikipedia en el orden incorrecto. Hay un grupo que, por el contrario, comprende, pero ya se ha agotado por la experiencia previa de tratar de explicar, y por lo tanto se sale con palabras generales y dibuja hermosas presentaciones. Separar a algunos de los demás es difícil, especialmente cuando usted mismo no comprende. Tanto esto como aquello en forma de presentación se asemeja a una basura rara, de la que no está claro si el autor puede escribir al menos una Lista de Todo con una interfaz web.
En este contexto, los "Analizadores Monádicos" de Alexander - un soplo de aire. En primer lugar, el presentador puede programar en Haskell y lo hace profesionalmente. En segundo lugar, esta es una narración coherente con diapositivas limpias y hermosas llenas no con notas de Internet, sino con código. En tercer lugar, todo está claro que vale mucho.

El informe examinó los analizadores monádicos: cómo este enfoque difiere de otros tipos de analizadores (analizadores combinatorios a la Boost :: Spirit, generadores de analizadores, soluciones ad hoc como máquinas de estados finitos, etc.), cuáles son sus ventajas y desventajas y cuáles son las manifestaciones de conceptos tan importantes de programación funcional como un functor, un aplicador y una mónada. En general, todo lo que quería (y no quería) saber sobre el tema allí.
Viktor Kirilov, "La guía del autoestopista para construcciones más rápidas"
Cuando vienes (o incluso miras por el rabillo del ojo) en C ++ después de la experiencia con otras tecnologías, se vuelve un poco espeluznante debido a la velocidad de ensamblaje. Una vez que escribí un artículo sobre Habr, cómo depuré el navegador Chromium, y mi problema principal no era la complejidad de la tarea (la tarea es muy simple), sino que Chromium se puede ensamblar durante horas. Si se acostumbra a JavaScript o Java, después de cambiar un par de letras en el código, reinicie inmediatamente las pruebas; luego, para el código de Chromium, tengo noticias desagradables, tal vez verá los resultados solo por la mañana. Duele, duele.
En este informe, Víctor decidió aliviar nuestro sufrimiento al hablar sobre las principales formas de optimizar el ensamblaje. Más precisamente, probablemente todo esto sea conocido por muchos desarrolladores sabios de experiencia, pero para un principiante, es invaluable.

El informe dejó una impresión mixta en mi alma. Bueno, es decir, al principio aprendes muchas maneras de ahorrar en pequeñeces, y luego te explican que todo esto no es necesario, porque pronto habrá módulos. Pero en este momento no hay módulos, y aún necesita usar todos estos viejos trucos, ¡y entonces todo este trabajo tendrá que desecharse!
Y, sin embargo, los módulos (y las rutinas) están en parte solo en Clang, y los conceptos solo están en GCC. ¿Y qué hacer ahora? Duele, duele. Pero después del informe mejoró un poco.
Áreas de discusión
Una característica distintiva de las conferencias grupales de JUG.ru es la disponibilidad de zonas de discusión obligatorias. El orador no huye desconocido después del informe, pero continúa comunicándose en un sitio especialmente designado. Desafortunadamente o afortunadamente, nadie está grabando discusiones de video en áreas de discusión. Afortunadamente, porque esta es una manera de discutir temas muy delicados y finalmente admitir que no entiendes algo :-)

Informes restantes
Hubo muchos más informes. Ahora me detuve en algún lugar a mediados del segundo día. Puede hablar de ellos sin cesar, por lo que vale la pena trasladar esta discusión a nuestras futuras publicaciones en Habré. Publica transcripciones, realiza un análisis detallado de los resúmenes, etc. Suscríbete al blog de la empresa JUG.ru Group y espera las noticias!
Los participantes de la conferencia (incluidos los que vieron la transmisión en vivo) podrán ver todos los informes en la grabación. Ya debe tener entradas, si completó un comentario, verifique su correo. Todo lo demás tendrá que esperar un tiempo bastante decente.
Para completar la descripción de los informes, aquí hay una foto del insustituible Anton Polukhin de la nota final. Anton es muy genial. Sin embargo, existe cierto temor de que le pregunten tan a menudo sobre trabajar en el Estándar y sobre Boost que algún día dejará de responder ... ¡pero hasta ahora tenemos la oportunidad de descubrir todo lo que se necesita!

Exposición
En el centro del sitio había una gran exposición. Muchas empresas se han reunido de toda Rusia para darnos unas verdaderas vacaciones. Podrías conducir futbolín, participar en sorteos, etc. Todo lo que puede esperar del área de exhibición de la conferencia.

Venimos no solo de Rusia, por ejemplo, hubo un stand de la comunidad CoreHard de Bielorrusia, que también hizo su conferencia en Minsk .

Entre los casos, podrías comprar un libro en una librería improvisada.

Además, ahora siempre tenemos la llamada Demo Stage. Esta es una plataforma en la que los informes en vivo van o se transmite un video desde la escena de uno de los pasillos.

Todo tipo de premios se juegan allí a veces. Por ejemplo, Denis Kalanov explicó por qué los torneos deportivos han sido mucho más que "solo ocio corporativo" y resumió los resultados del torneo de kicker de dos días.

Afterparty y qué? Donde ¿Cuándo?
Al final del primer día, uno no solo podía ir a los bofs, sino también participar en la sesión deportiva “¿Qué? Donde ¿Cuándo? (Amistad, como recordarán) ganó y terminó el día con una ardiente fiesta posterior.


Que sigue Siguiente C ++ Rusia 2019 Piter
Como puede imaginar, después de tal éxito, C ++ Rusia no puede detenerse allí. La próxima conferencia se llevará a cabo este otoño , del 31 de octubre al 1 de noviembre en San Petersburgo. El lugar aún se está aclarando: debe elegir el lugar más apropiado para tanta gente.
Si está listo para hacer su propio informe, entonces es hora de hacerlo. Debe seguir el enlace y hacer cuidadosamente todo lo que está escrito allí.
Ya se conocen varios oradores.
En primer lugar, este es Eric Nibler, un hombre que ahora es conocido por casi todos gracias a su trabajo en el campo de desarrollo de Rangos en C ++ 20 y la biblioteca de rangos-v3. También es desarrollador sénior en Facebook, miembro activo del comité de estandarización, autor de varias bibliotecas en Boost y miembro del comité directivo de Boost. De hecho, uno de los oradores más buscados en la conferencia C ++.
El segundo desarrollador conocido es Sean Parent, científico principal y arquitecto de Adobe, que trabajó en Photoshop desde 1993, y antes de eso, en Apple en la transición a PowerPC. También trabajó en ChromeOS durante un año, pero regresó a Adobe. Apple, Google, Adobe: en diferentes momentos, estas compañías se llamaban "compañías soñadas", y las visitaba a todas. También puede comunicarse con él en el área de discusión de la misma manera y hacerle algunas preguntas interesantes e incómodas (como preguntas sobre la necesidad de integrar el motor de JavaScript en la infraestructura C ++ de Photoshop, o qué más le gustaría aprender de uno de los mejores desarrolladores de Adobe).
Por supuesto, Anton Polukhin de Yandex.Taxi continúa quedándose con nosotros. Anton es el representante de Rusia en ISO en las reuniones internacionales del grupo de trabajo sobre normalización C ++. El autor de varias propuestas aceptadas para el estándar de lenguaje C ++. Autor de las bibliotecas Boost TypeIndex, DLL, Stacktrace y mantenedor activo Any, Conversion, LexicalCast, Variant. Es autor de Boost C ++ Application Development Cookbook y Second Edition.
Y finalmente, Alexander Bychuk de Kaspersky Lab. Desde 2007, Alexander ha estado desarrollando middleware y un sistema de gestión de documentos electrónicos. Todo esto fue escrito en C y C ++, por lo que C ++ Enterprise Edition para Alexander no es ficción, sino trabajo diario. , — , . MQ-Brokers , , .
C++ Russia 2019 , .
! , ( Early Bird-). . , C++ Russia 2019 !