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

C *

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

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

Из серии: заглянем под капот clang-e2k/llvm-e2k из штатного дистрибутива для Эльбруса

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

Тема непосредственно самого процессора Эльбрус уже достаточно хорошо раскрыта в различных статьях, в том числе, в статьях, опубликованных на habr.ru. Кроме самого процессора Эльбрус время от времени на просторах рунета можно встретить обсуждения, посвященные вопросу портирования компилятора clang/llvm на Эльбрус. Пожалуй, данная тема еще не получала подробного освещения. Данная заметка призвана заполнить этот «пробел».

Если вкратце, то llvm из e2k-дистрибутива портируется на базе оптимизирующего компилятора LCC. Ну а тем, кому нужно больше подробностей, то добро пожаловать «под кат».

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

Новости

Программирование для Palm OS: ставим CodeWarrior и оживляем ТСД

Уровень сложности Средний
Время на прочтение 30 мин
Количество просмотров 4K
Блог компании Timeweb Cloud Ненормальное программирование *C *Гаджеты Старое железо
Туториал
Приветствую всех!

Немало ушедших в историю платформ успели мы повидать. И столько же ещё будет у нас впереди. Но сейчас поговорим не о чём-то реликтовом и экзотическом, а о КПК, что наверняка успели застать многие пользователи данного ресурса. Эти девайсы имели массу поклонников, не удивлюсь, если кто-то до сих пор пользуется таким. Тем интереснее будет поговорить о разработке софта для данной ОС.



Итак, в сегодняшней статье рассмотрим разработку софта для КПК под управлением легендарной Palm OS. Узнаем, где взять весь нужный софт, как собрать свою программу. Поговорим о некоторых аспектах программирования для этих железок. Традиционно будет много интересного.
Читать дальше →
Всего голосов 53: ↑53 и ↓0 +53
Комментарии 26

PostgreSQL под капотом. Часть 6. Сложный SELECT запрос

Уровень сложности Средний
Время на прочтение 57 мин
Количество просмотров 2.5K
Open source *PostgreSQL *Программирование *Анализ и проектирование систем *C *

Продолжим погружение в код PostgreSQL. Сейчас посмотрим, что происходит, когда вы хотите выполнить запрос сложнее, чем в прошлый раз: добавим WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.

Плюс:

Системный кэш

Сходство обращения к столбцам и вызовов функций

Предсказание количества возвращаемых кортежей

Работа с простыми типами

Маркировка столбцов при использовании FOR UPDATE

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

Интеграция полевых устройств в системы автоматизации производств (Язык описания электронных устройств EDDL)

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 1.3K
Программирование *C *Промышленное программирование *SCADA *
Обзор


Рис. с сайта FIELDCOMM GROUP https://www.fieldcommgroup.org/


Хотя до этого я писал только про встроенное ПО, сегодня речь пойдет немного о другом. Я хочу рассказать о языке Electronic Device Description Language (EDDL) и его применении. Общаясь с разработчиками полевых устройств, я выяснил, что в РФ не так много специалистов в этом сегменте, слышал даже такое мнение, что в России всего 3 разработчика на этом языке, и одного из них я знаю лично.


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

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

Истории

Mojo: Python-совместимый язык с производительностью Си — от Криса Лэттнера

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

2 мая 2023 года Modular (одна из компаний-лидеров в сфере AI-инфраструктуры) анонсировала язык программирования Mojo, обещающий полную совместимость с Python в сочетании со сверх-высокой производительностью.

В компании утверждают, что автоматическое низкоуровневое распараллеливание, возможности строгой типизации и статической компиляции уже на самых ранних этапах развития языка позволяют достичь скорости, превосходящей Python в 35 000 раз!

Так что это за чудо-язык такой, правда ли он заменит Python — да и где его пощупать можно?

Давайте разбираться! 🔥
Всего голосов 53: ↑48 и ↓5 +43
Комментарии 112

Реализация утилиты cat на C

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 12K
C++ **nix *C *
Из песочницы

Идея довольно проста - принять файл в качестве аргумента, открыть его, занести в буфер по частям и вывести на стандартный вывод. Утилита cat также оснащена различными флагами опций, которые позволяют пользователю манипулировать буфером перед его отправкой на стандартный вывод.

Читать далее
Всего голосов 35: ↑25 и ↓10 +15
Комментарии 22

Язык Umka 1.0 и игровой фреймворк Tophat

Время на прочтение 4 мин
Количество просмотров 5.6K
Разработка игр *Компиляторы *C *

После трёх лет неторопливой разработки вышла версия 1.0 моего скриптового языка Umka. Это статически типизированный язык, предназначенный для встраивания в программы на C/C++. Синтаксис и некоторые особенности семантики Umka были вдохновлены языком Go, однако Umka никак не зависит от экосистемы Go и не требует для работы ничего, кроме стандартной библиотеки C.

Основным применением языка стал игровой фреймворк Tophat, созданный Марком Машкаринцем. Версия Tophat 1.0 вышла одновременно с Umka. Это очень простой модульный фреймворк для создания 2D игр. Несколько мини-игр на нём были написаны для участия в джемах. Сейчас в разработке находятся два более крупных игровых проекта — платформер-головоломка и игра о диспетчеризации железнодорожного движения.

Читать далее
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 8

Исследование возможностей оптимизации ПО на примере хеш-таблицы

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

Исследование возможностей оптимизации ПО на примере хеш-таблицы.

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

Загоняем Альпаку на Эльбрус (Часть 2. Оптимизации)

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 5.3K
*nix *C *Искусственный интеллект
Мнение

В прошлой статье я писал о запуске Alpaca на Эльбрусе. На момент написания той статьи оптимизации под Эльбрус не проводились. Однако теперь, благодаря стараниям @troosh можем протестировать Эльбрус уже с оптимизациями. ВНИМАНИЕ! Проект llama.cpp обновляется очень часто, и многое меняется. На данный момент это самая актуальная версия llama.cpp под Эльбрус.

Читать далее
Всего голосов 38: ↑32 и ↓6 +26
Комментарии 19

Сколько Надо Строк Кода Для Того Чтобы Подписать Артефакты?

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 1.7K
Python *C *Программирование микроконтроллеров *Системы сборки *DevOps *
Туториал

Бывает ситуация, когда надо чтобы прошивка или любой другой артефакт сам сказал в каком состоянии был GIT репозиторий с кодовой базой, когда эту прошивку собирали. Надо как-то добавить в text/rodata сегмент памяти такие метаданные как "из какой ветки собрали прошивку", "какой была контрольная сумма последнего коммита".

Данная подсказка может существенно помочь при сопровождении ПО.

В тексте представлен скрипт, который делает эту работу.

Как вы думаете сколько строк кода надо для подписи прошивки?

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

Управление параметрами FPV видеопередатчиков по протоколам IRC Tramp и TBS SmartAudio

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

Управление параметрами FPV видеопередатчиков по протоколам IRC Tramp и TBS SmartAudio

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

Очередной драйвер SPI флэшек… Но уже с кэшем и «нормальным» api

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

Прочитал на хабре кучу простых, и даже очень, статеек на тему программирования микроконтроллеров, тоже решил добавить что-то простое, понятное, но чуть более полезное.

Будем пытаться писать быстрый драйвер флешки и при этом попробуем сэкономить её ресурс при перезаписях.

Читать далее
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 32

Отладка C при помощи пакета Cosmopolitan Libc

Время на прочтение 12 мин
Количество просмотров 3.1K
Блог компании Издательский дом «Питер» Python *Программирование *C *Rust *
Перевод
Cosmopolitan Libc предоставляет набор отладочных возможностей, повышающих удобство разработки на C: трассировка вызовов функций, интеграция с gdb, среда выполнения ASAN/UBSAN и многое другое! На C написано много быстрого и критически важного кода. Если вы пользуетесь программами, написанными на C, если вам приходится предусматривать интерфейсы для работы с библиотеками на C, исправлять баги в коде на C, либо даже переписывать имеющуюся на С программу на каком-то другом языке, то именно этот инструмент помогает понять, что делается в вашем коде на C. Отладка – это не просто россыпь инструкций printf. В этом посте будет рассмотрено, как Cosmopolitan Libc помогает наверняка и как следует отлаживать код C. Все примеры находятся в этом репозитории.
Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Комментарии 2

Загоняем Альпаку на Эльбрус

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 5.3K
*nix *C *Искусственный интеллект

Думаю уже все слышали об Alpaca - аналоге chatGPT, которую можно запустить локально на процессоре. И раз есть такая возможность почему бы не сделать это на Эльбрусе?!

Читать далее
Всего голосов 32: ↑25 и ↓7 +18
Комментарии 35

Как закалялась сталь современной симметричной криптографии. Глава 2. Математическая криптография

Уровень сложности Сложный
Время на прочтение 42 мин
Количество просмотров 3.3K
Информационная безопасность *Криптография *Программирование *C *Математика *
Ретроспектива

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

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

PostgreSQL под капотом. Часть 5. Простой SELECT запрос

Время на прочтение 42 мин
Количество просмотров 3.9K
Open source *PostgreSQL *Программирование *Анализ и проектирование систем *C *

Приветствую!

В этой статье рассмотрим какой путь проходит простой SELECT запрос. От стадии сырой строки до отправки ответа клиенту.

А еще:

Работу со статистикой приложения через API Linux.

Реализацию динамического списка.

«Наследование» в C.

Как ведется работа с диском в БД.

Немного легаси.

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

Сборка firmware для CC2652 из Makefile

Уровень сложности Сложный
Время на прочтение 37 мин
Количество просмотров 1.9K
C *Программирование микроконтроллеров *Системы сборки *Производство и разработка электроники *Электроника для начинающих
Туториал

В этом тексте представлена инструкция настройки ToolChain(а) для работы с микроконтроллером CC26x2 при помощи языка программирования С и компилятора GCC. Сборка осуществляется прямо из Makefile(ов).

Тут же представлена инструкция для настройки пошаговой отладки в консоли Windows.

В принципе, если вы собираете из Makefile, то вам всё равно какой там микроконтроллер и какого он вендора. Для добавления поддержки очередного MCU достаточно написать всего один *.ld и один *.mk файлик.

Во многом по этому сборка из Makefile является предпочтительнее, когда в организации много разнообразного оборудования на разных МК (или просто много сборок) и одна переносимая кодовая база на всё.

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

Разработка BIOS на языках высокого уровня

Уровень сложности Сложный
Время на прочтение 11 мин
Количество просмотров 17K
Блог компании Timeweb Cloud Ненормальное программирование *Assembler *Системное программирование *C *
Туториал
Ничего лишнего: материнская плата, видеокарта и ROM-BIOS

Меня давно волнует вопрос, как подступиться к разработке на голом железе, на чистом си. Хотелось понять, каким же образом идёт запуск BIOS, u-boot, grub и прочих первичных загрузчиков. Ведь необходимо перейти от ассемблера к тёплому ламповому си и соблюсти условие, собрать всё это в линукс любимым компилятором gcc.

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

Здесь я хочу свести основные моменты разработки BIOS в одном месте и разобраться обо всех проблемах, которые я получил во время своих опытах в разработке (первая и вторая части).
Читать дальше →
Всего голосов 134: ↑133 и ↓1 +132
Комментарии 57

Mediastreamer2. Применение Lua-машины в фильтрах

Время на прочтение 13 мин
Количество просмотров 652
Программирование *C *Lua *Разработка под Linux *
Туториал

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

Код программ данной главы можно скачать с Github по ссылке:

https://github.com/chetverovod/Mediastreamer2_LuaFilter

Приступим к практической реализации. Для этого можно вспомнить как создается новый фильтр, см. главу 4. В этой схеме источником звукового сигнала может быть либо сигнал с линейного входа звуковой платы (sound_card_read) либо генератор DTMFсигнала (dtmf_generator). Далее данные попадают на вход разрабатываемого Luaфильтра (lua_filter), который осуществляет их преобразование в соответствии с загруженным в него скриптом. Затем данные поступают на разветвитель (Tee), который из входного потока образует две копии, которые выдает на два выхода. Один из этих потоков поступает на регистратор (recorder) и на звуковую карту для воспроизведения (sound_card_write). Регистратор (*recorder*), он сохраняет их на диск в формате raw (wavфайл без заголовка). Таким образом мы сможем прослушать и записать результат работы Lua-фильтра.

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

Опыт портирования Eclipse 4diac на KasperskyOS CE

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

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

Автоматизация производственных процессов помимо очевидных преимуществ имеет и ряд сложностей. Одной из проблем является риск подвергнуться кибератакам. Возможным решением является разработка защищенной реализации для среды исполнения IEC 61499 для KasperskyOS. Для этого требуется реализовать киберимунную систему управления путем портирования среды исполнения IEC 61499 Eclipse 4diac forte на операционную систему KasperskyOS.

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

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

Работа

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