C++ and other lectures
Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir Boosty автора: https://boosty.to/cpp_lects_rus
Mostrar más📈 Análisis del canal de Telegram C++ and other lectures
El canal C++ and other lectures (@cpp_lects_rus) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 10 014 suscriptores, ocupando la posición 12 157 en la categoría Tecnologías y Aplicaciones y el puesto 63 447 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 10 014 suscriptores.
Según los últimos datos del 27 octubre, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de 52, y en las últimas 24 horas de 4, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 87.99%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 33.73% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 8 812 visualizaciones. En el primer día suele acumular 3 378 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 98.
- Intereses temáticos: El contenido se centra en temas clave como компилятор, c++, llvm, struct, compilers.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы.
Написать автору: @Tilir
Boosty автора: https://boosty.to/cpp_lects_rus”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 28 octubre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
void a(T& x) { x = t(x); } // a from t
T t(T x) { a(x); return x; } // t from a
Но см. ниже, этот дуализм работает не всегда.
18:38 Laws of exclusivity
std::vector a{0, 1, 1, 0};
erase(a, a[0]);
println("{}", a);
Не запуская годболт, догадайтесь что будет на экране. Потом посмотрите пример. Удивительно, но это даже не UB.
Далее Парент приводит правила исключения одновременных ссылок для Swift и Rust. Фактически то же правило есть в C++ (если вы не хотите проблем), но убедиться в его соблюдении -- задача разработчика.
29:05 Projections and Objects
Проекция это получение ссылки на часть объекта. Проекции могут быть инвалидированы как итераторы для контейнера или как отображение или как повисшая ссылка и т.д.
Оказывается дуализм между действием и трансформацией, описанный выше работает только для инкапсулированных (contained) объектов, но не для их проекций. Нам нужно чтобы выполнялся equational reasoning -- свободная замена равных подвыражений в выражениях.
Главное при проектировании типа для объектов это отношение часть/целое. Это отношение обладает свойствами связанности, ацикличности, сепарабельности и владения.
Если бы у нас были только отношения части и целого, то проблема, поставленная в начале, была бы решена. Увы, мир сложнее.
45:20 Extrinsic relashionships
Внешними называются все отношения, которые не часть/целое: хранение невладеющего указателя, хранение ключа или индекса на внешний массив, ссылка на глобальную переменную, использование примитивов синхронизации.
Важнейшая лемма, которой суммируется доклад: для возможности рассуждать о программе локально, внешние отношения между классами должны быть инкапсулированы в класс-владелец, хранящий их корректность в качестве своего инварианта.
54:40 Structural complexity
Проблема трёх тел как пример внешних взаимосвязей, приводящих к непредсказуемости системы. Виды структурной зависимости: деревья, полидеревья, DAG, полные графы. Фактически только структурная зависимость в форме деревьев решает поставленную проблему.
01:05:24 Summary
---
От себя добавлю что именно такого рода разматывание внешних связей между сущностями и то, как это привело к гораздо лучшему проектированию генератора llvm-snippy, я показывал на Zero-cost conf прошлого года. Но там от меня это был конкретный пример проектирования, к тому же изрядно перемешанный с деталями предметной области. Здесь же Шон Парент даёт очищенную эссенцию такого подхода, практически с математической точностью формулировок.
#talks template<typename T> struct A {
typedef int M;
struct B {
typedef void M;
struct C;
struct D;
};
};
template<typename T> struct A<T>::B::D : A<T*> {
M m;
// expected-error@-1 {{field has incomplete type 'M' (aka 'void'}}
};
А вот тут он ошибки не ожидает, это должно работать:
template<typename T> struct G {
struct B {
typedef int M;
struct C {
typedef void M;
struct D;
};
};
};
template<typename T> struct G<T>::B::C::D : B {
M m;
};
Я полагаю, достойные студенты растут. Боевые. Самому иногда страшно становится.
#cpp_postgraduate