С/С++ Portal | Программирование
前往频道在 Telegram
Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика Сотрудничество, реклама: @devmangx Работаем с @Spiral_Yuri РКН: https://clck.ru/3Foc4d
显示更多📈 Telegram 频道 С/С++ Portal | Программирование 的分析概览
频道 С/С++ Portal | Программирование (@cpportal) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 14 822 名订阅者,在 技术与应用 类别中位列第 8 405,并在 俄罗斯 地区排名第 43 843 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 14 822 名订阅者。
根据 15 九月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -138,过去 24 小时变化为 -10,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 14.16%。内容发布后 24 小时内通常能获得 7.89% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 2 099 次浏览,首日通常累积 1 170 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 28。
- 主题关注点: 内容集中在 linux, ядро, c++, процессор, указатель 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика
Сотрудничество, реклама: @devmangx
Работаем с @Spiral_Yuri
РКН: https://clck.ru/3Foc4d”
凭借高频更新(最新数据采集于 16 九月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
14 822
订阅者
-1024 小时
-477 天
-13830 天
帖子存档
Алгоритм Флойда для поиска циклов находит петлю в связном списке, используя всего два указателя и O(1) дополнительной памяти.
Один указатель перемещается на один узел за шаг, второй на два. Если цикл существует, они гарантированно встретятся.
После этого один указатель возвращают в начало списка, и оба начинают двигаться по одному узлу за шаг. Точка, в которой они снова встретятся, и есть точное начало цикла.
Одно элегантное доказательство из модульной арифметики лежит в основе одного из самых известных алгоритмов для связных списков.
👉 @Cpportal
Хакатон на космических данных. Санкт-Петербург, Красноярск или онлайн из любой точки страны.
Стартуем 18 сентября.
За выходные участники доводят одну из задач до рабочего решения.
Санкт-Петербург. К 2035 году над Землёй должен работать топливный узел, у которого заправляются корабли, и откуда он будет получать топливо - с Земли, с Луны или из резерва - пока не решил никто. Команде предстоит собрать схему поставок, посчитать резервы и решить, во что вкладываться сразу. Призовой фонд 1,2 млн ₽.
Красноярск. Спутник видит горящий лес раньше любого наземного поста, но вместе с пожаром ловит нагретые крыши, факелы на месторождениях и блики на воде. Команде предстоит научить сервис отличать настоящий очаг от шума, обвести гарь и выдать площадь в гектарах. Призовой фонд 600 тыс. ₽.
Лучшие забирают приз на площадке и билет в московский финал 25–27 сентября, где разыграют ещё 2,4 млн рублей.
Команда 3–5 человек, недостающих можно найти на платформе.
Регистрация по ссылке космохакатон.рф
Парень, который хотел делать игры, теперь целыми днями чинит вебхуки платежей.
Тот, кто мечтал написать свою операционную систему, выбирает между библиотеками для выбора даты.
Человек, который выучил C, чтобы понять, как работают компьютеры, теперь живёт в тикетах и созвонах.
Мы все начинали программировать, потому что хотели что-то создавать.
А потом каким-то образом работа превратилась в обслуживание того, что мы уже создали.
👉 @Cpportal
От исходного кода до процессора: разберись, как работает программа 💻
Стартует практический курс YADRO «Системное программирование с использованием языка С» для тех, кто уже знаком с синтаксисом C и хочет разобраться, как программа работает изнутри.
Формат: курс пройдет онлайн с октября 2026 по май 2027 года. Занятия — раз в неделю, где 80% времени будет посвящено практике.
Этот курс для тебя, если ты:
🔵 учишься в вузе;
🔵 уверенно владеешь базовыми конструкциями C;
🔵 понимаешь, как работают указатели, структуры данных и динамическая память;
🔵 знаешь основные алгоритмы и структуры данных.
*️⃣ Будет плюсом опыт разработки под Linux.
Материалы для подготовки и форму регистрации можно найти — по ссылке 🔗
18 сентября — приходи на онлайн-трансляцию, где мы расскажем подробнее о практических курсах и ответим на все вопросы. После вебинара пройдет обзорная лекция про системное программирование и роль языка С. Регистрация — здесь.
127.0.0.1 изначально не назывался localhost.
В RFC 790 от 1981 года сеть 127 была просто помечена как «зарезервированная».
Так она и оставалась на протяжении нескольких следующих RFC.
Только RFC 990 в 1986 году наконец закрепил за ней конкретное назначение — loopback.
А сам адрес 127.0.0.1 впервые появился в RFC только в 1993 году.
Это реальный кусок истории интернета, который начался с одного неиспользуемого числа.
👉 @Cpportal
🔥 Приглашаем на бесплатный открытый вебинар курса «Программист С»: «Указатели в Си — от адреса к управлению памятью»
🗓 Когда: 24 сентября, 20:00 (мск)
Указатели — это не просто синтаксис, а ключ к пониманию того, как Си общается с памятью. Без них невозможно осознанно работать с массивами, строками, структурами и динамическими данными. На вебинаре разберём указатели от самого основания — адресов и операторов — до передачи параметров по ссылке, чтобы вы перестали бояться звёздочек и начали управлять памятью уверенно.
Что будет на вебинаре:
• Разбор ключевых понятий: адрес переменной, операторы & и *, объявление и разыменовывание указателей — разберём, как Си работает с памятью напрямую;
• Пошаговый анализ связи указателей, массивов и функций — выясним, как передавать параметры по ссылке и заставлять функции изменять переменные вызывающего кода.
👉 Зарегистрируйтесь https://otus.pw/X08Z/?erid=2W5zFHyhWhX
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Язык C.
Отличная статья: https://faultlore.com/blah/c-isnt-a-language/
Faultlore — «C больше не язык программирования»
Aria Desires, 2022
👉 @Cpportal
Для каждого поиска в C++ map со строковыми ключами не обязательно создавать временный std::string.
Прозрачный компаратор позволяет искать напрямую через string_view. Это особенно полезно, когда парсер уже хранит представление части входных данных.
👉 @Cpportal
Если функция checkout в C++ возвращает false, вызывающему коду остаётся только гадать, что именно пошло не так.
С появившимся в C++23
std::expected сигнатура функции может описывать и результат резервирования, и ожидаемые варианты ошибок. Это делает API проще в использовании.
👉 @CpportalМожно написать собственное CUDA-ядро на C++ и вызывать его из PyTorch как обычную функцию.
Цепочка выполнения будет такой:
Python → PyTorch → C++ Extension → CUDA Kernel → GPU
Что для этого нужно:
* C++-обёртка через PyTorch C++ API
* файл
.cu с CUDA-ядром
* связать всё через pybind11
Допустим, вы написали своё ядро сложения:
#include <torch/extension.h>
__global__ void add_kernel(
const float* a,
const float* b,
float* out,
int n) {
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx < n)
out[idx] = a[idx] + b[idx];
}
Теперь его нужно запускать так:
void add_cuda(torch::Tensor a,
torch::Tensor b,
torch::Tensor out) {
int n = a.numel();
int threads = 256;
int blocks = (n + threads - 1) / threads;
add_kernel<<<blocks, threads>>>(
a.data_ptr<float>(),
b.data_ptr<float>(),
out.data_ptr<float>(),
n);
}
Затем экспортируем функцию через pybind11:
PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
m.def("add_cuda", &add_cuda);
}
После этого собираем расширение:
from torch.utils.cpp_extension import load
ext = load(
name="my_extension",
sources=[
"my_extension.cpp",
"my_kernel.cu"
]
)
Теперь его можно использовать прямо из PyTorch:
out = torch.empty_like(a)
ext.add_cuda(a, b, out)
Подробнее это разобрано в руководстве PyTorch.
👉 @Cpportal+2
Можно оставить библиотеку на C и при этом использовать C++ для управления её ресурсами.
Небольшая обёртка вокруг
FILE* избавляет от необходимости вручную закрывать файл как при обычном выходе из функции, так и при возникновении исключения.
Именно такие абстракции C++ мне проще всего оправдать.
А ещё лучше — использовать defer.
👉 @CpportalRedis Cluster использует ровно 16 384 хеш-слота, и это число выбрано не случайно.
Главный трюк здесь — хеш-теги.
{user100}:cart и {user100}:orders хешируют только байты внутри {}.
Поэтому оба ключа попадают на один и тот же узел, что позволяет выполнять операции сразу над несколькими ключами в кластерном режиме.
👉 @CpportalРуководство, которое стоит всегда держать под рукой при выполнении заданий по программированию.
https://agner.org/optimize/optimizing_cpp.pdf
👉 @Cpportal
Сегодня узнал, что SQLite преобразует целые числа в текст сразу по две цифры.
Обычно преобразование числа в строку делают циклом с делением на 10 и взятием остатка от деления на 10.
SQLite избегает большей части этих операций: внутри хранится строка длиной 200 байт со всеми двузначными комбинациями от 00 до 99.
Затем SQLite просто берёт по две цифры за раз по нужному индексу, вместо того чтобы вычислять каждую цифру отдельно.
👉 @Cpportal
В Linux есть код ошибки, который означает, что вы получили блокировку, но предыдущий владелец умер, удерживая её:
EOWNERDEAD.
Теперь мьютекс принадлежит вам, и нужно разобраться, не оставил ли другой поток общие данные в состоянии незавершённого обновления.
👉 @CpportalДиректор Google по исследованиям написал корректор орфографии всего в 21 строку на Python.
Питер Норвиг сделал его как простую демонстрацию того, как работает вероятностное исправление опечаток.
Он генерирует слова, отличающиеся на одну или две правки, а затем выбирает наиболее вероятный вариант на основе корпуса текстов.
👉 @Cpportal
Любой эмодзи, любой символ CJK, любая некорректная последовательность байтов.
UTF-8-декодер Бьёрна Хёрмана обрабатывает всё это с помощью конечного автомата, упакованного в таблицу поиска, и небольшой функции декодирования.
type = utf8d[byte]
state = utf8d[256 + state*16 + type]
Некорректный ввод переводит автомат в состояние REJECT, а валидная последовательность возвращает его в ACCEPT.
👉 @CpportalСинтаксис рефлексии в C++26 выглядит отвратительно.
👉 @Cpportal
C++26 добавляет в язык контракты. С их помощью можно задавать предусловия и постусловия, а также другие ограничения.
Уже сейчас это работает в GCC 16.
Возьмём функцию, которая возвращает остаток от деления, как на изображении. Можно проверить, что делитель не равен нулю и является степенью двойки.
По умолчанию, если передать делитель, который нарушает контракт, вызывается обработчик и программа завершается.
Это означает, что функция вообще не должна выполняться, если параметры некорректны.
Поэтому я ожидал, что GCC сможет полностью избавиться от операции деления при оптимизации. Если n является степенью двойки, то
i % n можно заменить на более дешёвое i & (n - 1).
Но пока GCC эту оптимизацию не выполняет, как, возможно, и некоторые другие оптимизации, связанные с контрактами.
Добиться нужного результата можно с помощью конструкции [[assume ...]], появившейся в C++23.
👉 @Cpportal