prochaska píše: ↑25. 3. 2022, 8:47
U takových věcí asi rychlost ladění nerozhoduje, ale argument pro interpret (mezikódu) tu existuje. Když se vymyslí rozumný kód pro virtuální zásobníkový stroj, může to běžet celkem svižně, odtud nebezpečí nehrozí. Důležitý argument je, že kód lze dodržet dlouhodobě pro celou řadu modelů zařízení. To je imho zvlášť dnes důležité, kdy firmy mění procesory v deskách podle toho, co se zrovna dá sehnat. Nahrávám pořád stejný kód a nestarám se o typ a verzi procesoru. A při závadě vezmu aktuální model PLC, přepojím dráty na stejně pojmenované svorky, přehodím SD kartu a jedu dál. Vymysleli to před dlouhými léty u IBM a já sám už jsem tuhle koncepci taky použil (tedy ne pro PLC, to není můj obor).
Samozřejmě pokud Ti to takto vyhovuje, tak proč ne.
Já bych ale viděl jen nevýhody, a výhodu neumím najít žádnou.
Můj soukromý, neinvazivní pohled na věc:
Pro čistě výpočetní aplikaci budiž. Ale pro řízení si to neumím představit. Pokud třeba obsluhuju enkodér. Nějaký procesor má HW podporu a dělá to čítač. Na jiném procesoru to musím čítat programem. Nebo komunikace - jeden procesor má HW FIFO, u jiného to musím řešit přes DMA, u dalšího nejde ani jedno a musím komunikaci zpomalit.
Pak by to znamenalo použít jen to, co umí nejslabší z nich. A všechno balit do nějakých virtualizačních vrstev, což obvykle silně omezuje výkon a zvětšuje paměťovou náročnost.
Navíc pokud je to moje aplikace, tak k ní mám zdrojáky. A překompilovat ji je snadné. U čistě výpočetní aplikace dokonce velmi snadné.
A určitě bude snažší pro danou cílovou platformu sehnat překladač, než pro ni sehnat virtuální stroj.
Proto je výhoda to psát v C. Kompilátor C skutečně existuje snad pro všechny aspoň trochu normální procesory, které dneska na světě existují. A díky skvělému projektu GCC dokonce zdarma a ve výborné kvalitě.