ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

C++ Academy

C++ Academy

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام C++ Academy

تُعد قناة C++ Academy (@cpluspluc) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 15 522 مشتركاً، محتلاً المرتبة 8 268 في فئة التكنولوجيات والتطبيقات والمرتبة 42 183 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 15 522 مشتركاً.

بحسب آخر البيانات بتاريخ 25 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار 14، وفي آخر 24 ساعة بمقدار -4، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 16.26‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 6.85‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 2 524 مشاهدة. وخلال اليوم الأول يجمع عادةً 1 063 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 27.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل c++, github, linux, api, архитектура.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ”

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 26 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

15 522
المشتركون
-424 ساعات
-147 أيام
+1430 أيام
جذب المشتركين
أكتوبر '26
أكتوبر '26
+112
في 37 قنوات
سبتمبر '26
+112
في 31 قنوات
Get PRO
أغسطس '26
+118
في 40 قنوات
Get PRO
يوليو '26
+82
في 42 قنوات
Get PRO
يونيو '26
+56
في 1 قنوات
Get PRO
مايو '26
+130
في 3 قنوات
Get PRO
أبريل '26
+49
في 0 قنوات
Get PRO
مارس '26
+92
في 21 قنوات
Get PRO
فبراير '26
+93
في 44 قنوات
Get PRO
يناير '26
+437
في 110 قنوات
Get PRO
ديسمبر '25
+66
في 2 قنوات
Get PRO
نوفمبر '25
+217
في 44 قنوات
Get PRO
أكتوبر '25
+81
في 15 قنوات
Get PRO
سبتمبر '25
+116
في 38 قنوات
Get PRO
أغسطس '25
+291
في 9 قنوات
Get PRO
يوليو '25
+518
في 77 قنوات
Get PRO
يونيو '25
+347
في 73 قنوات
Get PRO
مايو '25
+82
في 5 قنوات
Get PRO
أبريل '25
+105
في 27 قنوات
Get PRO
مارس '25
+120
في 1 قنوات
Get PRO
فبراير '25
+175
في 40 قنوات
Get PRO
يناير '25
+175
في 47 قنوات
Get PRO
ديسمبر '24
+585
في 58 قنوات
Get PRO
نوفمبر '24
+1 337
في 186 قنوات
Get PRO
أكتوبر '24
+2 234
في 75 قنوات
Get PRO
سبتمبر '24
+848
في 203 قنوات
Get PRO
أغسطس '24
+580
في 42 قنوات
Get PRO
يوليو '24
+837
في 52 قنوات
Get PRO
يونيو '24
+2 266
في 64 قنوات
Get PRO
مايو '24
+498
في 39 قنوات
Get PRO
أبريل '24
+571
في 47 قنوات
Get PRO
مارس '24
+653
في 20 قنوات
Get PRO
فبراير '24
+907
في 5 قنوات
Get PRO
يناير '24
+705
في 42 قنوات
Get PRO
ديسمبر '23
+447
في 39 قنوات
Get PRO
نوفمبر '23
+162
في 31 قنوات
Get PRO
أكتوبر '23
+224
في 0 قنوات
Get PRO
سبتمبر '23
+385
في 0 قنوات
Get PRO
أغسطس '23
+2 329
في 0 قنوات
Get PRO
يوليو '23
+498
في 1 قنوات
Get PRO
يونيو '23
+565
في 0 قنوات
Get PRO
مايو '23
+5 320
في 0 قنوات
Get PRO
أبريل '23
+126
في 0 قنوات
Get PRO
مارس '23
+422
في 0 قنوات
Get PRO
فبراير '23
+707
في 0 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
26 أكتوبر+4
25 أكتوبر+1
24 أكتوبر0
23 أكتوبر+3
22 أكتوبر+6
21 أكتوبر+2
20 أكتوبر0
19 أكتوبر+6
18 أكتوبر+19
17 أكتوبر+18
16 أكتوبر+2
15 أكتوبر+4
14 أكتوبر+7
13 أكتوبر0
12 أكتوبر+5
11 أكتوبر+5
10 أكتوبر+3
09 أكتوبر+1
08 أكتوبر+3
07 أكتوبر+4
06 أكتوبر+7
05 أكتوبر+8
04 أكتوبر+3
03 أكتوبر0
02 أكتوبر0
01 أكتوبر+1
منشورات القناة
«what the fu**?»: самый странный комментарий в игровом коде Одна строка из Quake III заменяет деление и корень сдвигом битов и магическим числом 0x5f3759df. Покажу на примере, как это работает, и посчитаю погрешность: 3.44% до уточнения и 0.175% после одного шага Ньютона. А кто на самом деле придумал трюк, вы вряд ли угадаете. https://youtube.com/shorts/oIpqqzNNCHo

2
Алгоритм is_partitioned Алгоритм is_partitioned — это алгоритм из стандартной библиотеки algorithm, который проверяет, разбит
Алгоритм is_partitioned Алгоритм is_partitioned — это алгоритм из стандартной библиотеки algorithm, который проверяет, разбит ли диапазон элементов определенным образом. Принимает три параметра: — Два итератора, задающих проверяемый диапазон. — Предикат (функцию или функтор), определяющий разбиение. Возвращает bool значение — true если диапазон разбит согласно предикату и false в противном случае. Этот алгоритм предпочтительнее цикла, т. к. проще в использовании и читабельнее, ведь он эффективно проверяет условие за один проход по последовательности. В примере мы определяем предикат isEven для проверки четности числа, передаем его в is_partitioned вместе с вектором v и выводим результат. #это_база
1 333
3
✔️ В C++26 появились контракты. Но проверка условия ещё не гарантирует оптимизацию Контракты позволяют задавать предусловия и
✔️ В C++26 появились контракты. Но проверка условия ещё не гарантирует оптимизацию Контракты позволяют задавать предусловия и постусловия функции. Например, потребовать, чтобы делитель был ненулевой степенью двойки: uint32_t ring_index(uint32_t i, uint32_t n) pre(n && (n & (n - 1)) == 0) { return i % n; } Для таких беззнаковых чисел i % n можно заменить на более дешёвое i & (n - 1). Однако в примере автора GCC 16 не выполняет эту оптимизацию автоматически. Поддержка контрактов включается через -fcontracts. В режиме enforce нарушение вызывает обработчик и завершение программы. Поведение зависит от выбранного режима проверки. Документация GCC -https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html . Атрибут C++23 [[assume(условие)]] даёт оптимизатору дополнительную информацию, но не проверяет условие. Если оно ложно, поведение программы не определено.
1 760
4
🌟 SonicBoom: движок инференса без Python HardenedVault, которая специализируется на безопасности Linux и компиляторов, вылож+2
🌟 SonicBoom: движок инференса без Python HardenedVault, которая специализируется на безопасности Linux и компиляторов, выложила среду исполнения SonicBoom, написанной с нуля на C++ и CUDA. Python ей не нужен ни для работы, ни для сборки. Цель проекта – локальный запуск языковых моделей на потребительских видеокартах. Всё упаковано в одну библиотеку libsonicboom.so, которую можно подключить из любого языка через стандартный интерфейс C, основным языком для работы с ней авторы выбрали Scheme в реализации GNU Guile. SonicBoom загружает модели в GGUF, генерирует текст на процессоре или видеокарте и поднимает локальный сервер, совместимый с API OpenAI. Если новый запрос начинается с того же текста, что и предыдущий, заново обрабатывается только добавленная часть, и результат до токена совпадает с полным пересчётом. 🟡Механика Скорость вывода дают уровни над вычислительными ядрами, а не сами ядра. Умножение квантованных матриц и токенизаторы частично перенесены из llama.cpp. Над ними работает планировщик, который до запуска переписывает граф модели целиком, сливает соседние операции и записывает весь шаг генерации токена в один CUDA Graph, т. е. в готовую последовательность команд для видеокарты. Ещё выше стоит компилятор на базе MLIR. Он сам генерирует часть ядер для GPU, в том числе для механизма внимания, и при первом запуске подбирает самый быстрый вариант под конкретную карту. 🟡Тесты На RTX 3050 с 8 ГБ памяти сравнили SonicBoom и llama.cpp на одних и тех же моделях. Gemma 4 E4B через SonicBoom дала генерацию в 53 токена в секунду против 44,8 у llama.cpp. У Qwen2.5-0.5B вышло 344,7 токена в секунду против 307,6. Когда контекст дорастает до 512 токенов, SonicBoom на Qwen уже чуть отстаёт. Единственный сторонний результат на RTX 4060 Ti оказался хуже llama.cpp, 73,6 токена в секунду против 78, но его получили на сборке, ещё не настроенной под эту видеокарту. Пока проверены только две модели, Gemma 4 E4B-it и Qwen2.5-0.5B-Instruct, и только видеокарты серии RTX 30. Модель всегда выбирает самый вероятный токен, температуру и другие настройки случайности задать нельзя. Следующими в планах стоят модели Llama и Mistral, работа через Vulkan, генерация ядер для видеокарт других производителей и диффузионные модели. Дальше SonicBoom планирует вырасти в фреймворк в духе PyTorch, где модель пишут на Scheme и компилируют в граф вычислений. Прототип этого режима уже обучает небольшой трансформер. 📌Лицензирование: GPL-3.0 🖥Github @ai_machinelearning_big_data #AI #ML #LLM #InferenceEngine #SonicBoom
1 535
5
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для+1
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis. Ключевой трюк: deltaDist = abs(1 / rayDir) После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение. Дальше всё почти классически: * рассчитывается высота стены на экране; * выбирается текстура; * вычисляется точка попадания; * рисуется вертикальная полоса пикселей. Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков. Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики.
1 763
6
Виртуальных агентов обсудят на митапе «Русское техно 2» от MWS 23 октября. ⚡ Успейте зарегистрироваться. В программе доклады
Виртуальных агентов обсудят на митапе «Русское техно 2» от MWS 23 октября. ⚡ Успейте зарегистрироваться. В программе доклады и дискуссии по темам: — Как построить control plane для персональных ИИ-агентов на Kubernetes. — Как построить агентный производственный процесс в связке с Harness. — Подходы к управлению командами с ИИ-агентами. Как меняются метпроцессы внутри команды? — Когда ИИ-агент становится экономически оправданным. А также участников ждет битва промптов и нетворкинг. Когда: 23 октября Формат: офлайн в Москве и онлайн Зарегистрироваться
1 148
7
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для+1
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis. Ключевой трюк: deltaDist = abs(1 / rayDir) После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение. Дальше всё почти классически: * рассчитывается высота стены на экране; * выбирается текстура; * вычисляется точка попадания; * рисуется вертикальная полоса пикселей. Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков. Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики.
109
8
🧠 TIL: SQLite превращает числа в текст сразу по две цифры Обычно integer → string делают циклом: / 10 → берём цифру % 10 → о
🧠 TIL: SQLite превращает числа в текст сразу по две цифры Обычно integer → string делают циклом: / 10 → берём цифру % 10 → остаток и повторяем снова. SQLite идёт хитрее. В исходниках есть строка на 200 символов, содержащая все пары от 00 до 99: 000102030405...979899 При преобразовании числа SQLite обрабатывает его по две цифры за раз и просто берёт нужную пару символов по индексу. То есть вместо множества операций /10 и %10: делим на 100 → получаем две цифры → копируем готовую пару. Маленькая оптимизация, но именно из таких деталей и состоит быстрый системный код. Исходник: sqlite/src/util.c
2 221
9
🔥 Хочешь быстрее расти в 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 Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
1 925
10
لا يوجد نص...
2 594
11
🛋 C++ реалистично симулирует взрослую жизнь: решил сэкономить на переезде, а всё равно заплатил за копию. const Sofa mySofa;
🛋 C++ реалистично симулирует взрослую жизнь: решил сэкономить на переезде, а всё равно заплатил за копию. const Sofa mySofa; Sofa newApartment = std::move(mySofa); Кажется, диван должен «переехать». Но вызывается конструктор копирования 🤡 Подвох: `std::move` не перемещает объект и не снимает `const`. Здесь он даёт const Sofa&&, а конструктору перемещения Sofa(Sofa&&) нужна ссылка без const. Зато конструктор копирования Sofa(const Sofa&) подходит. Даже компилятор знает: переезд без неожиданных расходов не бывает.
2 176
12
Для работы с ИИ полезно иметь несколько моделей под рукой. Но держать ради этого несколько подписок удобно не всем. Особенно когда сегодня нужен Claude для кода, завтра GPT для другой задачи, а команде ещё нужны общий баланс и понятные расходы. Для такого сценария есть RouterAI, российская альтернатива OpenRouter. ChatGPT, Claude, Gemini, Grok и сотни других моделей доступны через один веб-чат и OpenAI-совместимый API. Сервис работает без VPN, есть Telegram-бот. Для разработки предусмотрены инструкции по подключению Claude Code, Codex, Cline и Cursor. Если провайдер модели недоступен, запрос автоматически направляется резервному. Оплата за использование, без обязательной подписки. Пополнить баланс можно в рублях российской картой или через СБП. Для бизнеса есть оплата по счёту, договор и закрывающие документы. Командам доступны роли, лимиты и статистика расходов. По данным RouterAI, платформой пользуются десятки тысяч пользователей, включая разработчиков и компании. На сторонних площадках сотни положительных отзывов с оценками около 4,9–5 из 5: например, на Startpack сейчас 372 отзыва и рейтинг 4,9. Практичный способ попробовать разные модели на своих задачах и платить за фактическую работу. https://routerai.ru/l/c #реклама О рекламодателе erid: 2W5zFJoafmB
1 965
13
🎲 Генератор случайных чисел всего в три строки В 2003 году George Marsaglia предложил семейство генераторов Xorshift — один
🎲 Генератор случайных чисел всего в три строки В 2003 году George Marsaglia предложил семейство генераторов Xorshift — один из самых простых и быстрых PRNG. Для xorshift32 достаточно буквально трёх операций: state ^= state << 13; state ^= state >> 17; state ^= state << 5; Новое значение state становится следующим псевдослучайным числом. Почему это интересно: - почти нет вычислительных затрат; - используются только битовые сдвиги и XOR; - период для ненулевого state — до 2³² − 1; - отлично подходит для игр, симуляций и других задач, где важна скорость. Но есть важный нюанс: Xorshift не криптографически стойкий. Для токенов, паролей и security-задач его использовать нельзя. Красивый пример того, как всего несколько битовых операций превращаются в полноценный генератор псевдослучайных чисел.
2 432
14
🔥Приглашаем на бесплатный открытый вебинар курса «Электроника и электротехника»: «Беспроводные STM32. Разрабатываем плату дл
🔥Приглашаем на бесплатный открытый вебинар курса «Электроника и электротехника»: «Беспроводные STM32. Разрабатываем плату для микроконтроллеров с радиоинтерфейсом» 📆Когда: 21 октября 2026, 20:00 (мск) Многие разработчики сталкиваются с ситуацией: плата с Bluetooth «работает, но не летает» — дальность связи в разы меньше заявленной в даташите. Что будет на вебинаре: • Почему плата с Bluetooth работает на 5 метров, хотя в даташите обещают 50? • Что такое согласование антенны и почему без него теряется половина мощности? • Можно ли соединять вывод RF микроконтроллера напрямую с антенной или нужна обвязка? • Практические рекомендации по трассировке радиочастотных трактов. • Как адаптировать референс-дизайн под свой стек печатной платы. Зарегистрируйтесь https://otus.pw/5jPS/?erid=2W5zFGxaSRP Бесплатное занятие приурочено к курсу «Электроника и электротехника» Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
1 047
15
🖥 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)
2 797
16
🦀 Что удивляет в C, если первым языком был Rust? Обычно разработчики переходят от C к Rust. Автор C for Rust Programmers пош
🦀 Что удивляет в C, если первым языком был Rust? Обычно разработчики переходят от C к Rust. Автор C for Rust Programmers пошёл в обратную сторону и собрал нюансы, которые легко пропустить. Например, такая функция выглядит как принимающая массив из трёх элементов: void inspect(char data[3]) { printf("%zu\n", sizeof(data)); } Но параметр здесь становится указателем. На платформе с 64-битными указателями увидите 8, а не 3. Длина массива в функцию не передаётся. Ещё несколько сюрпризов: • C-строки заканчиваются \0, а strlen() ищет этот байт, проходя по памяти. • long обычно занимает 64 бита в 64-битных Unix-системах и 32 бита в Windows. • malloc() может вернуть NULL, а язык не заставит проверить результат. • Вместо ссылок с проверкой заимствований работают сырые указатели. Полезное чтение для тех, кто пишет FFI или хочет понять, какие гарантии привычно получает от Rust. https://bd103.dev/blog/2026-10-07-c-for-rust-programmers/ @rust_code
2 625
17
UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA).
UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA). Он обрабатывает байты по одному, собирает кодовую точку Unicode и проверяет корректность последовательности. Таблица utf8d выполняет две задачи: * определяет класс очередного байта; * выбирает следующее состояние автомата. `ACCEPT` означает, что кодовая точка полностью прочитана. `REJECT` - обнаружена ошибка. Остальные состояния означают, что нужны дополнительные байты. Подход удобен для потоковой обработки: если символ разорван между двумя сетевыми пакетами, достаточно сохранить состояние и накопленное значение. Нюанс: после последнего байта тоже нужно проверить состояние. Если оно не ACCEPT, строка некорректна - например, оборвалась посреди символа.
2 463
18
🖥 Создатель C++ раскритиковал программирование через промпты Бьярне Страуструп считает естественный язык слишком неоднозначн
🖥 Создатель C++ раскритиковал программирование через промпты Бьярне Страуструп считает естественный язык слишком неоднозначным для точного описания программ. В интервью Райану Петерману он заявил, что ИИ часто создаёт раздутый код с ошибками и уязвимостями, который сложно проверять. По его словам, изменение промпта может существенно менять реализацию, заставляя опытных разработчиков заново разбираться в результате. Страуструп рассказал, что знает специалистов, которые предпочитают уйти на пенсию, чем заниматься такой проверкой. Особенно скептически он оценивает ИИ в системах, где критичны безопасность и производительность. При этом признаёт: большая часть мирового кода не относится к этой категории.
3 436
19
Яндекс выложил в опенсорс YTsaurus Flow YTsaurus Flow - фреймворк потоковой обработки данных с сохранением состояния между со
Яндекс выложил в опенсорс YTsaurus Flow YTsaurus Flow - фреймворк потоковой обработки данных с сохранением состояния между событиями, альтернатива зарубежным Spark Structured Streaming и Kafka Streams. Технологию совместно разработали команды Yandex Infrastructure и Яндекс Рекламы для работы с большими потоками данных. Flow изначально создавался для высоконагруженных real-time систем, прежде всего рекомендательных. Позволяет обрабатывать большие потоки событий с сохранением состояния, гарантией exactly-once и автоматическим распределением нагрузки. Это важно для сервисов, где задержка или потеря данных напрямую влияют на качество рекомендаций, антифрода и других ML-систем: свежие события быстрее доходят до моделей, а инфраструктура продолжает работать при сбоях и изменении нагрузки. https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow
3 279
20
🎮 Строка из Quake III, которая выглядит как колдовство i = 0x5f3759df - (i >> 1); // what the fuck? Комментарий настоящий. Э
🎮 Строка из Quake III, которая выглядит как колдовство i = 0x5f3759df - (i >> 1); // what the fuck? Комментарий настоящий. Эта строка помогает вычислить 1/√x, не извлекая квадратный корень. В графике такая операция нужна для нормализации векторов: привести их длину к единице, сохранив направление. Как работает трюк? У float внутри есть показатель степени и дробная часть. Если прочитать биты положительного нормализованного числа как целое, получится величина, которая примерно соответствует его логарифму с масштабом и смещением. А дальше используется свойство: log₂(1/√x) = −½ × log₂(x) Сдвиг >> 1 делит целое число на два. Вычитание из подобранной константы меняет знак и компенсирует смещение. Полученные биты снова читаются как float: это уже приближение к ответу. Один шаг метода Ньютона доводит относительную погрешность примерно до 0,18%. В историческом тесте Криса Ломонта функция работала примерно в четыре раза быстрее прямого вычисления 1.0 / sqrt(x). А закомментированная строка на картинке? Это второй шаг Ньютона: ещё больше точности за дополнительные вычисления. 💡 Красота алгоритма в том, что само представление числа в памяти становится частью вычисления. https://github.com/id-Software/Quake-III-Arena/blob/master/code/game/q_math.c
3 733