Рубрика «системное программирование» - 10

Мы уделяем много внимания инструментам разработки: участвуем в горячих спорах о редакторах (Vim или Emacs?), долго настраиваем IDE под свой вкус, и тщательно выбираем языки программирования и библиотеки, которые с каждым днем становятся все лучше и удобнее. Однако, здесь можно выделить одну категорию, которая по какой-то причине остается незаслуженно забытой: отладчики не сильно изменились за последний десяток лет, хотя по-прежнему являются одним из базовых инструментов для отлова ошибок и навигации в коде.

В поиске вопросов, или как создать новый отладчик - 1
Изображение: Timothy Dykes @timothycdykes, unsplash.com

Гораздо чаще мы предпочитаем быстро добавить пару printов вместо того, чтобы поставить в нужном месте точку останова и пройтись к ней отладчиком — и вопрос "почему?" не перестает меня занимать — ведь логи и printы дают ограниченную информацию и не позволяют интерактивно взаимодействовать с запущенным процессом (а отладчики могут работать даже и с "умершими" процессами!).

Одной из главных причин я вижу как раз отсутствие значительного прогресса в разработке отладчиков.

Читать полностью »

Исходные данные и результаты работы программ должны где-то храниться для дальнейшего использования. Их хранение нужно организовать так, чтобы мы могли быстро получить нужную информацию. За эту задачу отвечает Файловая система (FS): она предоставляет абстракцию для устройств, на которых физически хранятся данные.

В этом посте мы больше узнаем о концепциях, используемых файловыми системами, и о том, как, зная их, можно написать свою файловую систему на языке Rust.

Как написать собственную файловую систему на языке Rust - 1
Читать полностью »

Сап, котятки.

Я пришёл рассказать о проекте UAVCAN — новом сетевом стандарте для организации взаимодействия узлов и компонентов современных транспортных средств с высоким уровнем автономности/автоматизации. Название является акронимом от Uncomplicated Application-level Vehicular Communication And Networking (несложные бортовые сети и коммуникации уровня приложения).

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

Издатель-подписчик для распределённых отказоустойчивых бортовых систем реального времени в 1500 строк кода - 1

Конъюнктура

Первый блин проекта был заложен в 2014-м. С самого начала это был эксперимент в минимализме: возможно ли в разработке сложных распределённых бортовых систем опираться на мощные абстракции, избегая при этом роста сложности реализации и связанных с ним трудностей валидации и верификации.

Мы наблюдаем быстрый рост сложности бортовых систем, связанный с развитием функциональных возможностей транспортных средств (особенно беспилотных) в целом, и систем автоматического управления в частности.Читать полностью »

Всем привет! Думаю, у многих сразу возник другой вопрос — а зачем вообще нужна ещё одна статья про LLVM, ведь на хабре их и так больше сотни? Моей задачей было написать "введение в тему" for the rest of us — профессиональных разработчиков, не планирующих создавать компиляторы и совершенно не интересующихся особенностями устройства LLVM IR. Насколько я знаю, подобного ещё не было.

Главное, что интересует практически всех — и о чём я планирую рассказать — вынесено в заголовок статьи. Зачем нужен LLVM, когда есть GCC и Visual C++? А если вы не программируете на C++, вам стоит беспокоиться? И вообще, LLVM это Clang? Или нет? И что эти четыре буквы на самом деле означают?

Читать полностью »

Предлагаю вашему вниманию перевод статьи, в которой высказывается интересная точка зрения на размер релизов/задач при разработке информационных систем. По мнению Аллана Келли, при разработке ПО отсутствует экономия на масштабе, а при увеличении объема задач/релизов экономика только ухудшается. Статья содержит примеры и доводы, иллюстрирующие это, и автор рекомендует стараться ставить небольшие и конкретные задачи, работать более мелкими релизами. Пытливый читатель сразу задаст вопросы: «Можно ли из этого сделать вывод, что необходимо максимально уменьшать размер задач/релизов? Где же тогда этот предел? Нужно ли выводить в продуктив по одной строчке кода?» Эти вопросы, к сожалению, не раскрыты в статье. По моему личному опыту, в имеющихся условиях у команды существует некоторый оптимальный размер задач/релизов, который определяется зрелостью процессов, спецификой культуры команды и уровнем развития инженерных практик. Для кого-то это три месяца, для кого-то это одна неделя, кто-то способен работать в режиме  непрерывной поставки… Однако если инвестировать в то, чтобы команда научилась бы работать меньшими задачами/релизами, то это впоследствии принесет долгосрочную отдачу.

Программное обеспечение дешевле в мелкой таре - 1

Читать полностью »

Команда Rust рада сообщить о выпуске новой версии, 1.45.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.

Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.45.0 вам достаточно выполнить следующую команду:

rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть на GitHub.

Что вошло в стабильную версию 1.45.0

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

Читать полностью »

Владимир Китов: «Невозможно понять, как ученые-первопроходцы предвидели всеобщую компьютеризацию еще в 1950-х!» - 1

Владимир Китов, работающий с ИТ более полувека, возглавлял команды программистов в ГВЦ Минморфлота СССР и ЦНИИ «Монолит», руководил разработкой ПО для международной системы космического спасения КОСПАС-SARSAT и созданием мультитерминального монитора для ЕС ЭВМ. Он работал топ-менеджером в компаниях DEC, SIEMENS, «Техносерв», IBS, Fujitsu, написал учебник по системному программированию и несколько монографий, а теперь занимается историей информатики.

В продолжении интервью Владимир Китов вспоминает своего отца Анатолия Ивановича и других выдающихся советских ученых, объясняет, почему история автоматизированных систем управления — заметная часть истории страны, рассказывает о работе для сельского хозяйства в Институте кибернетики на рубеже 1980-1990-х.Читать полностью »

Независимо от того, сколько вложений компании-разработчики могут потратить на инструментарий и обучение своих разработчиков, «C++, по своей сути, не является безопасным языком», сказал Райан Левик (Ryan Levick) 'cloud developer advocate' из Microsoft на виртуальной конференции AllThingsOpen в прошлом месяце, объясняя в виртуальной беседе почему Microsoft постепенно переходит с C/C++ на Rust для создания своего инфраструктурного программного обеспечения. И вдохновляет других гигантов индустрии программного обеспечения задуматься о том же.

Microsoft: Rust является 'лучшим шансом' в отрасли программирования безопасных систем - 1

Читать полностью »

image

С каждым годом курсовые для моих студентов становятся все объемнее. Например, в этом году одним из заданий была разработка метеостанции, ведь только ленивый не делает метеостанции, а студенты они по определению не ленивые, поэтому должны её сделать. Её можно быстро накидать в Cube или собрать на Ардуино, но задача курсового не в этом. Основная задача — самостоятельно, с нуля разобраться с модулями микроконтроллера, продумать архитектуру ПО и, собственно, закодировать все на С++, начиная от регистров и заканчивая задачами РТОС. Кому интересно, здесь пример отчета по такому курсовому

Так вот появилась небольшая проблема, а именно, бесплатный IAR позволяет делать ПО размером не более 30 кБайт. А это уже впритык к размеру курсового в неоптимизированном виде. Анализ кода студентов выявил, что примерно 1/4 часть их приложения занимает FreeRtos — около 6 кБайт, хотя для того, чтобы сделать вытесняющую переключалку и управлялку задачами хватило бы, наверное… да байт 500 причем вместе с 3 задачами (светодиодными моргунчиками).

Эта статья будет посвящена тому как можно реализовать Очень Простой Планировщик(он же SST), описанный в статье аж 2006 года и сейчас поддерживаемый Quantum Leaps в продукте Qp framework.

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

Я попробую показать как можно реализовать такой планировщик самому. Чтобы не сильно перегружать статью, рассмотрю переключение контекста на CortexM0 у которого нет аппаратного модуля с плавающей точкой.

Все кто заинтересовался и хочет понять как можно переключать контекст, добро пожаловать под кат.

Читать полностью »

Что такое Windows PowerShell и с чем его едят? Часть 6: Решение практических задач - 1

В предыдущих статьях мы разобрались с основами среды и достаточно подробно изучили язык программирования Microsoft PowerShell. Завершая цикл, мы рассмотрим работу с процессами и службами, реестром и журналами событий в распределенной среде, а также разберем некоторые способы администрирования операционной системы, настройки стороннего ПО и просмотра сведений об установленном оборудовании. Для этого в PowerShell активно применяются объекты различных типов, изучению которых были посвящены четвертая и пятая части цикла.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js