С/С++ Portal | Программирование
前往频道在 Telegram
Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика Сотрудничество, реклама: @devmangx Работаем с @Spiral_Yuri РКН: https://clck.ru/3Foc4d
显示更多📈 Telegram 频道 С/С++ Portal | Программирование 的分析概览
频道 С/С++ Portal | Программирование (@cpportal) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 15 375 名订阅者,在 技术与应用 类别中位列第 8 387,并在 俄罗斯 地区排名第 42 543 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 15 375 名订阅者。
根据 27 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 604,过去 24 小时变化为 2,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 17.48%。内容发布后 24 小时内通常能获得 9.70% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 2 688 次浏览,首日通常累积 1 491 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 23。
- 主题关注点: 内容集中在 linux, ядро, c++, процессор, указатель 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика
Сотрудничество, реклама: @devmangx
Работаем с @Spiral_Yuri
РКН: https://clck.ru/3Foc4d”
凭借高频更新(最新数据采集于 28 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
15 375
订阅者
+224 小时
+817 天
+60430 天
帖子存档
В сентябре 1992 года разработчики Unix столкнулись с серьёзной проблемой при работе с Unicode. Хранение символов в 16-битном представлении могло приводить к появлению нулевых байтов, которые программы на C воспринимали как признак окончания строки. Более ранние кодировки также имели свои недостатки совместимости.
Однажды вечером Кен Томпсон и Роб Пайк отправились в небольшую закусочную в Нью-Джерси. Там Томпсон набросал схему новой кодировки прямо на бумажной подложке для тарелки.
Её устройство позволяло полностью сохранить совместимость с ASCII. Остальные символы представлялись последовательностями из нескольких байтов, причём такое представление исключало случайное появление нулевых байтов и разделителей путей Unix.
Вернувшись в Bell Labs, разработчики приступили к реализации своего замысла. Уже к пятнице их операционная система Plan 9 целиком работала с новой кодировкой.
Так появилась UTF-8.
Сегодня, спустя более тридцати лет, эта кодировка используется более чем на 99% веб-сайтов, для которых известно представление символов.
👉 @Cpportal
В Unix V7 (1979 года) команда
file могла определять, написан ли текст на английском языке, анализируя частоту встречаемости букв.
Она учитывала гласные, часто встречающиеся и редкие буквы.
Простая эвристика, которая в некоторой степени работает до сих пор.
👉 @CpportalОказывается,
memcpy вполне неплохо подходит для сериализации.
Звучит очевидно, но я уже собирался писать для этого отдельную функцию, пока не заметил, что по сути просто изобретаю слегка приукрашенный memcpy.
👉 @CpportalДо стандартизации операторов присваивания в языке C использовались операторы с обратным порядком символов, например
=+ вместо +=.
Знаменитый фрагмент кода с комментарием «Вы не должны этого понимать» в те времена выглядел ещё более странно.
👉 @CpportalОптимизация кода — невероятно увлекательная тема.
Когда вы умножаете число на константу (например, на 24), LLVM заменяет инструкцию умножения (
imul) комбинацией побитового сдвига влево (shl) и вычисления эффективного адреса (lea).
Сдвиг влево на 3 бита эквивалентен умножению на 8, а инструкция lea выполняет арифметические операции над выражением вида [base + index] и сохраняет полученный результат.
И всё это буквально ради экономии одного такта процессора! Ведь imul выполняется за 3 такта, а shl и lea — за 1 такт каждая.
Для множества других констант существуют таблицы с аналогичными эвристиками оптимизации. Разработчики оптимизирующих бэкендов компиляторов прилагают огромные усилия, чтобы сэкономить даже одну инструкцию, поэтому не сводите всю их работу на нет!
👉 @CpportalВ оригинальном исходном коде Doom 1993 года кто-то оставил это в главном заголовочном файле.
У id Software явно было своё мнение о языках программирования.
👉 @Cpportal
В своей лекции по случаю вручения премии Тьюринга Кен Томпсон показал, как компилятор C может внедрить бэкдор в программу login и скрыть атаку даже от собственного исходного кода.
Сам компилятор становится бэкдором, не оставляя никаких следов в исходном коде.
👉 @Cpportal
Посмотрите, как раньше традиционно реализовывали макрос
offsetof() в <stddef.h> на чистом C, ещё до появления встроенных функций компилятора.
Он приводит 0 (NULL) к указателю на структуру, получает адрес её поля через & и ->member, а затем преобразует полученный адрес в тип size_t.
Это не приводит к сбою, поскольку оператор & лишь вычисляет адрес на этапе компиляции, не обращаясь к памяти по нулевому адресу.
👉 @CpportalКогда ядро Linux удаляет элемент из связного списка с помощью
list_del(), оно не устанавливает указатели next и prev в NULL.
В типичных 64-битных системах вместо этого им присваиваются значения 0xdead000000000100 и 0xdead000000000122 (LIST_POISON1 и LIST_POISON2).
Эти заведомо некорректные адреса помогают обнаруживать ошибки, при которых код случайно обращается к удалённому элементу списка. Вместо того чтобы незаметно перейти по устаревшему указателю, ядро может вызвать исключение при обращении к легко распознаваемому адресу.
Этот механизм называется отравлением указателей (pointer poisoning).
👉 @CpportalRepost from Евгений Черкасов | Счастливый тимлид ♥ Frontend
Удалёнка — топ для работодателя
Удалёнку почему-то до сих пор обсуждают так, будто это подарок сотруднику.
Якобы, работодатель разрешил работать из дома — радуйся.
Однако бизнесу удалёнка тоже очень выгодна💸 Меньше денег уходит на офис
Аренда, ремонт, мебель, электричество, уборка, охрана, кофе, техника — офис стоит денег. И немаленьких. Чем меньше людей нужно каждый день усаживать за столы, тем меньше компания тратит просто на то, чтобы эти столы существовали.🌍 Нанимать можно везде
Не нужно искать человека среди тех, кто живёт рядом с офисом, готов ездить туда каждый день или вообще согласен переехать. Можно нанять хорошего специалиста из Петербурга, Казани, Новосибирска, Калининграда — откуда угодно.Я сейчас работаю в Т1, и люди в разных городах и часовых поясах для нас — обычное дело. 🎯 Удалёнка сама по себе продаёт вакансию
Допустим, у кандидата два похожих оффера. В одном — три дня в неделю надо тащиться в офис. В другом — работаешь откуда удобно. При прочих равных какой он выберет? Вот и получается, что за сильных людей можно конкурировать не только деньгами.🔕 Меньше болтовни, больше дела
В офисе очень легко подойти к человеку: — Есть минутка? И через 40 минут вы всё ещё треплетесь, а потом ещё вспоминай, что ты делал до этого. На удалёнке между мыслью и человеком появляется фильтр: сначала сформулируй, потом напиши, потом дождись ответа, а лучше сделай сам.Итого удалёнка: 💸 снижает расходы 🌍 расширяет рынок найма 🎯 делает вакансии привлекательнее 🔕 уменьшает количество случайных отвлечений И вот тут у меня вопрос: если бизнесу от удалёнки есть выгода — почему компании так упорно тащат людей в офис? А чем удалёнка выгодна уже самому сотруднику — расскажу в следующем посте у себя в канале Лайк, репост, подписка ⤵️ Реклама: ООО «Буду», ИНН 9703001100, erid: 2W5zFHhU3v1
Если заглянуть в исходный код ядра Linux, можно заметить, что проверки ошибок повсеместно обёрнуты в макросы
likely() и unlikely().
Они используют __builtin_expect, чтобы подсказать компилятору переместить редко выполняемые инструкции обработки ошибок в конец функции. Благодаря этому кэш инструкций L1 процессора остаётся заполненным кодом наиболее часто выполняемого пути (fast path).
👉 @CpportalРешето Эратосфена позволяет найти все простые числа до примерно 8 миллионов, используя всего 1 МБ памяти.
Каждое число представлено одним битом, а составные числа помечаются с помощью простых побитовых операций.
Этот метод до сих пор используется в генераторах простых чисел и при выборе оптимальных размеров хеш-таблиц.
👉 @Cpportal
Интервьюер: Поменяйте местами два целых числа в C без использования третьей временной переменной и без риска арифметического переполнения.
Системный программист:
В C, если вам нужен макрос, который при каждом развёртывании в пределах файла генерирует гарантированно уникальное имя переменной или структуры, в GCC и Clang есть малоизвестный встроенный макрос
__COUNTER__.
Он автоматически увеличивает своё значение на единицу (0, 1, 2, 3...) каждый раз, когда препроцессор обрабатывает его.
👉 @CpportalИменованные инициализаторы (designated initializers) в C позволяют задавать значения только тех элементов массива, которые вам нужны.
Все остальные элементы автоматически инициализируются нулями, что делает создание разреженных таблиц простым и удобным.
👉 @Cpportal
В ядре Linux используется хитрый макрос, позволяющий выявлять недопустимые условия ещё на этапе компиляции.
Если проверка не проходит, макрос создаёт массив с отрицательным размером, что заставляет компилятор выдать ошибку.
👉 @Cpportal
«Game Programming Patterns» Роберта Нистрома — одна из лучших книг, подробно объясняющих взаимосвязь архитектуры программного обеспечения и производительности систем.
В разделах, посвящённых локальности данных, байт-коду и пулам объектов, исключительно доступно разбираются компромиссы, связанные с производительностью на низком уровне.
gameprogrammingpatterns.com
👉 @Cpportal
Начните с этого вводного руководства по основам сжатия данных.
mattmahoney.net/dc/dce.html
👉 @Cpportal
💬👨💻🐍💩🤖🤖🐧👩💻🧑💻👋🦀
Дождались! Ребята сделали крутейший канал про IT новой эпохи
Нейросети, ИИ-агенты, вайбкодинг, вайбхакинг и новые инструменты уже меняют привычный мир технологий.
Там разбирают эти изменения и другие интересные IT-темы на простых картинках и понятном языке, а еще делятся полезными ресурсами и свежими новостями
Подписывайтесь: @IT_Portal
