16151
По всем вопросам- @haarrp @itchannels_telegram - 🔥 best it channels РКН: clck.ru/3FmxJF
🖥 Создатель C++ разнёс вайбкодинг: “сеньоры не хотят разгребать этот мусор”
Бьёрн Страуструп, легендарный создатель C++, в новом двухчасовом интервью резко прошёлся по вайбкодингу.
Главная претензия простая: сгенерированный код пока слишком часто выглядит красиво только на демке. В реальном проекте он приносит баги, раздувает кодовую базу, плодит уязвимости и плохо поддаётся нормальной проверке.
Особенно больно это бьёт по опытным разработчикам. Им потом приходится не “магически ускоряться с ИИ”, а читать, чинить и переписывать слоп, который кто-то нагенерировал за пять минут.
Похожая история уже достала и Линуса Торвальдса. Его буквально завалили кривыми AI-отчётами по ядру Linux: вроде бы люди “помогают”, а на практике создают шум, который мешает настоящей разработке.
Сеньоры не боятся ИИ.
Они просто не хотят провести остаток карьеры, разгребая чужой промптованный мусор.
https://www.youtube.com/watch?v=U46fJ2bJ-co
@cpluspluc
В C код может выполниться ещё до `main()`
В Linux и GCC есть constructor-функции - они запускаются автоматически до входа в main().
Выглядит почти как магия:__attribute__((constructor))
Такую функцию не нужно вызывать вручную. Компилятор сам пометит её как код, который должен выполниться при старте программы.
Где это используется:
- инициализация глобального состояния
- подготовка shared libraries
- регистрация плагинов
- настройка runtime-окружения
- выполнение служебного кода до основной логики
Именно поэтому в C-программе не всегда всё начинается с main().
Иногда до него уже кто-то успел поработать.
🧩 ACAV: Интерактивный просмотр AST для C/C++ проектов
ACAV (Aurora Clang AST Viewer) — это настольное приложение для визуализации абстрактных синтаксических деревьев (AST) в проектах на C, C++ и Objective-C. Оно позволяет пользователям исследовать представление исходного кода Clang, перемещаться между местоположениями кода и узлами AST, а также изучать структуру программ.
🚀 Основные моменты:
- Интерактивная визуализация AST для языков семейства C.
- Двусторонняя навигация между исходным кодом и узлами AST.
- Просмотр файлового дерева для исходных файлов и заголовков.
- Поиск по исходному коду и узлам AST.
- Поддержка нативных и контейнеризованных рабочих процессов для macOS и Linux.
📌 GitHub: https://github.com/uvic-aurora/acav
#cpp
🖥 Курс «Git Pro: от первого коммита до уровня senior» - на Stepik
project_final_v2_FINAL_truly_final - знакомо?
Значит, пора.
Большинство разработчиков знают 5 команд Git и боятся шестую. Коммитят в main, гуглят «how to undo» и копируют папку «на всякий случай».
Это не работа - это выживание.
После курса вы:
— делаете rebase, не задерживая дыхание;
— разбираете конфликт на 200 файлов по алгоритму;
— возвращаете «потерянные навсегда» коммиты за 30 секунд через reflog;
— пишете историю, которую не стыдно показать на code review.
Git Flow, trunk-based, Pull Request, защита веток, CI/CD-хуки — всё, что отличает джуна от senior в командной работе.
Скидка 53%, 48 часов: https://stepik.org/course/284799/
🚁Высокопроизводительная библиотека H.A.L.O. для автономных дронов
H.A.L.O. Aegis Omniverse - это библиотека на C++20, предназначенная для навигации и защиты автономных спасательных дронов в сложных условиях. Она сочетает в себе передовые методы поиска пути и тактическое избегание препятствий с реакцией менее чем за наносекунду.
🚀 Основные моменты:
- Высокая производительность с использованием JPS+ для навигации.
- 10-слойная система защиты для мгновенного реагирования.
- Оптимизация под ARM NEON и SSE4 для максимальной скорости.
- Открытый исходный код для гуманитарных миссий.
📌 GitHub: https://github.com/Nguyenidkskibidi/halo-aegis-core
#cpp
🎨✨ FusionUI: современная библиотека UI на C++23
FusionUI — это библиотека для создания интерфейсов с декларативными виджетами и безопасной системой стилей. Она поддерживает анимации, переходы и различные платформенные бэкенды, обеспечивая гибкость и простоту в использовании.
🚀Основные моменты:
- Декларативные виджеты с типобезопасными стилями
- Поддержка анимаций и переходов
- Отсутствие глобального состояния для изоляции приложений
- Легкая интеграция с Vulkan и SDL3
- Кроссплатформенная: Windows, macOS, Linux
📌 GitHub: https://github.com/neilmewada/FusionUI
#cpp
Когда работаешь с большим количеством данных, становится понятно, насколько важна продуманная инфраструктура. На митапе Максим Бабенко, руководитель разработки YTsaurus и преподаватель ШАДа и ВШЭ, рассказал о том, как платформа помогает решать такие задачи.
Команда проделала большую работу, чтобы YTsaurus можно было использовать как инфраструктуру для запуска GPU-вычислений. За последний год:
- добавили поддержку GPU в k8s, доработали планировщик и сделали API для распределённого чтения и записи датасетов
- добавили row-level security, constraints
- продолжили развивать инструменты мониторинга и сервисы для администрирования
❤️ Backend Talks от Яндекс 360 — конференция о разработке, технологиях и будущем
Инженеры Яндекс 360 каждый день строят высоконагруженные отказоустойчивые и масштабируемые системы, которые выдерживают больше 1 000 000 RPS: Диск, Телемост, Почту и другие цифровые сервисы.
Своя виртуальная машина на C за 200 строк
Каждый раз, когда мы запускаем inference LLM, мы на самом деле гоняем программу в виртуальной машине. PyTorch крутит граф вычислений, llama.cpp интерпретирует GGUF, vLLM гоняет свой движок поверх CUDA. Мы живём в мире абстракций настолько глубоких, что уже забыли, как это всё работает на уровне байтов.
Ребята, рекомендую статью от Scarlett. Она показывает, как написать полноценную виртуальную машину на чистом C меньше чем за 200 строк. Без фреймворков, без зависимостей, без магии. Только память, регистры и опкоды. И это самая освежающая вещь, которую я читал на этой неделе.
Почему AI-специалисту стоит уделить этому вечер. Мы постоянно работаем с абстракциями поверх абстракций. Python вызывает CUDA-ядра, которые транслируются в PTX, который превращается в SASS, который исполняется на SM. Когда что-то падает с out of memory или внезапно становится в десять раз медленнее, мы открываем Nsight и видим непонятные буквы. Понимание того, как вообще работает машина, отдельная суперсила, которая окупается на каждом продакшен-инциденте.
Если кратко, что там внутри. Автор строит VM по образу LC-3, это учебная архитектура фон-Неймана. 65 536 ячеек памяти по 16 бит, 10 регистров, включая программный счётчик и регистр условных флагов. Вся инструкция это 16 бит, где первые 4 бита опкод, остальные параметры. Поддерживается 14 команд: арифметика, загрузка и сохранение памяти, переходы, вызовы подпрограмм и trap для ввода-вывода.
Самое интересное это цикл fetch decode execute. Три строки кода. Читаем инструкцию по адресу из RPC, увеличиваем RPC, вызываем обработчик по индексу опкода из таблицы указателей на функции. Всё. Вот так работает любой процессор в мире, только сложнее и с миллиардами транзисторов. Когда вы понимаете это на уровне C, архитектурные особенности Transformer runtime перестают казаться чёрной магией.
Ещё из приятного. Есть подробный разбор битовых полей инструкций, объяснение sign extension, работа с условными флагами N, Z, P и аккуратная реализация trap-таблицы через массив указателей на функции вместо гигантского switch. Этот приём напрямую переиспользуется, когда вы пишете свой интерпретатор графа или custom kernel dispatcher.
Что из этого вытаскивает AI-инженер. Во-первых, интуицию по поводу того, как устроен любой runtime, от TensorRT до ONNX. Во-вторых, понимание, почему arena-аллокаторы и заранее выделенная память бьют malloc в цикле. В-третьих, это лучший антидот от выученной беспомощности на фоне LLM-ассистентов. Пока Cursor пишет вам код на TypeScript, вы садитесь и руками собираете VM на C, которая исполняет машинный код. Мозг перезагружается, руки помнят, что такое настоящая инженерия.
Совет. Не просто читайте. Откройте файл, начните с main memory и регистров, добавляйте по одной инструкции. Сверяйтесь с постом, когда застряли. К концу вечера у вас будет рабочая VM, в которую можно загрузить свой собственный hex-файл и выполнить сложение двух чисел с клавиатуры. Это тот самый момент, ради которого мы когда-то пошли в инженерию.
Источник и полный разбор: https://x.com/Zyara_1ot/status/2045916052559900725
Веселье с type erasure: делаем обертку с семантикой значения для полиморфных типов
Павел Новиков
Цель доклада — познакомить с подноготной базовой реализации type erasure (т.н. «стирание типов») в C++, а также придать уверенности при возможном взаимодействии с подобным кодом.
Используя реализацию обертки с семантикой значения в качестве примера, мы посмотрели на то, как работает type erasure, похожий на std::any.
В отличие от повсеместно используемой семантики указателя или ссылки, в данном случае обертка с семантикой значения позволяет нам обращаться с полиморфными объектами со «стертыми типами» как с обычными значениями: перемещать их, копировать, присваивать новые значения, при этом всей головной болью владения (ownership) и клонирования объекта исходного типа займётся реализация «за кулисами».
источник
#cpp #programming
DOOM ЧЕРЕЗ CURL. ДА, ПРОСТО HTTP ЗАПРОС
Разработчик запустил Doom прямо в терминале без установки и GUI.
Работает через обычный curl. Под капотом сервер стримит кадры игры как ANSI-графику, а ввод с клавиатуры уходит обратно по тому же соединению.
По сути это полноценная игра поверх HTTP, без клиента, без зависимостей. Только bash и сеть.
Сюрреализм в том, что это не демка, а реально играбельная штука.
Хочешь попробовать - открываешь терминал и играешь.
https://github.com/xsawyerx/curl-doom
🧩 C++ обертка для PCRE2
pcre2cpp - это объектно-ориентированная обертка для библиотеки PCRE2, обеспечивающая удобный интерфейс для работы с регулярными выражениями. Поддерживает C++17 и C++20, упрощая процесс сопоставления и захвата результатов.
🚀 Основные моменты:
- Объектно-ориентированный интерфейс для PCRE2 10.47
- Совместимость с C++17 и C++20
- Удобное сопоставление регулярных выражений
- Встроенное захватывание результатов
📌 GitHub: https://github.com/MAIPA01/pcre2cpp
#cpp
oneDNN
oneDNN — это высокопроизводительная библиотека с открытым исходным кодом, предназначенная для оптимизации машинного обучения и приложений глубокого обучения.
https://github.com/oneapi-src/oneDNN
Data-Parallel Types: алгоритмы (C++26)
Библиотека «data-parallel types» для SIMD-векторов (пространство имён std::experimental, алиас stdx) предоставляет четыре специальных алгоритма: `min, max, minmax и clamp. min, max, minmax
- min(a, b) и max(a, b) принимают два SIMD-вектора и возвращают вектор покомпонентных минимумов/максимумов.
- minmax(a, b) возвращает пару SIMD-векторов: первый — покомпонентные минимумы, второй — максимумы.
- Автор отмечает, что строка stdx::minmax(a, b) у него не компилировалась ни в GCC, ни в Clang (на момент публикации). clamp
- stdx::clamp(v, lo, hi) применяет std::clamp к каждому элементу SIMD-вектора: значения ниже lo поднимаются до нижней границы, выше hi — опускаются до верхней.
- Показаны два примера: ограничение к диапазону INT8_MIN..INT8_MAX и к 0..UINT8_MAX; на выводах видно, как выходящие за пределы элементы прижимаются к границам.
Итог
- Для SIMD-векторов доступны привычные «минимумы/максимумы» и покомпонентный clamp.
- minmax задуман как удобный возврат пары (min/max), но в текущих компиляторах может не собираться.
- Дальше автор планирует разбирать новые возможности C++26 (в частности, контракты).
https://www.modernescpp.com/index.php/data-parallel-types-algorithms/
#cpp #programming
⚡️ Хочешь собрать GPU с нуля - вот настоящий появился симулятор Mvidia
Нашли для вас сайт, где можно пройти весь путь железа руками. Без теории ради теории, а через интерактив.
• Начинаешь с базы
движение электронов, транзисторы, логика
• Дальше собираешь уровни выше
логические схемы, ALU, простой процессор
• До GPU ещё не дошли
блоки про шейдеры и графику пока в разработке, но фундамент уже есть
На Hacker News проект активно хвалят, особенно за подачу и понятную прогрессию
Хороший способ наконец понять, как всё это реально устроено под капотом, а не на уровне абстракций
Сначала проходишь симулятор потом уже думаешь, как построить Nvidia 2.0
https://jaso1024.com/mvidia/
⚡️ C тоже умеет автоматическую очистку ресурсов. Просто почти никто об этом не знает
В C нет RAII как в C++ и нет defer как в Go. Поэтому код с ресурсами часто превращается в набор goto cleanup, ручных free() и риска забыть освободить память на одной из веток.
Но у GCC и Clang есть полезное расширение - __attribute__((cleanup)).
Оно позволяет повесить cleanup-функцию на локальную переменную. Когда переменная выходит из scope, компилятор сам вызывает эту функцию.
Пример:
void autofree(void *p) {
free(*(void **)p);
}
#define auto __attribute__((cleanup(autofree)))
int main() {
auto char *buf = malloc(1024);
// buf будет автоматически освобождён
// при выходе из scope
return 0;
}
🚀 Мощный панель управления для игровых серверов
MCSManager — это современная веб-панель для управления серверами Minecraft, Steam и другими играми. Она позволяет легко управлять несколькими серверами с одного интерфейса, предлагая надежную систему разрешений для пользователей и поддержку многоязычности.
🚀 Основные моменты:
- Быстрая установка игровых серверов с помощью встроенного магазина приложений.
- Поддержка множества игр, включая Terraria и Project Zomboid.
- Настраиваемый интерфейс с возможностью перетаскивания элементов.
- Поддержка Docker и коммерческого хостинга.
- Легковесная архитектура на TypeScript.
📌 GitHub: https://github.com/MCSManager/MCSManager
✔️ Одно слово в C, которое может ускорить ваш цикл
В C есть ключевое слово restrict.
Оно говорит компилятору простую, но очень важную вещь:
«Эти указатели не пересекаются в памяти».
Без restrict компилятор обязан быть осторожным. Он не знает, могут ли a, b и result указывать на один и тот же участок памяти. Поэтому он не всегда может агрессивно оптимизировать код.
С restrict ситуация меняется:
- компилятор уверен, что указатели не alias друг друга
- цикл можно безопаснее векторизовать
- загрузки и записи можно переупорядочивать
- проще включать SIMD-инструкции
- GCC и Clang получают больше свободы для оптимизаций
Пример:
void add_arrays(int *restrict a,
int *restrict b,
int *restrict result,
int n)
{
for (int i = 0; i < n; i++)
result[i] = a[i] + b[i];
}
Самый знаменитый комментарий в истории C.
Его оставил разработчик id Software в 1999 году в коде Quake III Arena.
Одна строка с приведением указателя, один битовый сдвиг, одно вычитание - и на выходе получается приближение к 1/√x.
Просто битовые трюки, магическая константа и финальный шаг уточнения методом Ньютона.
А комментарий в коде был максимально честный:
what the f***?
⚙️ clap: современный парсер аргументов командной строки для C++26
clap предлагает удобный способ парсинга аргументов командной строки с использованием рефлексии. Он поддерживает различные типы аргументов, включая обязательные и необязательные, а также предоставляет возможность задавать значения по умолчанию и использовать переменные окружения.
🚀Основные моменты:
- Поддержка значений по умолчанию и необязательных аргументов
- Краткие аргументы и комбинированные флаги
- Аннотации для описаний полей
- Автоматическое преобразование имен в kebab-case
- Простота использования с рефлексией
📌 GitHub: https://github.com/nathan-baggs/clap
#cpp
🚀 Высокоскоростная межъязыковая IPC библиотека Tachyon
Tachyon обеспечивает рекордно низкую задержку (56.5 нс) для межъязыкового взаимодействия между 7 языками, включая Python, Java и Rust. Он использует нулевую копию для передачи данных, что делает его идеальным для приложений, требующих высокой производительности, таких как ML и обработка медиа.
🚀 Основные моменты:
- Поддержка 7 языков: Python, Node.js, Java, Kotlin, Rust, Go, C++.
- Нулевая копия данных для повышения скорости.
- Простота использования: всего одна зависимость — ваш ядро.
- Идеален для ML и торговых приложений.
📌 GitHub: https://github.com/riyaneel/Tachyon
🧩 userver 3.0 — крупное обновление C++ фреймворка от Яндекса для highload-сервисов
Яндекс Go выпустил новую версию open source-фреймворка userver, который используется для разработки высоконагруженных и отказоустойчивых систем промышленного масштаба. В релиз вошло более 2500 улучшений.
🚀 Основные моменты:
- Chaotic — генерация boilerplate-кода по схемам данных
- userver easy — быстрый старт микросервисов с возможностью дальнейшего масштабирования
- Снижение потребления RAM и CPU в production-сценариях
- Асинхронная архитектура для высоконагруженных сервисов
- Используется в реальных сервисах Яндекса: Go, Еда, Лавка и других
- Open source и доступен сообществу на GitHub
📌 GitHub https://github.com/userver-framework
#cpp
🐦 Flappy Bird на Си: Вес APK < 100 Килобайт! 🚀
В сентябре 2024 года, увидев Flappy Bird на C# в дискорд-канале Raylib, я решил попробовать реализовать эту игру на Си для Android с весом APK менее 100 КБ. 🚀
Идея казалась безумной, но спортивный интерес взял верх. 💪
https://github.com/VadimBoev/FlappyBird
#cpp #programming
#вопросы_с_собеседований
Бывает такое, что оператор new не выделяет память?
Ответ:
Да, бывает, когда new передаётся указатель на уже выделенную память (например, с помощью malloc). Это называется placement new. И оператор new без изменения возвращает второй параметр - указатель (void* operator new(std::size_t, void*)). Это используется для создания объектов в выделенном "хранилище" или после malloc.
Важно! В этом случае деструктор нужно вызывать самостоятельно!
⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее.
Осталось одно: сесть и выучить.
Этот курс со Stepik- кратчайший путь от «знаю что такое Rust» до «пишу на нём».
6 модулей, 50 уроков, 143 теста. Ownership, borrowing, traits, async, Tokio, Axum, макросы, WASM — всё разложено по полочкам и закреплено практикой.
Никакого видео на 40 минут ради одной мысли. Подробный текст, много кода, реальные задачи после каждого урока. На выходе — портфолио из 10+ проектов: от CLI-утилит до REST API с базой данных.
48 часов действует скидка 55 процентов: stepik.org/course/269250
Алгоритмы - это не только про собеседования
Это способ прокачивать мышление: работать со сложностью, находить неочевидные решения и держать форму. А еще один из шансов попасть на конференцию Day&Night* Городских сервисов Яндекса, которая пройдет 18 апреля в Москве.
Решайте задачу от Миши Левина, руководителя направления машинного обучения Городских сервисов Яндекса, до 12.00 15 апреля.
Решаешь правильно - получаешь шанс попасть на конференцию Day&Night* и выиграть другие призы.
А что будет на конференции?
Доклады про технологии и архитектуру
Реальные кейсы применения ИИ, бэкенда и мобильной разработки в Городских сервисах Яндекса. И живое общение с людьми, которые это все делают в формате камерных клубов.
Попасть можно по классике через заявку. А можно через задачи.
Выбирай свой способ 🙂
*День и Ночь
⚡ C породил всё: как один язык стал отцом C++, Java, Rust, Go, Swift и Zig
Daniel Lemire, эксперт по производительности софта из топ-2% ученых мира (по рейтингу Stanford/Elsevier 2025) и топ-1000 разработчиков на GitHub, опубликовал статью про эволюцию языков программирования семейства C. Разбираем ключевые тезисы.
Всё началось с трех языков: Fortran (1957), Pascal (1970) и C (1972). Fortran создавался для числодробилки и научных расчетов. Pascal намеренно ограничивал низкоуровневый доступ, потому что задумывался как учебный язык для структурного программирования. А вот C победил именно потому, что позволял работать с указателями, прямым доступом к памяти и при этом оставался достаточно универсальным для системной разработки вроде Unix.
В 80-е и 90-е объектно-ориентированное программирование стало чем-то вроде религии. Lemire прямо пишет: это превратилось в секту. Но C не был объектно-ориентированным. Так появился C++, который начинался как «C with Classes». C++ принес шаблоны, обобщенное программирование и метапрограммирование на этапе компиляции. Это сделало язык мощным, но и сложным для освоения (с безумными сообщениями об ошибках).
Показываю как профессионально работать с Claude и другими ИИ у себя в телеге! И зеркало Max, если тг не работает(
C и C++ стали дико успешными, но писать кроссплатформенные приложения было больно. Приходилось целиться в Windows или конкретный Unix. Это было проблемой для Sun Microsystems, которая продавала Unix-машины и хотела конкурировать с Microsoft.
Так в 1995 году появилась Java. Безопасная, портативная альтернатива C++: без арифметики указателей, с обязательной сборкой мусора, проверкой границ массивов и виртуальной машиной (JVM) с JIT-компиляцией для производительности. Обещание «write once, run anywhere» напрямую закрывало боль портируемости C/C++. До сих пор Java остается сильным решением для enterprise и серверного кода.
В том же 1995-м появился JavaScript, который, несмотря на название, семантически почти ничего общего с Java не имеет. Lemire считает, что его лучше рассматривать отдельно от ветки C/C++. Python тоже стоит особняком.
Microsoft в 2000 году выкатила C#. Синтаксически он из того же семейства, что C++ и Java, но с поддержкой AOT-компиляции в современном .NET и возможностью работать с указателями в явно помеченных unsafe-блоках. По сути, C# можно назвать «C++ со сборкой мусора». Он даже конкурирует с C++ в геймдеве благодаря Unity.
Google создал Go как упрощенный современный C: со сборкой мусора, встроенной проверкой границ для слайсов и массивов, с указателями, но без произвольной арифметики в безопасном коде (пакет unsafe существует для низкоуровневых нужд).
Apple ответила Swift. Производительность и цели синтаксиса как у C++, но с современными фичами безопасности (проверка границ по умолчанию, паника при переполнении целых чисел в debug-режиме) и автоматическим подсчетом ссылок (ARC) для управления памятью. Swift заменил Objective-C, но Lemire рассматривает его как наследника C++.
Примерно тогда же появились Rust и Zig. Rust, как и Swift, отказался от поколенческой сборки мусора из Java, C# и Go. Вместо этого он полагается на систему владения и заимствования на этапе компиляции, с компромиссом: через циклические ссылки можно допустить утечку памяти. Zig делает работу с памятью полностью явной.
Интересный тезис Lemire: Rust и Zig правильнее считать потомками C, а не C++. Оба, конечно, намного мощнее C, но по духу они именно C-подобные языки.
Доминирующими языками для перформанс-критичных, системных, enterprise- и инфраструктурных задач до сих пор остаются C, C++, Java и C#. По эффекту Линди (чем дольше что-то существует, тем дольше оно, вероятно, просуществует), эти языки, особенно C, которому уже больше 50 лет, будут с нами еще очень долго.
https://vc.ru/dev/2860450-yazyk-c-i-vliyanie-na-c-java-rust-go-swift-i-zig
Алгоритмы - это не только про собеседования
Это способ прокачивать мышление: работать со сложностью, находить неочевидные решения и держать форму. А еще один из шансов попасть на конференцию Day&Night* Городских сервисов Яндекса, которая пройдет 18 апреля в Москве.
Решайте задачу от Ильи Царева, руководителя разработки Яндекс Go, до 12.00 11 апреля.
Решаешь правильно - получаешь шанс попасть на конференцию Day&Night* и выиграть другие призы.
А что будет на конференции?
Доклады про технологии и архитектуру
Реальные кейсы применения ИИ, бэкенда и мобильной разработки в Городских сервисах Яндекса. И живое общение с людьми, которые это все делают в формате камерных клубов.
Попасть можно по классике через заявку. А можно через задачи.
Выбирай свой способ 🙂
*День и Ночь
📱 C++/Qt/QML разработчик в команду Mobile Android
— делаешь UI и механику приложения
— 20 млн пользователей каждый день
— C++20 + Qt + QML + 3D-карта
— многопоточность и продуктовая разработка
🧠 C++ разработчик в команду алгоритмов Поиска
— разрабатываешь движок поиска 2ГИС
— алгоритмы, структуры данных, архитектура
— влияние на качество поиска для миллионов
— производительность, память, ML-модели
Обе роли:
— удалёнка
— сильные команды
— сложные задачи
👉 Другие инженерные инсайты от 2ГИС → в Telegram-канале RnD
ffead-cpp
ffead-cpp — это веб-фреймворк, фреймворк приложений и набор утилит, объединенные в один пакет. Он также предоставляет встроенное ядро сервера, совместимое с HTTP/HTT2/Web-Socket.
#для_продвинутых