ChatCrawlerпоиск по публичному Telegram Открыть приложение
C

C++ Вакансии / работа

508 участников
I
Фотография
нажмите — покажем
🖥 C++26 закрывает одну из самых больных тем lock-free кода - безопасное удаление памяти. Проблема не в atomics. Проблема в том, что один поток уже убрал узел из структуры, а другой всё ещё может его читать. Удалишь слишком рано, получишь use-after-free. Поэтому в C++26 стандартизируют Hazard Pointers. Идея простая: поток заранее помечает объект как “я сейчас его читаю”. Пока хотя бы один reader держит такой hazard pointer, объект нельзя удалять. Удаление откладывается до момента, когда все читатели закончат работу. Это делает lock-free структуры вроде стеков, очередей и списков намного безопаснее. Lock-free программирование становится не магией, а чуть более нормальным инженерным инструментом.
2.2K ·
В
A
𝙼
I
Фотография
нажмите — покажем
Кто-то под именем Сатоши Накамото в 2008 году опубликовал идею, из которой выросла целая индустрия майнинга с огромным энергопотреблением. И до сих пор никто достоверно не знает, кто скрывается за этим именем. При этом сама базовая идея Proof of Work выглядит почти примитивно: берём число nonce, меняем его снова и снова, каждый раз считаем хэш и проверяем, попал ли результат ниже нужного target. Условно это выглядит так: uint32_t nonce = 0; while (1) { header.nonce = nonce; hash = sha256(sha256(header)); if (hash < target) break; nonce++; } То есть майнинг Bitcoin в основе своей это гигантский перебор чисел с постоянным пересчётом SHA-256. Простой цикл, который в итоге породил ASIC-фермы, энергопотребление в масштабах стран и индустрию на миллиарды долларов.
1.7K ·
A
Т
A
I
Фотография
нажмите — покажем
🔥 Хочешь быстрее расти в 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 Физика: 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 Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
1.2K ·
А
I
Фотография
нажмите — покажем
Одна строка C, которая может сломать вам логику В C порядок вычисления аргументов функции не определён. foo(i++, i++); Из-за этого один и тот же код может дать разный результат: * gcc: foo(1, 0) * clang: foo(0, 1) Причина простая: компиляторы по-разному вычисляют аргументы. Такие вещи годами становились источником очень неприятных багов. Хорошая новость: сейчас -Wall обычно умеет это подсветить. Вывод банальный, но важный: не пишите код, который зависит от порядка вычисления аргументов.
1.4K ·
E
А
Р
id 1470385616Одна строка C, которая может сломать вам логику В C порядок вычисления аргументов функции не определён. foo(i++, i++); Из-за этого один и тот же код может дать разный результат: * gcc: foo(1, 0) * clang: foo(0, 1) Причина простая: компиляторы по-разному вычисляют аргументы. Такие вещи годами
И, кстати, похожие эффекты, но с исключениями, еще более расширились в свое время в С++ Причем так, что в стандарт в свое время были введены костыли а ля: template <typename T, typename Args...> unique_ptr<T> make_unique(Args&&...); и, если для make_shared на ум практически сразу приходит первое очевидное обьяснение "зачем", то второе объяснение для unique/shared не настолько очевидно, если не вспоминать про порядок вычисления аргументов и, в частности, exception safety.
A
I
Фотография
нажмите — покажем
В C есть синтаксис, который выглядит как опечатка: case '0' ... '9': Кажется, что такой switch вообще не должен компилироваться. Но в GCC это работает. Это расширение называется case ranges — можно задавать сразу диапазон значений внутри case. Например: case '0' ... '9': return DIGIT; case 'a' ... 'z': case 'A' ... 'Z': return LETTER; Вместо десяти отдельных case для цифр и ещё десятков для букв — одна строка на диапазон. Но есть нюанс: это не стандартный C, а расширение GCC. Если код должен быть переносимым между компиляторами, на такой синтаксис лучше не рассчитывать. Одна из тех возможностей C, которые выглядят неправильно, пока не узнаешь, что компилятор действительно это поддерживает.
1.2K ·
Архив по месяцам
Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог