Это довольно большой проект для встраиваемой системы, да, но суть не в этом. Этим примером я иллюстрирую типичное соотношение сложности бизнес-логики и низкоуровневой части в сложных проектах.
Было бы интересно ознакомиться с вашими требованиями. Возможно, вы слышали про наш опенсорсный проект UAVCAN, созданный специально для транспортных систем. Мы ищем критику от команд примерно вашего профиля.
Исходник на си без ключей компилятора смысла никакого не имеет. Утверждение автора о том, что обобщенный код numpy работает быстрее, чем захардкоженный цикл на си выдаёт полное невладение матчастью. Зачем вы этот мусор сюда тащите?
Сопоставление с образцом и оператор ветвления — вещи принципиально разные, хотя второе реализует подмножество поведений первого. В других языках для этого обычно используется как раз match (например, Rust, Nemerle).
Написано терпимо для гуглоперевода, но как образовательному ресурсу вам следует знать, что pattern matching по-русски называется "сопоставление с образцом".
В исходных требованиях вы, кажется, не писали о том, что формат должен быть самоописывающим (self-describing). Во встраиваемых системах это применяется сравнительно редко. Мы решали схожую задачу в протоколе, ссылку на статью о котором я давал в комментарии к вашей прошлой публикации; если интересно, можете взглянуть здесь: https://uavcan.org/specification/UAVCAN_Specification_v1.0-beta.pdf#page=15 (раздел "data structure description language"). Удаление метаданных из сериализованного сообщения не только уменьшает избыточность (что важно в вашем случае, как я вижу из требований), но и уменьшает вариативность представлений (есть только один способ закодировать данные, в то время как в TLV формате можно, к примеру, поменять местами поля структуры, не затронув семантику сообщения; этот вопрос рассматривается в спецификациях ASN.1 тоже), что удешевляет тестирование в отказоустойчивых приложениях.
На самом деле в России не все так плохо. У моих студентов и стажеров есть доступ к самому современному хардверу. И инвестиции на полезный проект всегда можно найти.
Коллега выше не говорит о том, что инвестиции нельзя найти. Он говорит, что инвестиционный климат в России плох, с чем сложно не согласиться, учитывая экономические реалии и количество единорогов на единицу населения. Их этого следует низкая представленность россиян в высокозатратных/высокорисковых проектах.
Высказывания в стиле «мне не нравится, потому что по-детски» — это не критика. И личное мнение — это тоже не критика
Согласен. Я говорю о том, что кубики не являются адекватной заменой критике или даже положительной обратной связи. В здоровом коллективе можно просто подойти (написать) и сказать "ты неправ, потому что <корректная причина>; я считаю, что надо <предложение>, потому что <обоснование>". На месте ГК Ланит я бы озаботился обучением сотрудников основам конструктивного диалога.
Поддерживаю. Корень проблемы, по-видимому, в неспособности сотрудников ГК Ланит принимать критику и в склонности к конфликтам. Я всегда считал (на основании личных наблюдений, не претендуя на истину), что сильная сторона корпоративной культуры восточной Европы в способности людей говорить прямо, без издержек политкорректности. Если так, то кубики это убивают.
Вы не упомянули формат XCDR, используемый в свежих версиях DDS. По мере роста системы вы неизбежно столкнётесь с необходимостью модификации форматов данных без поломки обратной совместимости. Это может оказаться более сложным, чем кажется на первый взгляд.
Это довольно большой проект для встраиваемой системы, да, но суть не в этом. Этим примером я иллюстрирую типичное соотношение сложности бизнес-логики и низкоуровневой части в сложных проектах.
Было бы интересно ознакомиться с вашими требованиями. Возможно, вы слышали про наш опенсорсный проект UAVCAN, созданный специально для транспортных систем. Мы ищем критику от команд примерно вашего профиля.
С момента публикации статьи у нас появился канал в телеграме: t.me/uavcan_ru
Исходник на си без ключей компилятора смысла никакого не имеет. Утверждение автора о том, что обобщенный код numpy работает быстрее, чем захардкоженный цикл на си выдаёт полное невладение матчастью. Зачем вы этот мусор сюда тащите?
Сопоставление с образцом и оператор ветвления — вещи принципиально разные, хотя второе реализует подмножество поведений первого. В других языках для этого обычно используется как раз
match(например, Rust, Nemerle).Написано терпимо для гуглоперевода, но как образовательному ресурсу вам следует знать, что pattern matching по-русски называется "сопоставление с образцом".
Контраст совсем не звонкий.
А какая разница? Если написано, что щелочная — должна быть щелочная. Надпись PROMO совершенно нерелевантна.
В исходных требованиях вы, кажется, не писали о том, что формат должен быть самоописывающим (self-describing). Во встраиваемых системах это применяется сравнительно редко. Мы решали схожую задачу в протоколе, ссылку на статью о котором я давал в комментарии к вашей прошлой публикации; если интересно, можете взглянуть здесь: https://uavcan.org/specification/UAVCAN_Specification_v1.0-beta.pdf#page=15 (раздел "data structure description language"). Удаление метаданных из сериализованного сообщения не только уменьшает избыточность (что важно в вашем случае, как я вижу из требований), но и уменьшает вариативность представлений (есть только один способ закодировать данные, в то время как в TLV формате можно, к примеру, поменять местами поля структуры, не затронув семантику сообщения; этот вопрос рассматривается в спецификациях ASN.1 тоже), что удешевляет тестирование в отказоустойчивых приложениях.
Ещё инструкцию по пользованию зубочисткой не забудьте.
Спасибо. Я присматриваю одним глазом за этой разработкой и нахожу интересной критику модели OSI от разработчиков QUIC.
реализация
руководства
самостоятельной
Коллега выше не говорит о том, что инвестиции нельзя найти. Он говорит, что инвестиционный климат в России плох, с чем сложно не согласиться, учитывая экономические реалии и количество единорогов на единицу населения. Их этого следует низкая представленность россиян в высокозатратных/высокорисковых проектах.
Драйвер подъехал сегодня: https://github.com/UAVCAN/platform_specific_components/pull/12
Согласен. Я говорю о том, что кубики не являются адекватной заменой критике или даже положительной обратной связи. В здоровом коллективе можно просто подойти (написать) и сказать "ты неправ, потому что <корректная причина>; я считаю, что надо <предложение>, потому что <обоснование>". На месте ГК Ланит я бы озаботился обучением сотрудников основам конструктивного диалога.
Поддерживаю. Корень проблемы, по-видимому, в неспособности сотрудников ГК Ланит принимать критику и в склонности к конфликтам. Я всегда считал (на основании личных наблюдений, не претендуя на истину), что сильная сторона корпоративной культуры восточной Европы в способности людей говорить прямо, без издержек политкорректности. Если так, то кубики это убивают.
Дайте ссылку на вашу статистику-то.
Я порылся в вашем профиле, ожидая увидеть их в англоязычном разделе хабра, но ничего не нашёл. Оставите ли вы ссылки здесь? Спасибо заранее.
Почему?
Не планируете ли вы опубликовать этот материал на английском?
Вы не упомянули формат XCDR, используемый в свежих версиях DDS. По мере роста системы вы неизбежно столкнётесь с необходимостью модификации форматов данных без поломки обратной совместимости. Это может оказаться более сложным, чем кажется на первый взгляд.
Я недавно писал о смежных вещах здесь, в т.ч. поверхностно затрагивая вопросы сериализации: https://habr.com/ru/post/512570/
В какой отрасли работает ваша распределённая система?