uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali Библиотека С# С++ analitikasi

Библиотека С# С++ (@cpluscsharp) kanali faol ishtirokchi. Hozirda hamjamiyat 10 071 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 12 048-o'rinni va Rossiya mintaqasida 63 001-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 10 071 obunachiga ega bo‘ldi.

25 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 2 ga, so‘nggi 24 soatda esa -5 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 9.62% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 3.71% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 969 marta ko‘riladi; birinchi sutkada odatda 374 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent c++, rust, github, .net, asp.net kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“https://t.me/+WgGTjeH0p1NjMDFi - ссылка на канал По всем вопросам- @workakkk @ai_machinelearning_big_data - Machine learning @itchannels_telegram - 🔥лучшие ит-каналы @csharp_ci- C# академия @pythonlbooks- python книги📚 РКН: clck.ru/3Fmvsw”

Yuqori yangilanish chastotasi (oxirgi ma’lumot 26 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

10 071
Obunachilar
-524 soatlar
-27 kun
+230 kun
Obunachilarni jalb qilish
Okt '26
Oktabr '26
+37
0 kanalda
Sentabr '26
+82
0 kanalda
Get PRO
Avgust '26
+46
0 kanalda
Get PRO
Iyul '26
+39
0 kanalda
Get PRO
Iyun '26
+18
0 kanalda
Get PRO
May '26
+25
0 kanalda
Get PRO
Aprel '26
+21
0 kanalda
Get PRO
Mart '26
+31
0 kanalda
Get PRO
Fevral '26
+134
0 kanalda
Get PRO
Yanvar '26
+280
1 kanalda
Get PRO
Dekabr '25
+45
0 kanalda
Get PRO
Noyabr '25
+159
2 kanalda
Get PRO
Oktabr '25
+53
0 kanalda
Get PRO
Sentabr '25
+119
1 kanalda
Get PRO
Avgust '25
+140
1 kanalda
Get PRO
Iyul '25
+172
0 kanalda
Get PRO
Iyun '25
+165
0 kanalda
Get PRO
May '25
+46
0 kanalda
Get PRO
Aprel '25
+91
1 kanalda
Get PRO
Mart '25
+38
1 kanalda
Get PRO
Fevral '25
+109
0 kanalda
Get PRO
Yanvar '25
+133
0 kanalda
Get PRO
Dekabr '24
+414
0 kanalda
Get PRO
Noyabr '24
+1 175
0 kanalda
Get PRO
Oktabr '24
+1 196
0 kanalda
Get PRO
Sentabr '24
+627
2 kanalda
Get PRO
Avgust '24
+575
1 kanalda
Get PRO
Iyul '24
+484
1 kanalda
Get PRO
Iyun '24
+730
1 kanalda
Get PRO
May '24
+469
35 kanalda
Get PRO
Aprel '24
+501
44 kanalda
Get PRO
Mart '24
+446
20 kanalda
Get PRO
Fevral '24
+435
1 kanalda
Get PRO
Yanvar '24
+735
43 kanalda
Get PRO
Dekabr '23
+720
38 kanalda
Get PRO
Noyabr '23
+231
1 kanalda
Get PRO
Oktabr '23
+459
18 kanalda
Get PRO
Sentabr '23
+387
0 kanalda
Get PRO
Avgust '23
+648
0 kanalda
Get PRO
Iyul '23
+506
0 kanalda
Get PRO
Iyun '23
+291
0 kanalda
Get PRO
May '23
+1 094
0 kanalda
Get PRO
Aprel '23
+698
0 kanalda
Get PRO
Mart '23
+73
0 kanalda
Get PRO
Fevral '23
+23
0 kanalda
Get PRO
Yanvar '23
+60
0 kanalda
Get PRO
Dekabr '22
+87
0 kanalda
Get PRO
Noyabr '22
+457
0 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
26 Oktabr+1
25 Oktabr0
24 Oktabr0
23 Oktabr+2
22 Oktabr+2
21 Oktabr+1
20 Oktabr+3
19 Oktabr+3
18 Oktabr+9
17 Oktabr+4
16 Oktabr+1
15 Oktabr0
14 Oktabr+1
13 Oktabr0
12 Oktabr+1
11 Oktabr+1
10 Oktabr+1
09 Oktabr0
08 Oktabr0
07 Oktabr0
06 Oktabr+2
05 Oktabr0
04 Oktabr+1
03 Oktabr0
02 Oktabr+3
01 Oktabr+1
Kanal postlari
«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