Well, "how to deal with that" is someone has to know micros. Either they explain what needs to happen and someone interprets the task into microcontroller code, or they need to understand it.
In many cases a BASIC-like "get_something()" sequential task just isn't efficient. The ADC, for example, would need to be set up, left in acquisition time, then converted. This not only takes up an unnecessary amount of time if the code just waits on these steps, the spacing of the ADC samples may be irregular. More often we like to configure the ADC to automatically collect readings and an adc_done interrupt allows the program to access them in an orderly fashion. The ISR might store the ADC reading in a buffer and get_ADC() retrieves it, but even this may be an inefficient type of solution. If the system is demanding of performance- and it kinda sounds like it- then it may not be able to afford sloppy programming.
So that's the thing. You generally can't just use an interface to make computer-science guys' code which wasn't written for a microcontroller to work well on a microcontroller. Learning new skills is essential to being "good". Assuming this is a class project, that was kind of the point.