Немного оторвусь от понятия RPC.
Мне доводилось сталкиваться с близкими механизмами общения клиента-хоста в процессе доступа к SQL серверам.
Как пишутся такие программы взаимодействия? А очень просто: формируется строка на SQL, которая потом отслылается серверу на исполнение. А почему так делается? Казалось-бы надо сделать функции, которые облегчат жизнь программисту (10, 100, а можут мульон функция
Мне кажется, что ответ в том, что систематизируется только то, что используется постоянно и много раз, а именно: передача пакета по каналу связи (вспомните семиуровневую модель), язык взаимодействия с системой (стандарт).
А уже все это можно использовать вручную, через ассемблер или RPC или OCX или еще как-угодно.
Теперь вернемся к RPC.
Задачу, которую решает предложенный RPC можно обобщить так:
"Программа на хост компьютере взаимодействует с программой на борту"
С моей точки зрения наличие явного диалогового режима позволяющего взаимодействовать с бортовой системой является основой, а механизм RPC есть прослойка между пользовательской программой и диалоговым взаимодействием и может быть реализована в удобном для программиста виде (в виде библиотек с базовыми возможностями или в виде классов или DLL или еще как-то)
Вот так примерно оно видется.
А вот организовывать на борту непосредственный код, который взаимодействует с кодом на машине - такой путь мне непонятен, убрали возможность отладки системы без применения программных средств (в диалоговом режиме, контролируя посылаемые команды и отклик системы) и ничего не добавили взамен!?
PS Насчёт отладки кода - есть множество приемов, которые позволяют отлаживать программу. Это и строгие языковые правила и умение правильно выделить ключевые контрольные точки и грамотно разработать систему тестов. В совокупности это позволяет создавать надежные программы, а не создавать программы с доказательством их 100% работоспособности.