What is the purpose of abstraction in coding:
Programmer’s efficiency or program’s efficiency?
Our professor said that it is used merely for helping the programmer comprehend & modify programs faster to suit different scenarios. He also contended that it adds an extra burden on the program’s performance. I am not exactly clear by what this means.
Could someone kindly elaborate?
I would say he’s about half right.
The biggest purpose is indeed to help the programmer. The computer couldn’t care less how abstracted your program is. However, there is a related, but different, benefit – code reuse. This isn’t just for readability though, abstraction is what lets us plug various components into our programs that were written by others. If everything were just mixed together in one code file, and with absolutely no abstraction, you would never be able to write anything even moderately complex, because you’d be starting with the bare metal every single time. Just writing text on the screen could be a week long project.
About performance, that’s a questionable claim. I’m sure it depends on the type and depth of the abstraction, but in most cases I don’t think the system will notice a hit. Especially modern compiled languages, which actually “un-abstract” the code for you (things like loop unrolling and function inlining) sometimes to make it easier on the system.