Рубрика «C» - 9
Вторая жизнь китайского чудо-шнурка J2534
2022-07-24 в 6:22, admin, рубрики: C, CAN, автомобильная электроника, Автомобильные гаджеты, диагностика автомобилей, реверс-инжинирингЯзыка С-C++ не существует
2022-07-13 в 16:36, admin, рубрики: C, c++, декларативное программирование, императивное программирование, найм разработчиков, Программирование, С++Каждый день, везде, в том числе в технических статьях, появляется мифический С/С++, честно говоря я просто устал это видеть и хочу в этой короткой статье донести простейшую мысль - С и С++ это два совершенно разных языка с разными требованиями и подходами к разработке.
-
Языки несовместимы и уже давно. Они развиваются параллельно(хотя про развитие стандарта С не знает ничего даже гугл, но он есть, добавили дженерики и хотят лямбды...)
Коллоквиум по программированию микроконтроллеров
2022-07-09 в 17:51, admin, рубрики: bash, C, devops, rtos, tdd, Карьера в IT-индустрии, микроконтроллеры, Программирование, программирование микроконтроллеров, системное программирование, собеседование вопросы, собеседования, собеседования задачи, электроникаЭто список вопросов на которые должен уметь ответить тот кто программирует микроконтроллеры и заниматься разработкой электроники. Вопросы в частности взяты из технических собеседований при устройстве на работу в разные компании. Постарался отобрать только самые приближенные к практике вопросы, которые можно выделить после 10 лет InSider(ского) опыта. Тут не будет моветонных вопросов из серии "как инвертировать связанный список". Тут всё исключительно только по делу.
По коду
--Зачем static?
--Зачем ключевое слово volatile C
--Всё ли в порядке с кодом?
int square(volatile int *ptr) {
return *ptr * *ptr;
}Читать полностью »
Запускаем Julia на Arduino
2022-06-29 в 13:00, admin, рубрики: arduino, arduino ethernet, C, Julia, LLVM, llvm ir, ruvds_перевод, Блог компании RUVDS.com, программирование микроконтроллеров, Разработка под Arduino
У меня нет особого опыта работы с микроконтроллерами. Раньше я немного экспериментировал с Arduino, а главной точкой входа моей домашней сети является Raspberry Pi, но на этом мой недавний опыт заканчивается. Я прошёл один курс по микроконтроллерам несколько лет назад, и справлялся с ним ужасно, едва набрав проходной балл. Тем не менее они меня восхищают — это устройства с низким энергопотреблением, которые можно запрограммировать выполнять практически любые операции, если быть аккуратным с управлением ресурсами и не стрелять себе в ногу.
При обсуждении Julia всегда подразумевается обязательное наличие двух аспектов: среды исполнения и сборщика мусора. Чаще всего оптимизация Julia (да и любого другого кода) сводится к двум аспектам:
- минимизация времени, потраченного на выполнение кода, который вы не писали,
- иметь достаточно кода, который нужно запускать скомпилированным в нативные команды той системы, где он должен работать.
Требование 1 сводится к принципу «не обменивайтесь информацией со средой исполнения и GC, если это необязательно», а требование 2 — к принципу «убедитесь, что не выполняется ненужный код, например, интерпретатор», то есть статически компилируйте свой код и по возможности избегайте динамичности.
Читать полностью »
Игра: найди ошибку в C++ коде
2022-06-29 в 8:00, admin, рубрики: C, c++, code review, quiz, баги, Блог компании PVS-Studio, игра, КодоБред, найди ошибку, никто не читает теги, ошибки в коде, Программирование, Си, тестирование
Авторы анализатора PVS-Studio предлагают вам проверить свою внимательность и развлечься. Попробуйте быстро отыскать баг в фрагменте исходного кода и ткнуть в него мышкой.
Абстракции и наследование в Си — стреляем по ногам красиво
2022-06-24 в 12:05, admin, рубрики: C, абстракция, наследование, ненормальное программирование, ооп, упорюсьИногда нет-нет да и хочется что-нибудь абстрагировать и обобщить в коде на Си. К примеру, хочешь ты принтануть содержимое структуры несколько раз, пишешь везде, как дурак, printf("%s %d %fn", foo->bar, foo->baz, foo->boom)
, и интуитивно кажется, что есть способ сделать foo->print(foo)
, и так вообще со всеми структурами, не только с foo
.
Возьмем пример: есть некий чувак с именем и фамилией, и есть птица, у которой есть имя и владелец.
typedef struct Person Person;
struct Person {
char *first_name;
char *last_name;
};
typedef struct Bird Bird;
struct Bird {
char *name;
Person *owner;
};
16-битная ОС на fasm + Cи. Часть 1
2022-06-01 в 2:42, admin, рубрики: C, ассемблер, загрузка ос, загрузчик, операционная система, Си, системное программированиеДанная статья в большей степени является не руководством и не мануалом, а просто моими заметками. Идея этой статьи собрать множество особенностей и знаний в одно целое, надеюсь, она кому-то пригодится =)
Что происходит с ОЗУ при загрузке компьютера
Когда вы нажимаете кнопку старта на компьютере(или замыкаете контакты на материнке) BIOS проверяет оборудование и загружает первый сектор жесткого диска(512 байт), который помечен как загрузочный, по адресу 7C00h (h - hex) и начинает выполнять программу которая лежит в этих 512 байтах. От сюда следует, что у нас в распоряжеии есть только 512 байт.
Как пропатчить ОС 1996 года с помощью Ghidra
2022-05-10 в 22:11, admin, рубрики: 1996, C, kurzweil, skillfactory, бинарники, Блог компании SkillFactory, декомпиляция, звук, реверс-инжиниринг, ретро, Си, синтезаторы, старое железо, форматыНе так давно автор материала работал над сложной головоломкой: как пропатчить операционную систему сэмплового синтезатора 1996 года Kurzweil K2500. О путешествии автора в старый код музыкального инструмента рассказываем к старту курса по разработке на C++.

Библиотека для адресных светодиодов STM32
2022-05-09 в 13:02, admin, рубрики: C, diy или сделай сам, DMA, open source, stm32, WS2812, ws2812b ws2813 ws2815, адреска, гаджеты, программирование микроконтроллеровДрайвер для STM32 для реализации протокола адресных светодиодов (WS2812, WS2811, SK6812, и т.д.), с рациональным использованием буферной памяти и DMA.
Ссылка на библиотеку на GitHub:
Ролик на YouTube:
Обзор всего доступного в С++ type erasure
2022-04-24 в 11:05, admin, рубрики: C, c++, C++20, coroutines, type erasure, ПрограммированиеТехника стирания типов - type erasure - известна довольно давно, хоть её и долго не замечали. Тем не менее кажется только в последнюю декаду она стала из игрушки и костылей превращаться в мощный инструмент, использующийся каждый день в разработке.
Если спросить современного С++ разработчика какие примеры type erasure он видел / использовал, то вероятно он ответит что то про std::function и возможно про std::any, но это лишь малая часть всех применений этого замечательного инструмента!
В статье я постараюсь описать все возможные виды type erasure в современном С++, но начать стоит с определения.