Там же было не просто "больших программ", а "больших программ в ОЛ".
А вообще, спасибо за ОЛ!
Смотря, какой макрос.
Macros MS Office - изначально - просто возможность записывать и потом нужное количество раз воспроизводить последовательность нажатий клавиш. Позднее расширился до VBA
Macros С - отдельный, хоть и упрощенный, транслятор.
Macros ОВЕН - на сегодня, это FBD, причем, полноценное, с вложением. В данном контексте - лучшее. Лучше этого - текст и компилятор (ИМХО)
Вариант 1.
У вас есть, например, загрузчик и разгрузчик. В каждом из которых - несколько заслонок. Поэтому, макрос заслонка - встраивается по нескольку раз и в загрузчик и разгрузчик. Называется - повторное использование кода - не надо каждую заслонку описывать заново.
Вариант 2.
Та же ситуация. Когда смотришь код загрузчика, сразу видишь несколько заслонок, код которых уже посмотрел, и он не захламляет взгляд. Называется - повысить читаемость кода.
Вариант 3.
Та же ситуация. Вы допустили ошибку в алгоритме работы заслонки. Меняете в одном месте и уверены, что не пропустите это исправление где-то среди заслонок загрузчика и разгрузчика. Не помню, как это называется )
Вариант 4.
Та же ситуация. Вы вычленяете заслонку, с ее состояниями, ошибками, и прочим, в отдельную задачу, которую может сделать другой человек. Называется - декомпозиция задачи.
Последний раз редактировалось keysansa; 21.01.2022 в 21:23.
Хм. Повторное использование кода это когда один экземпляр кода вызывается из разных мест.
В случае макросов N экземпляров кода (пусть и одинакового) вызываются каждый раз отдельно. Т.е. программа в N раз больше и несколько медленнее (т.к. Cache Miss чаще возникает).
Не путаем ФБ/Функции в ST и макросы ОЛ
Тролль-наседка, добрый, нежный и ласковый
Тогда надо говорить, что не вызывается каждый раз, а каждый раз один и тот же код прописывается в программе. Правильно?
Не путаем. Код - он бывает и текстовый и исполняемый. Если знакомы с С, это как вызов обычной функции, и вызов той же функции Inline. И в том и в другом случае, есть повторное использование кода. В разных случаях - для разных задач. В случае inline - для быстродействия, в случае обычной функции - для экономии.
Но изменив код в одном месте - он поменяется при всех вызовах - смотрим снова на все пункты.
ЗЫ. "Убегание кэша" вам вообще ничем не грозит, так как:
1. Вы его не получите, так как булева алгебра очень близка к машинному коду = компактна. Даже при использовании строк.
2. Чем код менее оптимизирован компилятором под размер (меньше переходов, линейный), тем он больше но и быстрее исполняется, так как меньше операций PUSH, POP.
2. Даже, если, вдруг, каким-то чудом, получите множественную очистку кэша, вас, как программиста автоматики, это не должно волновать. Так как у вас есть отведенное технологическим оборудованием время цикла, например, 10мс. И пока вы из него не выбиваетесь - остальное не важно. Прогармма должна выполнить цикл менее или равно, чем за отведенное время. Если нужны короткие циклы, то для этого придумали ПЛИС (я месяца 3 назад решил поизучать - просто восторге от их быстродействия).
Последний раз редактировалось keysansa; 24.01.2022 в 14:57.
да, столкнулся с этим. Только беззнаковый тип. или переходи на реал