cpportal | Unsorted

Telegram-канал cpportal - С/С++ Portal | Программирование

14864

Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика Связь: @devmangx РКН: https://clck.ru/3Foc4d

Subscribe to a channel

С/С++ Portal | Программирование

Основы разработки компиляторов в формате конспектов лекций:

https://www.cs.cornell.edu/courses/cs4120/2026sp/notes/

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Разбор абстрактного синтаксического дерева — AST — с примером на C:
https://t.co/QSYzFju5mJ

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Стив Борн не любил C. Оболочка Bourne shell из Unix V7 написана на C, но из-за макросов код выглядит как Algol 68.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

9 месяцев назад автор выложил демо, в котором его движок (Kaigen) оказался в 17 раз быстрее Unity ECS в браузере.

На него обрушилось много хейта: выяснилось, что тогда Unity не поддерживала Burst в браузере.

Теперь поддерживает. Так что время для реванша:

ECS: ~2 мс против ~9 мс.
Время на CPU: ~3 мс против ~28 мс.

Kaigen3D по-прежнему быстрее в 4,2–8,7 раза.

Ссылка на демо — можно запустить и Unity, и Kaigen.
https://kaigen3d.com/demos/boids/

Исходный код демо на Kaigen:
https://github.com/Kaigen-Technologies/kaigen-boids

Исходный код демо на Unity — форк репозитория Unity:
https://github.com/Kaigen-Technologies/EntityComponentSystemSamples


Вот на что способен С-разраб!! 😆

https://kaigen3d.com/

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Керниган и Ритчи использовали этот пример, чтобы показать, насколько C «близок к железу».

Код копирует строку и останавливается на нулевом символе NUL, потому что само присваивание служит условием.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

В C можно реализовать наследование с помощью одного простого правила: сделай родительскую структуру первым полем дочерней.

C гарантирует, что адрес структуры совпадает с адресом её первого поля, поэтому приведение указателей между ними работает.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Обязательно к прочтению, если интересуешься управлением памятью.

https://www.gingerbill.org/series/memory-allocation-strategies/

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Если ещё не пробовали, стоит посмотреть на эту отличную визуализацию конвейера, построенную на реальных данных Intel. Она помогает оценить задержку и пропускную способность.

https://uica.uops.info

Видео, как обычно, сделал Opus 5.5.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

В этой статье разбирается страничная организация памяти — широко распространённая схема управления памятью, которую мы также будем использовать в своей операционной системе.

Объясняется, зачем нужна изоляция памяти, как работает сегментация, что такое виртуальная память и как страничная организация решает проблемы фрагментации памяти. Также рассматривается устройство многоуровневых таблиц страниц в архитектуре x86_64.

https://os.phil-opp.com/paging-introduction/

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Parallel C++ — параллельное программирование на C++

Учебник посвящён практическому параллельному программированию на C++ на уровне магистратуры и аспирантуры. В нём рассматриваются API и связанные с ними возможности языка из стандартов C++17 и C++20 — как для систем с одним вычислительным узлом, так и для распределённых систем.

Учебник показывает, что благодаря средствам параллельного программирования в C++17 и C++20 изучать метаязыки вроде OpenMP больше не обязательно.

С помощью HPX, библиотеки C++ для параллелизма и конкурентного выполнения, те же возможности языка можно распространить на распределённый код. Это даёт более высокоуровневый интерфейс C++ для распределённого программирования, чем MPI — интерфейс передачи сообщений.

https://github.com/TheHPXProject/hpx

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Разработчик, который годами писал на C и C++ в Microsoft и Google, спроектировал сотни систем и провёл тысячи код-ревью, описал проблему Claude Code, с которой столкнулся на практике.

Плохой код он чувствуюет примерно так же, как некоторые чувствуют запах дыма.

В первую неделю с Claude ему казалось, что он просто взломал систему. Фичи выкатывались, все проверки проходили, и он впервые начал рано ложиться спать.

А потом каждый исправленный баг начал порождать ещё два. Работа резко замедлилась.

Правишь checkout — ломается биллинг. Чинишь биллинг — отваливаются уведомления. "Быстро поменять одно поле" — и уже развалились три модуля.

Это всё тот же спагетти-код, который лентяи-разработчики писали годами. Просто Claude пишет его в 200 раз быстрее.

Anthropic обучила гения на свалке из Stack Overflow и корпоративной Java-разработки и назвала это полезным ассистентом.

Обращение через цепочки объектов. Чрезмерный DRY. Хуки "на будущее". Деревья наследования. Один файл делает пять разных вещей. God functions.

Решение существует ещё с 1994 года.

Просто вставьте это в AGENTS.md:

# Вечные ограничения, а не чек-лист

Если два принципа конфликтуют, выбирай тот, который сильнее снижает будущую стоимость изменений ИМЕННО в этой кодовой базе.

ЖЁСТКОЕ ПРАВИЛО: сначала отрефактори код под принцип, и только потом меняй поведение.

1. Separation of Concerns — одна категория работы на одну часть системы: UI / domain / persistence / infra. Базовый принцип.
2. Encapsulation / Information Hiding — небольшой стабильный контракт, внутренности скрыты.
3. High Cohesion + Loose Coupling — то, что меняется вместе, должно жить вместе; независимые части общаются через узкие интерфейсы.
4. DRY — одно авторитетное представление для каждого знания, а не для каждой похожей строки. Не переусердствуй с DRY.
5. KISS — самая простая архитектура, которая работает. Сложность — это долгосрочный налог.
6. Single Responsibility — одна причина для изменения.
7. Depend on Abstractions — политика не зависит от деталей; и то и другое зависит от контрактов.
8. YAGNI — никаких спекулятивных фич, фреймворков и хуков «на потом».
9. Composition over Inheritance — собирай систему из компонентов, а не выращивай хрупкие иерархии.
10. Open/Closed, но с дисциплиной — расширяй систему через стабильные границы и только там, где одно и то же изменение уже понадобилось дважды.

Также полезно: Law of Demeter · fail fast / illegal states unrepresentable · optimize for deletion · Unix-принцип «делай одну вещь и хорошо» + композиция.

Относись к этому как к ограничениям. Если здравый смысл требует нарушить лозунг — нарушай.


👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Уже видели интерактивное объяснение Transformer?

Очень крутая визуализация того, как работает архитектура.

https://poloclub.github.io/transformer-explainer/

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Кто-то попытался протащить в OpenBSD клоны GNU CoreUtils, переписанные на Rust

Тео де Раадт, руководитель OpenBSD, идею не оценил.

А его ответы были... занятными.

"Пахнет продвижением повестки."


"А, потому что это написано на Rust. Ваша повестка уже слишком заметна."


"В этом нет никакого смысла. Никому не нужны бинарники, которые ведут себя чуть иначе, как часть привычного воркфлоу... В этой вселенной нет людей, которые захотят заменить один ls на другой ls, а потом удивляться конфликтам из-за нестандартизированного поведения инструментов."


https://marc.info/?t=17898877070

@linuxos_tg

Читать полностью…

С/С++ Portal | Программирование

Напишите минимальное ядро ОС с нуля.

Начните с загрузчика и постепенно дойдите до рабочего ядра операционной системы, запущенного в защищённом режиме.

Проект показывает, что на самом деле происходит между загрузчиком и main().

https://www.lowlevelcraft.com/capstone/minimal-os-kernel

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

В 2000 году программист обнаружил, что корутины в C можно реализовать с помощью того же трюка со switch, что используется в Duff’s Device.

Этот приём получил название Tatham’s Coroutine и использовался в PuTTY.

Сам Саймон Тэтэм назвал его «худшим хаком на C», который ему доводилось видеть в продакшене.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

CS 6120: «Продвинутые компиляторы» — онлайн-курс Корнеллского университета для самостоятельного изучения.

https://www.cs.cornell.edu/courses/cs6120/

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

C++:
«Ты можешь делать что угодно»

Rust:
«Ты можешь делать что угодно»
«Но сначала объясни почему»

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Триграфы добавили, чтобы код на C можно было писать на клавиатурах без символов #, { и }.

Это корректный код на C для стандартов от C89 до C17. В C23 триграфы убрали.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Возвращаемся к основам! Скопируем строку на C, а затем посмотрим, как это делается на ассемблере!

// Как скопировать строку на C и ассемблере:

// На C:

while ((*dst++ = *src++))
;


На ассемблере PDP-11 достаточно одной инструкции в цикле, поскольку операции пред- и постинкремента встроены в саму инструкцию.

; R0 = src, R1 = dst
10$: MOVB (R0)+,(R1)+
BNE 10$


На ассемблере x86 с этим справилась бы REP MOVSB, если бы длина строки была известна. Но она неизвестна, поэтому:

; RSI = src, RDI = dst, флаг направления сброшен
copy:
lodsb ; AL = *src++
stosb ; *dst++ = AL
test al, al
jnz copy


👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Кажется, для SHA-3 должна понадобиться огромная криптографическая библиотека.

Но эта реализация умещается примерно в 120 строк C.

Вся перестановка Keccak-f[1600] развёрнута с помощью макросов.

Только C, битовые операции и состояние размером 200 байт.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Как виртуальная память влияет на задержки — статья Эрика Ригторпа.

https://rigtorp.se/virtual-memory/

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Давайте изучать ассемблер x86-64: практическая серия.

https://gpfault.net

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

В 2007 году один разработчик спросил, почему Git написан на C, а не на C++.

Линус Торвальдс ответил:

«ТЫ несёшь полную чушь».
«C++ — ужасный язык».

Он добавил, что уже одного желания держать C++-программистов подальше от проекта было бы достаточно, чтобы выбрать C.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Скорее всего, вы прямо сейчас используете SQLite и даже не знаете об этом.

Она лежит в основе всего — от вашего браузера до локального хранилища на телефоне.

Вот как эта маленькая, невероятно мощная база данных устроена внутри.

https://sqlite.org/arch.html

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Компиляторы и то, как их создавать — подробный журнал, в котором разбираются все тонкости процесса.

https://github.com/DoctorWkt/acwj

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

C-движок наконец готов к полноценному использованию. Он называется Kaigen.

Первое демо — Minecraft Test.

kaigen отлично работает с ИИ. Главное отличие от Three.js в том, что готовый проект запускается на Windows, Mac, iPhone, Android и в браузере. Скоро добавят и VR.

И ещё он выдаёт больше 330 FPS на видеокарте шестилетнего ноутбука.

Ссылка на демо и код.

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Если вы давно не заглядывали в дорожную карту Cornell «Understanding GPU Architecture», стоит посмотреть ещё раз.

Её обновили и добавили современные архитектуры для высокопроизводительных вычислений, включая NVIDIA Blackwell B200.

https://cvw.cac.cornell.edu/gpu-architecture

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Портал в основы архитектуры GPU.

https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/Archive/EECS-2016-143.pdf

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Как только начинаешь визуализировать свои SQL-схемы вот так, назад пути уже нет.

sqltoerdiagram.com

👉 @Cpportal

Читать полностью…

С/С++ Portal | Программирование

Профессору Иллинойсского университета надоели существующие учебники по системному программированию, поэтому он начал писать Wikibook вместе со студентами.

В одной бесплатной книге собраны C, процессы, потоки, память, сети, файловые системы, планирование и безопасность.

https://github.com/cs341-illinois/coursebook

👉 @Cpportal

Читать полностью…
Subscribe to a channel