Вторая часть истории о том, как C и C++ стали такими, какими мы их знаем сегодня. Здесь расскажем об официальной сертификации C и C++, а также о вышедших инструментах в период с 1991 года и до наших дней.

Вторая часть истории о том, как C и C++ стали такими, какими мы их знаем сегодня. Здесь расскажем об официальной сертификации C и C++, а также о вышедших инструментах в период с 1991 года и до наших дней.
Популярность Rust неуклонно растёт, а с ней и сопутствующая экосистема. И оно не удивительно, ведь это единственный современный язык, который обеспечивает безопасность памяти и многопоточной обработки на этапе компиляции, предоставляя мощную и богатую систему сборки (cargo), а также всё больше различных пакетов (крейтов).
В своей повседневной работе я по-прежнему придерживаюсь C++, так как основная её часть связана с низкоуровневым программированием систем и ядра, а из этого языка легко задействовать написанный на С Windows API и COM API.
Rust — это язык для системного программирования, то есть он может справляться с теми же задачами, что и C/C++. Основное неудобство при этом создаёт громоздкий синтаксис, необходимый для преобразования типов С в типы Rust. Но это неудобство можно преодолеть, используя подобающие обёртки и макросы.
Короче говоря, я решил попробовать написать простой и полезный драйвер WDM. Это будет Rust-версия драйвера «Booster», о котором я пишу в своей книге (Windows Kernel Programming), позволяющего изменять приоритет любого потока на любое значение.Читать полностью »
Любимый отечественными энтузиастами компьютерной ретро-техники компьютер «Синклер» ZX Spectrum родом из начала 1980-х годов — восьмибитный. Любимый самодельщиками нынешнего тысячелетия Arduino родом из середины 2000-х годов — тоже восьмибитный. Они похожи, но такие разные. Сегодня попробуем навести мостик между этими мирами, преодолеть пропасть в два десятка лет, и заставить два разных устройства проиграть одни и те же мелодии.
В этой статье сплетаются сразу три темы: как устроены некоторые музыкальные полифонические процедуры на ZX Spectrum, как воспроизвести результат их работы в совершенно иной реализации на Arduino, а заодно немного электроники для начинающих — рассуждения на тему, как можно правильно или неправильно подключить динамик для вывода звука к этой самой Ардуине.Читать полностью »
В этой статье мы поговорим о разработке простого трёхмерного движка для консоли Dendy (NES/FamicomЧитать полностью »
В мире разработки программного обеспечения, особенно в области системного программирования, языки C и Rust занимают особое место. C, как проверенный временем язык, десятилетиями служил основой для создания операционных систем, включая Linux. Однако с появлением Rust, который позиционируется как более безопасный и современный ЯП, начались жаркие споры о том, стоит ли переписывать части ядра Linux на Rust или оставить всё как есть. Дискуссия вышла на новый уровень, когда разработчики Linux начали активно сопротивляться внедрению Rust. Кристоф Хеллвиг даже сравнил нововведение с «раковой опухолью». Что стоит за этим противостоянием, и почему Rust вызывает такие полярные мнения?
Читать полностью »
Продолжаю тему о сборке проектов на Си и Си++, первая часть которой размещена здесь.
Рецепты сборки по правилам хорошего тона должны поставляться с проектом и очень желательно, чтобы они не были привязаны к конкретной ОС или хотя бы к конкретному дистрибутиву Linux, используя специфические команды вроде apt-get, yum, emerge. Если это небольшой пет-проект выходного дня, то, конечно, в качестве рецепта сгодится и bash-скрипт. Пользователи адаптируют. Но если к проекту подключаются другие разработчики, то лучше потратить время на автоматизацию сборки, чтобы не терять его оптом в будущем. В этой части речь пойдёт об инструментах, которые используются для автоматизации процесса сборки программного обеспечения.Читать полностью »
Эта программа представляет собой свободную от зависимостей реализацию GPT-2. Она загружает матрицу весов и файл BPE из оригинальных файлов TensorFlow, токенизирует вывод при помощи простого энкодера, работающего по принципу частотного кодирования, реализует базовый пакет для линейной алгебры, в котором заключены математические операции над матрицами, определяет архитектуру трансформера, выполняет инференс трансформера, а затем очищает вывод от токенов при помощи BPE-декодера. Всё это — примерно в 3000 байт на C.
Каждый раз, в течение многих лет, собирая пилотную версию мизерного проекта или простой утилиты, мне кажется, что уж в этот раз точно обойдусь обычным скриптом для сборки, и никакие сборщики проекта мне не понадобятся. Но суровая реальность приводит меня в чувство уже в течение первых нескольких минут работы. Сначала оказывается, что до невозможности простая программка нуждается в JSON-парсере, HTTP-запросах CURL и прочих библиотеках. А по мере возбуждения хотелок эти все зависимости нарастают как снежный ком. И все мечты быстро скомпилировать страничку кода встречают на каждом шаге всё новые и новые проблемы.
Вот сегодня и расскажу о том, какие бывают способы борьбы с зависимостями и сборки проекта из множества файлов на Си++. Заодно те, кто не любят Си++, смогут порадоваться «прелестям» этого процесса. И хоть тема очень важная для программистов, но я обратил внимание, что даже многолетний опыт не гарантирует понимания этих процессов. Но сразу предупреждаю — история длинная даже с учетом всех попыток не убегать на смежные темы.Читать полностью »
Вашему вниманию предлагается полный список разделов электронной книги (12 из 11 :)), посвящённой неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо знаком с программированием на C++. Это своего рода путеводитель C++ программиста по неопределённому поведению, причём по самым его тайным и экзотическим местам. Автор книги — Дмитрий Свиридкин, редактор — Андрей Карпов.
Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство.
Я продолжаю свой цикл статей на хабре про детали реализации питона. Сегодня я хочу рассказать, как tuple
устроен внутри.