savt писал(а):
Где профилирование, где тесты (особенно мне нравиться как это сделано в том же Python) и все прочие атрибуты тестирования и поддержания жизненного цикла ПО...
Профилирование, это то, чем я сейчас занимаюсь. Хотя в моем сегодняшнем проекте, в большей степени стыковка относительно большого количества асинхронных процессов.
У меня это не специально получилось. Просто камень так устроен, 12 каналов DMA подключаются почти ко всем устройствам. Указали адрес, "дернули за ручку" - и оно само (аппаратно) полетело: АЦП принимает звуковой пакет, ЦАП может гнать его же на УНЧ, COM-порт передает (или принимает) пакет данных, SPI гонит сектор данных на MicroSD, и т.д. и т.п.. Вплоть до копирования массивов из памяти в память.
По окончании некого процесса возникают прерывания (всего на STM32F105 их 63, кажется).
Естественно, мы занимаемся профилированием отдельных алгоритмических веток. Относительно простых - просто берем, и измеряем осциллографом. Типа один порядок цифровой фильтрации 16-битного сигнала стоит 0.2мкс. А speex-кодирование пакета в 20мс (160 байт пакует в 20) -- целых 12мс.
А вот получение конкретных временных характеристик всего этого взаимопрерывающего безобразия - весьма непростая задача.
Народ (наиболее активный находится в Питере, как мне показалось) на эту тему диссертации пишет, и это далеко не решенная в теории задача.
Не для Питона задача, уверяю Вас.
Для своих внутренних целей я сделал три элемента, моделирующие правильное переключение потоков исполнения. И программку, визуализирующую все это взаимопрерывающее безобразие. Последнее-то, на
HiAsm за час делается.
А то народ жалуется: рисуешь «генеральную схему», рисуешь, а обратной связи никакой нет (кнопка Compile недоступна)...
Теперь есть.
savt, Вы у помянули Критически Важные Объекты. По большому счету - все должно программироваться по этим правилам.
И Действительно Критически Важные Объекты не должны тестироваться. Их real-time характеристики (или иные, не менее важные) должны доказываться.
Исходя из аналогичных (предположим, тоже доказанных) характеристик объектов, составляющих схему.
Но это в идеале. До которого всем нам еще не очень близко. Однако отмечу, современные ЯВУ плохо приспособлены к этому доказательному процессу.
Мне кажется, ничуть не лучше, чем HiAsm.
Именно поэтому произносят как мантру, делая круглые глаза и умное лицо: тестирование, профилирование, жизненный цикл...
Внимание, это не я такой наглый, это я просто высказал мнение Классиков (Дейкстра, Хоар, Вирт, ...).
savt писал(а):
Реально Hiasm легок и удобен для разработки небольших приложений, но когда мы говорим о производстве ПО для промышленного применения ...
Наша цель состоит в том, чтобы самый крупный проект программист смог представить как композицию этих самых, мелких.
Без ограничения на полный размер проекта.
Примерно 2-3 десятка элементов на одной схеме - практическое наблюдение.
Даже если технология позволяет делать по 2-3 сотни (например) - этого следует избегать. Если тебя интересует надежность конечного продукта.
А вообще-то, мне случалось беседовать с представителями Computer Science, продвигающими термин Инженерное Программирование.
Впечатление не очень радостное... Они понятия не имеют об инженерной практике -- нарушают элементарные цеховые правила. Грубо говоря, термин придумали, а мнение Инженеров спросить забыли.
Мне показалось, что не им учить меня жизненному циклу разработки... Ну вот показалось мне так.
------------ Дoбавленo в 00.58:
RinniX писал(а):
Ого, а зачем такое чудо нужно? ))
Например, чтобы не отвечать за чужие глюки.
Вот у меня сейчас такой проект. И вовсе это не чудо. Долго думали: ставить FreeRTOS, или нет.
И послали его в задницу.
Ну например, посылаю пакет по 485-му. Чтобы иметь гарантии помехоустойчивости, я должен активизировать 1-цу на линии, и держать ее не менее длительности одного байта. Это, скажем - 100мкс.
Может это сделать ось?
Нет оказывается. Мы сами вынуждены делать асинхронный таймер.
В общем, не нашли мы таких сервисов в оси, без которых нам жизнь невмоготу. А ресурсы памяти (а у нас их всего 64К) - ополовинивает...
Тем более, что она не очень то и RT, как оказалось
Это я на ней проверял, сколько мне надо времени, чтобы 5000 строк кода стали «своими» (по ответственности)
------------ Дoбавленo в 01.04:
Леонид писал(а):
Galkov, мне никак не дают покоя всякие
Леонид, я тебе один умный вешь скажу..
Не дорос еше Computer Science до таких высот, чтобы один человек написал, а все остальные радостно пользовались.
Все время, кто-то чего-то напильником подпиливает...
В общем, Computer Science - в большом долгу перед рядовыми программистами.
Не виноватый я.
Инжектируй эту долбанную DLL-ку, и не мучайся.