i think it's interresting metodology of devving software.
first create a high-level prototype in a high-level programming language.
that type of code is easier to understand, easier to change, easier to develop complex solutions.
it's a 'proof of concept' as well.
it's also less costly programmer-time wise than low-level programming attempt.
then once we have working high-level prototype, we can commence with a low-level port.
we rewrite high-level prototype in low-level programming language, as 'Ansi C' with 'Assembler' inserts, for example.
that way we have low-level optimization as well, i think both memory-cost wise, as well as processor-time wise.
algorithmic optimization is also there easier, with a high-level prototype construction, preferably using Object-Oriented Programming Paradigm.
bottlenecks can be optimized with that methodology as well, i think.
see also, if You wish or need, ... : Object Oriented Programming in Ansi C.