В этой статье я расскажу опыт разработки ведомого устройства для промышленных контроллеров Siemens с протоколом PROFIBUS DP-V0. Реализованный функционал достаточный для разработки простых устройств, но не полон. Статья нацелена на людей, которые знакомы с промэлектроникой и микроэлектроникой.
C *
Типизированный язык программирования
Новости
Трюк с LD_PRELOAD
Недавно на кафедре баз данных TUM я работал над интересной низкоуровневой библиотекой на языке С — tssx, заменяющей в любом приложении взаимодействие через сокеты на быструю передачу данных через разделяемую память. С нашей библиотекой Postgres работает более чем в два раза быстрее, а некоторые программы даже на порядок быстрее. В основе библиотеки лежит трюк с LD_PRELOAD
, о котором я и расскажу в этой статье.
В {n} раз быстрее Си
Иногда человек может обнаружить такие возможности оптимизации, которые не видит компилятор. В этой статье мы начнём с цикла, сгенерированного из кода Си с помощью clang, и скорректируем его разными способами, попутно измеряя прирост в скорости.
Эта статья публиковалась на главной странице HackerNews, и к её обсуждению вы можете присоединиться здесь.
Почему язык C никогда не помешает вам совершать ошибки
Короткий ответ: потому что мы так сказали.
... Что?
Ладно, признаю, для статьи это неприемлемо короткий ответ, и мои провокационные слова требуют пояснений.
Истории
60 антипаттернов для С++ программиста, часть 12 (совет 56 — 60)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
Автоматический обход блокировок
Описание работы программы для автоматического обхода блокировок в интернете, код программы лежит на репозитории antiblock.
Малоизвестные возможности языка C
Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java. И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.
Текущая наиболее часто используемая версия языка, c99, принесла много новых возможностей, многие из которых совершенно неизвестны большинству программистов на C (в более старых спецификациях, очевидно, тоже есть свои темные уголки).
Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1
Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.
Под катом мы погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать.
P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».
60 антипаттернов для С++ программиста, часть 11 (совет 51 — 55)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
60 антипаттернов для С++ программиста, часть 10 (совет 46 — 50)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
60 антипаттернов для С++ программиста, часть 9 (совет 41 — 45)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
Заметка к примеру «procfs3.c» 7 главы книги «The Linux Kernel Module Programming Guide»
В данной заметке хочу оставить пару комментариев к примеру работы с файловой системой /proc из вышеприведенного мануала. Во время познания материала обнаружил некоторые несостыковки и вещи не совсем поясненные до конца, так что тут попытаюсь внести немного больше ясности для тех, кто начнет топать этим путем.
60 антипаттернов для С++ программиста, часть 8 (совет 36 — 40)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
nRF52832. Реализация сопряжения и списка доверенных подключений
В предыдущей статье я кратко описал как начать работать с nRF52832. Для полноценной работы периферийного устройства необходимо реализовать функции сопряжения и подключения "по кнопке", как многие серийные Bluetooth устройства. Этот путь был тернист и долог, этой статьей постараюсь его облегчить.
Реализуем с нуля функцию косинуса на языке C
Я изучил, как реализовать функцию косинуса при помощи нескольких разных подходов. Одна из реализаций почти в три раза быстрее, чем math.h, но придётся смириться с точностью до четырёх знаков после запятой.
Задавались ли вы когда-нибудь вопросом, как в математической библиотеке вашего любимого языка программирования реализованы тригонометрические функции, например, косинус? Это настолько популярная функция, что её можно встретить в каждой математической библиотеке, поэтому реализация должна быть довольно простой, ведь так? Ну уж нет. Почти совершенно точно, что это не так.
Моё исследование началось с того, что мой друг и коллега Стивен Марц работал над ядром операционной системы и я предложил, чтобы он отрисовал на экране функцию косинуса. Я часто использую косинус в качестве «hello, world» для графических приложений. Возникла проблема: его ядро не задействовало стандартную библиотеку C (а значит, прощай math.h!), а целевой платформой являлась архитектура RISC-V (а значит, никаких подобий команды fcos Intel!).
Так началось моё долгое приключение.
60 антипаттернов для С++ программиста, часть 7 (совет 31 — 35)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
APRS. AFSK модулятор из Flipper Zero
Есть такой интересный протокол передачи данных - APRS. Про него в интернете уже много рассказывалось, здесь не будет углубленного теоретического материала. В этой статье будет описано как создать свой собственный «карманный» модулятор AFSK. В последующих статьях будут инструкции по выходу в эфир и по созданию простого демодулятора, который позволит принять пакеты APRS и отобразить информацию на дисплее прямо на улице. Всё будет реализовано для Flipper Zero. Если у Вас еще нет этого гаджета, то не расстраивайтесь и попробуйте всё на великой и ужасной Arduino. Передавать информацию на расстояние «своими руками» очень интересно.
60 антипаттернов для С++ программиста, часть 6 (совет 26 — 30)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
Python3 + C, есть ли смысл?
Доброго времени суток! В данной статье рассмотрим стоит ли интегрировать методы из С в проекты написаные на Python3 и как это сделать.
60 антипаттернов для С++ программиста, часть 5 (совет 21 — 25)
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
Вклад авторов
-
Andrey2008 3441.9 -
SvyatoslavMC 1738.0 -
alizar 652.0 -
zzeng 535.0 -
humbug 523.0 -
m1rko 449.6 -
anastasiak2512 422.0 -
qrdl 411.0 -
tyomitch 405.2 -
VlK 388.0