uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

Библиотека С# С++

Библиотека С# С++

Відкрити в Telegram

https://t.me/+WgGTjeH0p1NjMDFi - ссылка на канал По всем вопросам- @workakkk @ai_machinelearning_big_data - Machine learning @itchannels_telegram - 🔥лучшие ит-каналы @csharp_ci- C# академия @pythonlbooks- python книги📚 РКН: clck.ru/3Fmvsw

Показати більше

📈 Аналітичний огляд Telegram-каналу Библиотека С# С++

Канал Библиотека С# С++ (@cpluscsharp) є активним учасником. На даний момент спільнота об'єднує 10 071 підписників, посідаючи 12 048 місце в категорії Технології та додатки та 63 001 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 10 071 підписників.

За останніми даними від 25 жовтня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 2, а за останні 24 години на -5, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 9.62%. Протягом перших 24 годин після публікації контент зазвичай збирає 3.71% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 969 переглядів. Протягом першої доби публікація в середньому набирає 374 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 4.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як c++, rust, github, .net, asp.net.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“https://t.me/+WgGTjeH0p1NjMDFi - ссылка на канал По всем вопросам- @workakkk @ai_machinelearning_big_data - Machine learning @itchannels_telegram - 🔥лучшие ит-каналы @csharp_ci- C# академия @pythonlbooks- python книги📚 РКН: clck.ru/3Fmvsw”

Завдяки високій частоті оновлень (останні дані отримано 26 жовтня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

10 071
Підписники
-524 години
-27 днів
+230 днів
Залучення підписників
жовт '26
жовтень '26
+37
в 0 каналах
вересень '26
+82
в 0 каналах
Get PRO
серпень '26
+46
в 0 каналах
Get PRO
липень '26
+39
в 0 каналах
Get PRO
червень '26
+18
в 0 каналах
Get PRO
травень '26
+25
в 0 каналах
Get PRO
квітень '26
+21
в 0 каналах
Get PRO
березень '26
+31
в 0 каналах
Get PRO
лютий '26
+134
в 0 каналах
Get PRO
січень '26
+280
в 1 каналах
Get PRO
грудень '25
+45
в 0 каналах
Get PRO
листопад '25
+159
в 2 каналах
Get PRO
жовтень '25
+53
в 0 каналах
Get PRO
вересень '25
+119
в 1 каналах
Get PRO
серпень '25
+140
в 1 каналах
Get PRO
липень '25
+172
в 0 каналах
Get PRO
червень '25
+165
в 0 каналах
Get PRO
травень '25
+46
в 0 каналах
Get PRO
квітень '25
+91
в 1 каналах
Get PRO
березень '25
+38
в 1 каналах
Get PRO
лютий '25
+109
в 0 каналах
Get PRO
січень '25
+133
в 0 каналах
Get PRO
грудень '24
+414
в 0 каналах
Get PRO
листопад '24
+1 175
в 0 каналах
Get PRO
жовтень '24
+1 196
в 0 каналах
Get PRO
вересень '24
+627
в 2 каналах
Get PRO
серпень '24
+575
в 1 каналах
Get PRO
липень '24
+484
в 1 каналах
Get PRO
червень '24
+730
в 1 каналах
Get PRO
травень '24
+469
в 35 каналах
Get PRO
квітень '24
+501
в 44 каналах
Get PRO
березень '24
+446
в 20 каналах
Get PRO
лютий '24
+435
в 1 каналах
Get PRO
січень '24
+735
в 43 каналах
Get PRO
грудень '23
+720
в 38 каналах
Get PRO
листопад '23
+231
в 1 каналах
Get PRO
жовтень '23
+459
в 18 каналах
Get PRO
вересень '23
+387
в 0 каналах
Get PRO
серпень '23
+648
в 0 каналах
Get PRO
липень '23
+506
в 0 каналах
Get PRO
червень '23
+291
в 0 каналах
Get PRO
травень '23
+1 094
в 0 каналах
Get PRO
квітень '23
+698
в 0 каналах
Get PRO
березень '23
+73
в 0 каналах
Get PRO
лютий '23
+23
в 0 каналах
Get PRO
січень '23
+60
в 0 каналах
Get PRO
грудень '22
+87
в 0 каналах
Get PRO
листопад '22
+457
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
26 жовтня+1
25 жовтня0
24 жовтня0
23 жовтня+2
22 жовтня+2
21 жовтня+1
20 жовтня+3
19 жовтня+3
18 жовтня+9
17 жовтня+4
16 жовтня+1
15 жовтня0
14 жовтня+1
13 жовтня0
12 жовтня+1
11 жовтня+1
10 жовтня+1
09 жовтня0
08 жовтня0
07 жовтня0
06 жовтня+2
05 жовтня0
04 жовтня+1
03 жовтня0
02 жовтня+3
01 жовтня+1
Дописи каналу
«what the fu**?»: самый странный комментарий в игровом коде Одна строка из Quake III заменяет деление и корень сдвигом битов и магическим числом 0x5f3759df. Покажу на примере, как это работает, и посчитаю погрешность: 3.44% до уточнения и 0.175% после одного шага Ньютона. А кто на самом деле придумал трюк, вы вряд ли угадаете. https://youtube.com/shorts/oIpqqzNNCHo

2
👨🏻‍💻 AI в бэкенд-задачах — на Podlodka Backend Crew Код теперь может написать агент, но за результат всё ещё отвечаете вы.+4
👨🏻‍💻 AI в бэкенд-задачах — на Podlodka Backend Crew Код теперь может написать агент, но за результат всё ещё отвечаете вы. Организаторы Podlodka Backend Crew собрали конференцию о том, как работать с бэкендом после того, как AI написал код. Причём в программе нет докладов в жанре «у нас все получилось» — только реальная практика. Конференция пройдёт с 26 по 30 октября. 🧠️️️️ Участники сезона: • Разберут пулл‑реквесты от агента и попробуют предотвратить возможные инциденты на рулетке кейсов • Выяснят, какие неожиданные ловушки скрываются в OpenAPI и на что обращать внимание при разработке контрактов • Разберут антипаттерны в AI-юнит-тестах, узнают, как их избежать с помощью современных инструментов, и заберут себе новый агентский скилл • Спроектируют бэкенд дейтинг-приложения на архитектурной кате и решат, где в нём действительно нужен AI. Формат Podlodka Backend Crew — комфортный онлайн: 5 дней, утренние и вечерние сессии в Zoom. Отдельный плюс — цена: заметно ниже привычных конференций, при этом вы не просто слушаете о чужом опыте, а разбираете PR и отвечаете за релиз, проектируете систему в команде и расследуете чужие провалы. Такого вовлечения не получить на обычной конференции. 🔗 Изучайте программу и присоединяйтесь: https://podlodka.io/becrew Промокод на скидку для подписчиков backendcrew
344
3
20 готовых программ на C++ с кодом: практика для новичков и не только (2026) 20 готовых программ на C++ с исходным кодом: от
20 готовых программ на C++ с кодом: практика для новичков и не только (2026) 20 готовых программ на C++ с исходным кодом: от калькулятора до LRU-кэша и алгоритма Дейкстры. Копируйте, запускайте и прокачивайте навыки в 2026 году. https://uproger.com/20-programm-na-cpp-s-kodom-2026/
656
4
💡 В C можно заполнить три элемента массива, а остальные обнулятся автоматически Для этого есть designated initializers — ини
💡 В C можно заполнить три элемента массива, а остальные обнулятся автоматически Для этого есть designated initializers — инициализация с указанием индексов: int flags[256] = { ['A'] = 1, ['Z'] = 1, [42] = 99 }; Получаем: • flags['A'] и flags['Z'] равны 1. • flags[42] равен 99. • Все остальные элементы равны 0, даже если массив локальный. 'A' здесь — символьная константа: её числовое значение используется как индекс. Удобно для таблиц флагов, классификации символов и индексов из enum. Не нужно вручную перечислять сотни нулей. Возможность входит в стандарт C начиная с C99.
692
5
Альфа-Банк ищет скиллового коллегу QA Fullstack на C# Предлагаем полную удалёнку или гибридный график – у нас классные ИТ-офисы в Москве, Питере и Екатеринбурге. Что нужно делать – Разрабатывать автотесты на C#. – Запускать функциональные, регрессионные и интеграционные тесты, включая API. – Снижать количество дефектов в диалоге с разработкой и бизнесом. Какие навыки важны – Опыт автоматизации на C# и ручного тестирования от года. – Знание API (SOAP, REST), SQL, основ клиент-серверной архитектуры и тест-дизайна. Условия и развитие – Сильное сообщество QA и C#-разработчиков: можно получить совет и поделиться опытом на митапе и в блоге на Хабре. – Реальная перспектива роста: технический трек развития, в том числе до C#-лида Оставляйте отклик по ссылке.
1 038
6
Rust vs Go vs C# в 2026: почему наивный Rust проиграл Go Сравнение производительности Rust, Go и C# в 2026 году: наш тест на
Rust vs Go vs C# в 2026: почему наивный Rust проиграл Go Сравнение производительности Rust, Go и C# в 2026 году: наш тест на аллокациях, где наивный Rust уступил Go, а Rust с ареной оказался в 7 раз быстрее, плюс разбор GC, памяти, холодного старта, Green Tea и .NET 10 Спор «что быстрее: Rust, Go или C#» обычно заканчивается ссылкой на чей-то бенчмарк, где один язык обгоняет другой в полтора раза. Мы решили проверить простую вещь и сразу получили результат, который ломает привычную картину: наивный код на Rust проиграл Go по времени выполнения. Ниже разбираем, почему так вышло, что на самом деле означает «производительность» в 2026 году и как выбирать язык под конкретную нагрузку. https://uproger.com/rust-vs-go-vs-csharp-proizvoditelnost-2026/
1 225
7
Наследование в чистом C: одно правило, и всё работает В C нет классов, но наследование можно собрать вручную. Правило одно: р
Наследование в чистом C: одно правило, и всё работает В C нет классов, но наследование можно собрать вручную. Правило одно: родительская структура должна стоять первым полем дочерней. struct Animal { int age; char name[32]; }; struct Dog { struct Animal base; // обязательно первым char breed[32]; }; struct Dog d = { {3, "Rex"}, "Labrador" }; print_animal((struct Animal *)&d); // работает Почему это законно: стандарт C гарантирует, что в начале структуры нет паддинга, а указатель на структуру, приведённый к нужному типу, указывает на её первое поле. Поэтому &d и &d.base это один и тот же адрес, и функция, которая ждёт Animal*, спокойно работает с Dog. Это не трюк из головоломок, а основа реальных систем. Так устроены объекты в CPython, где каждая структура начинается с PyObject_HEAD, так же работают GObject в GTK и многие структуры ядра Linux. Если родитель лежит не первым полем, ядро достаёт его через макрос container_of. Есть важная оговорка: обратное приведение Animal* в Dog* корректно, только если объект действительно Dog. Компилятор этого не проверит, и ошибка здесь превращается в тихое повреждение памяти.
1 039
8
🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собеседование: Senior C# разработчик про
🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собеседование: Senior C# разработчик проведёт его в прямом эфире. Можно посмотреть, как всё устроено изнутри, и понять, насколько ты готов к такому интервью. Как это будет: 📂 Собеседует Александр Моргунов — Senior C# разработчик, 7+ лет в европейских высоконагруженных сервисах. Отвечает разработчик-доброволец; 📂 Всё как на настоящем собесе: Александр задаёт те вопросы и задачи, которые даёт кандидатам на своих интервью. Заранее их никто не знает; 📂 После каждого ответа Александр даст обратную связь: что прозвучало сильно, а что стоило раскрыть иначе. Так станет понятнее, на что обращают внимание на собесе; 📂 В конце можно задать любой вопрос. Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир -> @shortcut_csharp_bot Реклама. О рекламодателе.
706
9
UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA).
UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA). Он обрабатывает байты по одному, собирает кодовую точку Unicode и проверяет корректность последовательности. Таблица utf8d выполняет две задачи: * определяет класс очередного байта; * выбирает следующее состояние автомата. `ACCEPT` означает, что кодовая точка полностью прочитана. `REJECT` - обнаружена ошибка. Остальные состояния означают, что нужны дополнительные байты. Подход удобен для потоковой обработки: если символ разорван между двумя сетевыми пакетами, достаточно сохранить состояние и накопленное значение. Нюанс: после последнего байта тоже нужно проверить состояние. Если оно не ACCEPT, строка некорректна - например, оборвалась посреди символа.
1 059
10
Участвуй во всероссийском ИТ-чемпионате МТС True Tech Champ 2026 c призовой фондом 10 250 000 рублей. Если тебе нравятся алго
Участвуй во всероссийском ИТ-чемпионате МТС True Tech Champ 2026 c призовой фондом 10 250 000 рублей. Если тебе нравятся алгоритмы, структуры данных и задачи на чистую логику — участвуй в алгоритмическом треке с индивидуальным зачетом. Решай задачи разного уровня сложности: от базовых до тех, что проверяют скорость мышления и умение оптимизировать решения за ограниченное время. В финале лучшие 120 участников алгоритмического трека сразятся в лайв-кодинге за шесть призовых мест и 2 750 000 рублей. Всех финалистов ждут: — Лимитированный мерч; — Сертификаты об участии; — Масштабное мероприятие с выступлениями хэдлайнеров и фестивальными активностями. Успей зарегистрироваться и пройти отборочный этап до 27 сентября
1 175
11
🔍Тестовое собеседование с Senior C# разработчиком уже завтра 15 сентября(уже завтра!) в 19:00 по мск приходи онлайн на откры
🔍Тестовое собеседование с Senior C# разработчиком уже завтра 15 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle C# разработчика. Как это будет: 📂 Александр Моргунов, старший C# разработчик с опытом 7+ лет в Европейских высоконагруженных сервисах, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Александр будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Александру Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_csharp_bot Реклама. О рекламодателе.
550
12
💡 C++: std::map не обязан создавать временный std::string при каждом поиске Если ключ уже приходит как std
💡 C++: std::map<std::string, ...> не обязан создавать временный std::string при каждом поиске Если ключ уже приходит как std::string_view, можно использовать transparent comparator: std::map<std::string, int, std::less<>> status_codes{ {"not_found", 404}, {"timeout", 504} }; std::string_view key = "timeout"; auto match = status_codes.find(key);
1 099
13
🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть курсы, читать документацию и всё р
🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть курсы, читать документацию и всё равно топтаться на месте. А можно попасть в правильное окружение, где каждый день обсуждают новые инструменты, вакансии, реальные кейсы, ошибки и то, что уже завтра станет стандартом. Здесь собраны папки и каналы по разным направлениям IT, чтобы ты быстрее находил нужных людей, идеи и полезный контент - без бесконечного поиска. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_ci Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подпишись и сохрани, здесь регулярно появляются новые подборки, инструменты и материалы, которые реально помогают расти быстрее.
858
14
🖥 C++: объект уничтожен, а 16 МиБ всё ещё заняты std::weak_ptr может удерживать память даже при expired() == true. Причина в
🖥 C++: объект уничтожен, а 16 МиБ всё ещё заняты std::weak_ptr может удерживать память даже при expired() == true. Причина в std::make_shared: обычно он размещает объект и управляющий блок в одной аллокации. В примере на скриншоте массив на 16 МиБ находится прямо внутри Blob. После удаления последнего shared_ptr: * деструктор объекта вызывается; * expired() возвращает true; * общий блок памяти остаётся выделенным, пока существует хотя бы один weak_ptr. После сброса последней слабой ссылки блок можно освободить. Что делать: удалять протухшие ссылки из долгоживущих кешей. Для крупных объектов также можно рассмотреть отдельную аллокацию через std::shared_ptr<Blob>(new Blob()). Нюанс касается размера самого объекта. Если данные хранятся в обычном std::vector, его отдельный буфер освобождается при вызове деструктора. [Разбор от Microsoft](https://devblogs.microsoft.com/oldnewthing/20230815-00/?p=108602)
951
15
C++26 получил новый контейнер `std::hive` - что-то между `std::vector` и `std::list`. Главная фишка: элементы после вставки практически не двигаются в памяти. Поэтому указатели и итераторы на существующие объекты остаются валидными даже после вставок и удаления других элементов. Как это работает: - данные хранятся не в одном массиве, а в нескольких блоках - удалённые элементы не сдвигают остальные - свободные места потом переиспользуются - специальный skipfield позволяет быстро пропускать удалённые слоты В результате: - вставка и удаление - амортизированно O(1) - указатели остаются стабильными - локальность памяти заметно лучше, чем у std::list - но случайного доступа через [] нет - порядок вставки не гарантируется - Особенно полезно для игровых движков, пулов соединений, систем частиц и других случаев, где объекты постоянно создаются и удаляются, а другие части программы хранят указатели на них. Коротко: std::hive - не более быстрый vector, а скорее гораздо более cache-friendly альтернатива list. https://sandordargo.com/blog/2026/09/02/cpp26-hive
1 154
16
Бесплатная книга, после которой компиляторы перестают казаться магией По ходу книги вы собираете собственный компилятор с нул
Бесплатная книга, после которой компиляторы перестают казаться магией По ходу книги вы собираете собственный компилятор с нуля: от исходного кода до ARM-ассемблера. В качестве языка используется небольшой поднабор TypeScript, поэтому примеры читаются почти как псевдокод. Разбираются AST, parser combinators, парсинг, генерация кода, типизация, вывод типов, heap allocation и даже garbage collection. Есть исходники компилятора, а также порты на Python и OCaml. Читать бесплатно: https://keleshev.com/compiling-to-assembly-from-scratch/
1 338
17
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_1001_notes Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: https://t.me/+S4hinvO3QI43ZjNi Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
1 079
18
🧠 Алгоритм, который превращает выражение в форму, где приоритеты операторов больше не нужны Алгоритм сортировочной станции Д
🧠 Алгоритм, который превращает выражение в форму, где приоритеты операторов больше не нужны Алгоритм сортировочной станции Дейкстры получил название в честь железнодорожной сортировочной станции - и работает очень похоже. Он преобразует обычную инфиксную запись: 3 + 4 * 2 в постфиксную: 3 4 2 * + После этого калькулятору уже не нужно каждый раз разбираться с приоритетами операторов и строить полноценное AST. Как работает идея: - один стек хранит операторы; - второй поток формирует результат; - операторы с более высоким приоритетом выходят раньше; - скобки и ассоциативность обрабатываются по правилам стека. В итоге выражение можно вычислять последовательно и без рекурсивного спуска. Простой, старый и до сих пор очень красивый алгоритм для парсеров, калькуляторов и компиляторов. #Algorithms #C #Programming #Compilers #ComputerScience
1 048
19
Четыре строки делают сложение `float` заметно точнее При последовательном сложении чисел с плавающей точкой часть младших бит
Четыре строки делают сложение `float` заметно точнее При последовательном сложении чисел с плавающей точкой часть младших битов теряется из-за округления. На больших массивах эта ошибка постепенно накапливается. Алгоритм Кэхэна хранит потерянную часть в отдельной переменной и компенсирует её на следующем шаге: float kahanSum(const float *nums, int count) { float sum = 0.0f; float correction = 0.0f; for (int i = 0; i < count; ++i) { float adjusted = nums[i] - correction; float next = sum + adjusted; correction = (next - sum) - adjusted; sum = next; } return sum; } Здесь correction запоминает ошибку округления, которая потерялась при предыдущем сложении. Обычная сумма быстрее, но Kahan Summation полезен там, где важна численная точность: - научные расчёты; - статистика и аналитика; - графика и симуляции; - обработка больших массивов; - накопление очень маленьких значений рядом с большими. Метод предложил Уильям Кэхэн в 1965 году. Небольшое усложнение цикла может заметно уменьшить ошибку без перехода на более тяжёлый числовой тип.
1 079
20
## C++ enum class: безопасно, но местами раздражает enum class даёт строгую типизацию и не позволяет случайно смешивать значе
## C++ enum class: безопасно, но местами раздражает enum class даёт строгую типизацию и не позволяет случайно смешивать значения с обычными числами. Но есть нюанс: даже если enum используется как набор флагов, Flags::Read | Flags::Write не скомпилируется. Для |, &, ^, ~ придётся вручную определить операторы и приводить значения к базовому типу. Это правильное поведение с точки зрения type safety, но бойлерплейта становится заметно больше. Поэтому в некоторых C++-проектах для битовых флагов до сих пор используют обычный enum внутри namespace: меньше защиты, зато код значительно проще.
1 151