Как стать автором
Обновить
87.68

C *

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

Сначала показывать
Порог рейтинга
Уровень сложности

PROFIBUS DP-V0 & STM32

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 200
C *Промышленное программирование *Программирование *Производство и разработка электроники *
Из песочницы

В этой статье я расскажу опыт разработки ведомого устройства для промышленных контроллеров Siemens с протоколом PROFIBUS DP-V0. Реализованный функционал достаточный для разработки простых устройств, но не полон. Статья нацелена на людей, которые знакомы с промэлектроникой и микроэлектроникой.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Новости

Трюк с LD_PRELOAD

Время на прочтение 7 мин
Количество просмотров 2.8K
Блог компании OTUS Программирование *C *
Перевод

Недавно на кафедре баз данных TUM я работал над интересной низкоуровневой библиотекой на языке С — tssx, заменяющей в любом приложении взаимодействие через сокеты на быструю передачу данных через разделяемую память. С нашей библиотекой Postgres работает более чем в два раза быстрее, а некоторые программы даже на порядок быстрее. В основе библиотеки лежит трюк с LD_PRELOAD, о котором я и расскажу в этой статье.

Читать далее
Всего голосов 44: ↑29 и ↓15 +14
Комментарии 14

В {n} раз быстрее Си

Уровень сложности Сложный
Время на прочтение 13 мин
Количество просмотров 25K
Блог компании RUVDS.com Программирование *Совершенный код *Assembler *C *
Кейс
Перевод

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

Эта статья публиковалась на главной странице HackerNews, и к её обсуждению вы можете присоединиться здесь.
Читать дальше →
Всего голосов 138: ↑134 и ↓4 +130
Комментарии 181

Почему язык C никогда не помешает вам совершать ошибки

Время на прочтение 9 мин
Количество просмотров 9.5K
Блог компании OTUS C *
Перевод

Короткий ответ: потому что мы так сказали.

... Что?

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

Читать далее
Всего голосов 37: ↑22 и ↓15 +7
Комментарии 23

Истории

60 антипаттернов для С++ программиста, часть 12 (совет 56 — 60)

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 6.9K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 21

Автоматический обход блокировок

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 35K
Высокая производительность **nix *Сетевые технологии *C *Разработка под Linux *
Из песочницы

Описание работы программы для автоматического обхода блокировок в интернете, код программы лежит на репозитории antiblock.

Читать далее
Всего голосов 50: ↑50 и ↓0 +50
Комментарии 61

Малоизвестные возможности языка C

Время на прочтение 4 мин
Количество просмотров 21K
Блог компании OTUS Программирование *C *
Перевод

Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java. И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.

Текущая наиболее часто используемая версия языка, c99, принесла много новых возможностей, многие из которых совершенно неизвестны большинству программистов на C (в более старых спецификациях, очевидно, тоже есть свои темные уголки).

Читать далее
Всего голосов 87: ↑83 и ↓4 +79
Комментарии 22

Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1

Время на прочтение 11 мин
Количество просмотров 9.2K
Блог компании МойОфис C++ *Компиляторы *C *

Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.

Под катом мы погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать.

P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».

Читать далее
Всего голосов 46: ↑45 и ↓1 +44
Комментарии 44

60 антипаттернов для С++ программиста, часть 11 (совет 51 — 55)

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 4.8K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 2

60 антипаттернов для С++ программиста, часть 10 (совет 46 — 50)

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 4.3K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 15

60 антипаттернов для С++ программиста, часть 9 (совет 41 — 45)

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 2.8K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 3

Заметка к примеру «procfs3.c» 7 главы книги «The Linux Kernel Module Programming Guide»

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 1.6K
Open source *Системное программирование *C *Разработка под Linux *
Мнение

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

Что там?
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 7

60 антипаттернов для С++ программиста, часть 8 (совет 36 — 40)

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2.7K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 14

nRF52832. Реализация сопряжения и списка доверенных подключений

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 1.2K
Беспроводные технологии *C *Программирование микроконтроллеров *
Туториал

В предыдущей статье я кратко описал как начать работать с nRF52832. Для полноценной работы периферийного устройства необходимо реализовать функции сопряжения и подключения "по кнопке", как многие серийные Bluetooth устройства. Этот путь был тернист и долог, этой статьей постараюсь его облегчить.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 1

Реализуем с нуля функцию косинуса на языке C

Уровень сложности Сложный
Время на прочтение 10 мин
Количество просмотров 11K
Блог компании RUVDS.com Программирование *Алгоритмы *C *
Туториал
Перевод

Я изучил, как реализовать функцию косинуса при помощи нескольких разных подходов. Одна из реализаций почти в три раза быстрее, чем math.h, но придётся смириться с точностью до четырёх знаков после запятой.

Задавались ли вы когда-нибудь вопросом, как в математической библиотеке вашего любимого языка программирования реализованы тригонометрические функции, например, косинус? Это настолько популярная функция, что её можно встретить в каждой математической библиотеке, поэтому реализация должна быть довольно простой, ведь так? Ну уж нет. Почти совершенно точно, что это не так.

Моё исследование началось с того, что мой друг и коллега Стивен Марц работал над ядром операционной системы и я предложил, чтобы он отрисовал на экране функцию косинуса. Я часто использую косинус в качестве «hello, world» для графических приложений. Возникла проблема: его ядро не задействовало стандартную библиотеку C (а значит, прощай math.h!), а целевой платформой являлась архитектура RISC-V (а значит, никаких подобий команды fcos Intel!).

Так началось моё долгое приключение.
Читать дальше →
Всего голосов 60: ↑57 и ↓3 +54
Комментарии 29

60 антипаттернов для С++ программиста, часть 7 (совет 31 — 35)

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 2.7K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 23

APRS. AFSK модулятор из Flipper Zero

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 7.9K
C *Разработка систем связи *Разработка под Arduino *Электроника для начинающих
Туториал

Есть такой интересный протокол передачи данных - APRS. Про него в интернете уже много рассказывалось, здесь не будет углубленного теоретического материала. В этой статье будет описано как создать свой собственный «карманный» модулятор AFSK. В последующих статьях будут инструкции по выходу в эфир и по созданию простого демодулятора, который позволит принять пакеты APRS и отобразить информацию на дисплее прямо на улице. Всё будет реализовано для Flipper Zero. Если у Вас еще нет этого гаджета, то не расстраивайтесь и попробуйте всё на великой и ужасной Arduino. Передавать информацию на расстояние «своими руками» очень интересно.

Читать далее
Всего голосов 41: ↑37 и ↓4 +33
Комментарии 16

60 антипаттернов для С++ программиста, часть 6 (совет 26 — 30)

Уровень сложности Простой
Время на прочтение 19 мин
Количество просмотров 3.2K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 9

Python3 + C, есть ли смысл?

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 6.3K
Python *C *
Из песочницы

Доброго времени суток! В данной статье рассмотрим стоит ли интегрировать методы из С в проекты написаные на Python3 и как это сделать.

Перейти к публикации --->
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 14

60 антипаттернов для С++ программиста, часть 5 (совет 21 — 25)

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 3.1K
Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 3

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

Работа

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