You can think of it as how your C++ code turns into Assembly which then becomes 1s and 0s. You may say, "how can a string of 1s and 0s create Microsoft Excel!?" but that's exactly what does happen.
All code is simply logic. A Turing Machine is a machine that can compute any logic that is possible to compute. Therefore, a Turing Machine can compute any code that exists. Now, going from theory to actually making a Turing Machine that would actually run Microsoft Excel would be an arduous task. Practically, you can't do it. Not that it's impossible, but the work you'd have to put in would make no sense at all for why you should do it.
You can see for yourself this is true by learning about DFAs. You can write out a simple program, (perhaps one that checks if a number is a palindrome) then create a DFA with the same logic.
The DFA could be turned into a long tape as you've described that does the same thing.
Just because code gets progressively more complex as you go doesn't mean that you can't still break it down to simple logic.
but a Turning machine can't display a GUI? |
It could if you were able to connect it to one properly.
You can display to a screen using a Microprocessor and a small screen. You can create your own logic for how to talk to the screen (similar to how the microprocessor would), ditch the microprocessor, and have turn the logic into a DFA (you probably will have to change the logic around to get it into a DFA).
You can then turn the DFA into a long tape. Now, getting each state to send the proper signal to the display would have to be done mechanically, but you could theoretically do it!
But really, I wouldn't worry too much about Turing Machines. The idea of Turing Completeness is whether a given computation machine can execute any logic given to it. The idea isn't very important as an average programmer. Every language you code in is going to be Turing complete.
You can see how C++ is Turing complete, but you still don't want to use it for certain applications just because of how complicated and obtuse the code would have to be!
A Turing Machine can replicate any program. This is true in theory, and so you can generate any program as a Turing Machine. But if it were to be done for, lets say Microsoft Excel, the complexity of the machine would lose you.