Is there a word or phrase to describe a situation where a person masters a system, but does not understand the underlying principles?

Here are a few examples of such situations:

* Person A is expert at finding mathematical functions of almost any
shape, but person A only has elementary mathematical knowledge.
He/she is only expert at this particular task because of a massive amount of experiments.
* Person B is a very good player in a business simulation game (which  

happens to be based on realistic economic models). He/she is an  

excellent player despite being completely ignorant of economic models.
* Person C knows how to replace electrical plugs, but has very poor knowledge of electricity. He/she only knows about the proper placement of wires. If you ask him/her what "live", "neutral", and "ground" actually do, you will be met with a blank stare.
* Person D programs computers by "poking". He/she has no idea what the programming constructs actually do, and has learned to program computers only through a large amount of failures (program results in error, program will not compile, etc.) and a large amount of examples (the memorization of idioms, and the copying of code). This person is capable of producing useful programs, but is still clueless about what the programming constructs really mean.