Как стать автором
Обновить
130.58
Рейтинг

C *

Типизированный язык программирования

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Дзен Nim

Программирование *C++ *Компиляторы *C *
Из песочницы
Перевод

1. Копирование плохого дизайна — плохой дизайн.

2. Если компилятор не может рассуждать о коде, то и программист не может.

3. Не стой на пути у программиста.

4. Перенеси работу на этап компиляции: программы запускаются гораздо чаще, чем компилируются.

5. Настраиваемое управление памятью.

6. Лаконичный код не мешает читабельности, он ей способствует.

7. (Задействовать метапрограммирование, чтобы оставить язык компактным).

8. Оптимизация это специализация: если вам нужно больше скорости, пишите кастомный код.

9. Должен быть только один язык программирования для всего. Этот язык — Nim.

Читать далее
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 3.7K
Комментарии 23

Новости

Коллекционирую вредные советы для С++ программистов

Блог компании PVS-Studio Ненормальное программирование *C++ *Кодобред C *

Помогите, у меня лапки
Я пишу статьи, посвященные написанию качественного кода и про поиск ошибок с помощью инструментов статического анализа. Однообразие наскучивает, хочется пошалить. А давайте все вместе напишем статью "100 вредных советов для С++ программиста". Я начну, а вы подхватите.

Читать дальше →
Всего голосов 57: ↑47 и ↓10 +37
Просмотры 19K
Комментарии 163

Как Mozilla упустила (не)очевидную уязвимость

Блог компании SkillFactory Информационная безопасность *Программирование *C *Читальный зал
Перевод

Эксперт из Project Zero рассказывает об уязвимости, простота и очевидность которой поразили его. Но как же эта уязвимость проникла в тестируемый код Mozilla? Разбираемся под катом, пока стартует наш курс по этичному хакингу.

Читать далее
Всего голосов 22: ↑19 и ↓3 +16
Просмотры 9.4K
Комментарии 9

Что необходимо знать, чтобы написать свою Embedded RTOS (часть 1)

Open source *C *
Из песочницы

Хотел бы написать небольшой цикл статей посвященных тому, как я написал свою RTOS с какими трудностями столкнулся и зачем вообще писать свою RTOS если уже есть FreeRTOS, RTX, embOS и т.д. список достаточно большой.

Начнем с того, что по мере работы я сталкивался с тем, что часть разработчиков (и я в том числе когда-то и сам) относятся к RTOS как к некоторому черному магическому ящику, мол что-то там происходит как-то все это работает и лучше туда не лесть, а то поломается ящик и проекту «ХАНА». И все хорошо пока хорошо, но как только появляются проблемы, то начинаются бессонные ночи с отладчиком, сроки по проекту горят, а самое главное и коварное, что ошибки в RTOS отловить крайне сложно. Зачастую они имеют плавающий характер и такие эффекты как переполнение стека, инверсия приоритетов, взаимные блокировки, и все, что связанное со средствами синхронизации отладить крайне сложно.

Cо всем этим я решил разобраться в корне, и чисто в академичесеких целях начал писать свою RTOS, чтобы так сказать прочувствовать все изнутри.

В итоге, оказалось, что написать RTOS ни так уж и сложно как кажется. И есть один существенный плюс, когда пишешь все сам и осознанно, то на поиск артефактов в виде багов уходит гораздо меньше времени (пара часов или полдня максиму).  Кроме того открываются внутренние чакры и начинаешь чувствовать как работают другие RTOS в чем плюсы или минусы разных RTOS, в общем возникает чувство явного прозрения.

При написании RTOS, я осознанно отказался от поддержки проприетарных архитектур как AVR, PIC и мой выбор пал на семействе CORTEX, поскольку cortex-mX, на сегодня самая распространенная архитектура в Embedded.

Читать далее
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 5.1K
Комментарии 78

QOI: как сжимать изображения в 20 раз быстрее STBI и без потерь

Блог компании SkillFactory Программирование *Алгоритмы *C *Читальный зал
Перевод

У представленного месяц назад формата сжатия изображений QOI уже есть реализации на различных языках, плагины для GIMP, Xn View MP и Paint.NET, а также dll для отображения эскизов в Проводнике Windows. Можно скачать изображение и сразу посмотреть на него здесь. Подробности о qoi от автора формата читайте под катом.

Читать далее
Всего голосов 29: ↑21 и ↓8 +13
Просмотры 5.1K
Комментарии 11

STM32, CMSIS, CAN, Часть 1 — передача

C *Стандарты связи Учебный процесс в IT Электроника для начинающих
Из песочницы

Привет, сегодня мы будем настраивать отправку данных с помощью CAN (Controller Area Network). В интернете много информации о том, как настроить CAN использую HAL библиотеку, а в случае использования CMSIS информация обрывочна, по этой причине решил рассказать о своем опыте работы.

Принцип работы CAN-сети в этой статье разбирать не будем т.к. на просторах интернета существует большой объем материла (особенно мне нравится как написано тут) на эту тему, но по ходу повествования будем останавливаться на некоторых нюансах.

Ставим себе задачу: заставить контроллер периодически отправлять кадры в CAN-сеть с скоростью передачи 250 кБит/с, со стандартной длиной идентификатора (11 бит) с полем данных размеров 8 байт.

Читать далее
Всего голосов 20: ↑17 и ↓3 +14
Просмотры 7K
Комментарии 21

Умещаем простую 16-битную VM в 125 строк Си

Блог компании RUVDS.com Программирование *Assembler *Виртуализация *C *
Перевод
Tutorial

Это руководство предназначено для тех, кто только начинает изучение Си и хочет получить ценный опыт в области низкоуровневого программирования, а также понять внутреннее устройство виртуальных машин. К завершению статьи у нас будет рабочая регистровая виртуальная машина, способная интерпретировать и выполнять ограниченный набор инструкций ASM, плюс несколько дополнительных программ для тестирования ее работоспособности.
Читать дальше →
Всего голосов 75: ↑73 и ↓2 +71
Просмотры 16K
Комментарии 21

MAKEFILES, лучшие практики. Часть 1

Блог компании OTUS Программирование *C *
Перевод

Makefile’ы широко используются для создания билдов огромного множества проектов на самых разных языках, но проекты на C/C++ составляют большинство из них. Если вы разрабатываете или тестируете программное обеспечение, вероятность того, что вы их встретите, очень высока.

В этой статье мы рассмотрим некоторые распространенные ошибки при работе с Makefile’ами, а также расскажем о лучших практиках и поддержке кросс-компиляции.

Что вам понадобится: хорошее понимание, что из себя представляет Makefile, иерархия каталогов UNIX и процесс компиляции.

Читать далее
Всего голосов 16: ↑5 и ↓11 -6
Просмотры 4.9K
Комментарии 13

Разработка под Flipper Zero: быстрый старт и первое приложение

C *Программирование микроконтроллеров *Гаджеты
Tutorial

Итак, это случилось. Я добыл Flipper Zero в бою (ну, на самом деле мне его выдали на хакатоне), и естественно, что интереснее всего не играть в него, используя уже сделанные кем-то функции, а писать что-то новое. Примерно так же я развлекался с Pebble. Тут, кстати, все очень похоже — МК, RTOS, небольшой монохромный экранчик, си.

Поэтому давайте попробуем что-нибудь под него написать. Для начала, что-то совсем простое, чтобы освоиться с SDK, не закапываясь в отладку и сложности RTOS, но функциональное. Есть кнопки, есть экранчик, давайте напишем счетчик-кликер. Нажимаете кнопку — число увеличивается. Подойдет считать посетителей, круги на стадионе, взломанные домофоны или сообщения в чате русскоязычного комьюнити флиппера (по утрам, в особенно активное время там их бывает до 2к, так что я бы на вашем месте подумал, прежде чем нажимать кнопку Join).

Читать далее
Всего голосов 116: ↑114 и ↓2 +112
Просмотры 11K
Комментарии 72

Проверяем код дельфина Flipper Zero на чистоту с помощью PVS-Studio

Блог компании PVS-Studio Open source *C++ *C *Программирование микроконтроллеров *

Проверяем код дельфина Flipper Zero на чистоту с помощью PVS-Studio
Flipper Zero — швейцарский нож для гиков и пентестеров с открытым исходным кодом. Так получилось, что пути этого проекта и анализатора PVS-Studio пересеклись. Философский вопрос: начинать ли проверять проект, зная, что авторы проекта уже исправляют ошибки? Попробуем.

Читать дальше →
Всего голосов 97: ↑93 и ↓4 +89
Просмотры 17K
Комментарии 31

Чем хуже, тем лучше

Блог компании OTUS Программирование *C *
Перевод

Я, как и почти каждый Common Lisp и CLOS разработчик, очень хорошо знаком с подходом к проектированию MIT/Стэнфорда. Суть этого подхода можно выразить фразой “the right thing” (то, что нужно/как следует). Для таких разработчиков важно соответствовать всем нижеизложенным характеристикам:

Читать далее
Всего голосов 12: ↑6 и ↓6 0
Просмотры 14K
Комментарии 6

C++ Builder. Есть ли жизнь после смерти? Мнение одного динозавра

Программирование *C++ *C *

В этой статье я опишу собственные впечатления о последних версиях среды разработки RADStudio от Embarcadero и, возможно, постараюсь помочь кому-то в ответе на вопрос: «А оно мне надо?».

Сразу оговорюсь. Все описанное в этой статье является моим личным мнением и любые сравнения и характеристики, являющиеся плюсами или минусами, являются таковыми только для меня и моего способа использования инструментом. Если для Вас какие-то из указанных достоинств или недостатков так же являются таковыми – очень хорошо, но если это не так, то не стоит впадать в берсерк и начинать крестовую войну. Тут никто не воюет.

Читать далее
Всего голосов 47: ↑44 и ↓3 +41
Просмотры 14K
Комментарии 126

XV6 как ОС для обучения

Open source *Assembler *Системное программирование *C *История IT

Мы уже несколько лет преподаем разработку компонентов учебной операционной системы xv6, и хотим поделиться своим опытом. Этот курс прошли уже около 600 студентов. Если вас заинтересует эта статья, то вы можете ознакомиться с нашим курсом.

После базовых курсов вроде операционных систем часто студенты выходят без реальных практических знаний. Лучше всего можно понять работу операционной системы, написав её самому. Но так как этот процесс может занять не один семестр, в рамках учебного курса можно ограничиться разработкой только ключевых компонентов. Для этого мы используем учебную операционную систему xv6, про которую расскажем ниже, так как она значительно проще Linux или других пользовательских ОС.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 2.1K
Комментарии 13

Быстрая обработка CSV с помощью ОКМД (SIMD)

Блог компании SkillFactory Высокая производительность *Программирование **nix *C *
Перевод

Недавно автор узнал об инструменте csvquote, который кодирует проблемные символы CSV так, чтобы утилиты unix правильно их обрабатывали. Он меняет кодировку в конце конвейера, восстанавливая исходный ввод. Оригинальная реализация работает с кавычками CSV простым, примитивным методом. Но на современном «железе» есть подход лучше, проще и в 3 раза быстрее.

CSV часто используется как формат наборов данных. Подробностями делимся к старту флагманского курса по Data Science, который начнётся уже завтра.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 1.7K
Комментарии 8

Топ-10 ошибок в C++ проектах за 2021 год

Блог компании PVS-Studio Open source *C++ *C *

На улице мороз, ёлка наряжена, мандарины разложены. Дело идёт к Новому году, а значит — время рассмотреть самые интересные срабатывания, найденные C++ анализатором PVS-Studio в 2021 году.

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Просмотры 9.9K
Комментарии 10

Самоделка — полная…: ПХМ-1 из пластика и кремния

Блог компании Selectel C *Программирование микроконтроллеров *DIY или Сделай сам
Источник

ПХМ-1 — вымышленный прибор из лаборатории Доктора Дью. Он предназначен для измерения качества присланных «самоделок» по линейной шкале. Очевидно, что это реквизит для съемок, тем не менее, устройство можно использовать в качестве шутки во многих областях, в том числе в IT.

Пошаговых инструкций по созданию ПХМ-1 не нашлось — пришлось писать самому.
Читать дальше →
Всего голосов 71: ↑67 и ↓4 +63
Просмотры 20K
Комментарии 27

Релиз CLion 2021.3: новый механизм удаленной разработки, тулчейн для Docker, улучшения отладчика и многое другое

Блог компании JetBrains Программирование *C++ *C *

Привет, Хабр!

Традиционно начало декабря — время, когда релизятся все продукты JetBrains. И сегодня я расскажу о CLion 2021.3 — новой версии нашей кроссплатформенной IDE для разработки на C и C++.

Главная новость прошедшей релизной недели — выпуск нового решения для удаленной разработки. Другие улучшения в CLion: оптимизация и новые возможности по работе с тулчейнами, улучшенное представление данных в отладчике, подсказки для выведенных типов в редакторе, повышение точности и новые возможности анализатора кода, новая опция для представления структуры текущего файла.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 2.3K
Комментарии 22

Неопределенное поведение может привести к путешествиям во времени

Блог компании OTUS Программирование *C *
Перевод

Языки C и C++ печально известны большими областями на картах, которые отмечены предупреждением “тут обитают драконы”, а если говорить более формально, речь идет о неопределенном поведении (undefined behavior).

Когда мы сталкиваемся с неопределенным поведением, может произойти все что угодно. Например, переменная может быть одновременно и true, и false. В блоге Джона Регера (John Regehr) есть парочка интересных примеров неопределенного поведения, а также определены несколько победителей объявленного в комментариях конкурса на самый сумасшедший объектный код, генерируемый компилятором в результате неопределенного поведения.

Читать далее
Всего голосов 15: ↑11 и ↓4 +7
Просмотры 11K
Комментарии 29

Электроника всем начинающим

C++ *C *Разработка под Arduino *DIY или Сделай сам Электроника для начинающих
Из песочницы

Хабр! Добро пожаловать снова. 

Сегодня мы сделаем одно из самых бесполезных устройств из тех, что можно собрать, но как показывает жизнь, лучше сделать что-то, чем не сделать ничего. Тем не менее, в защиту этой бесполезности можно сказать только что-то вроде: много ли интересных дел, которыми мы занимаемся являются хоть сколько бы полезными?

Мы будем делать часы, таймер и игру в одном устройстве.

Читать далее
Всего голосов 39: ↑28 и ↓11 +17
Просмотры 20K
Комментарии 55

Низкоуровневое обнаружение Wi-Fi устройств в домашней сети

Блог компании Selectel C *Программирование микроконтроллеров *DIY или Сделай сам

Чтобы сделать собственное уникальное устройство для «умного дома» сейчас достаточно купить микроконтроллер и электронные компоненты. Конечно, на рынке уже есть множество «умных» устройств, но не все производители предоставляют открытое API, и уж точно единицы разрешают (или по крайней мере не запрещают) создавать собственные прошивки. Иногда наступает тот момент, когда кажется, что разработать и запрограммировать собственное устройство будет лучшим решением.

В этой статье я расскажу про несколько способов «‎научить» микроконтроллер распознавать присутствие людей дома исключительно с помощью Wi-Fi.
Читать дальше →
Всего голосов 51: ↑51 и ↓0 +51
Просмотры 15K
Комментарии 20

Вклад авторов

Работа

Программист С
25 вакансий