This, imho, is exactly the point for today's environment. Maybe not so much in the future... "Programming" is...well, not easy, exactly, but fairly simple compared to the real world. At the highest level where users see "Hello, World!", a computer is a computer is a computer. Compilers take care of the rest, and hide all those ugly choices like "add r0,r0,r1" vs "add r0,r1" at the assembler level. Once you start dealing with the outside (of a computer), things get very complicated. The software for a Roomba won't work on a Cyberdyne T-101, and vice versa. Even if the computers were compatible, the task "get rid of that crud" has to be carried out completely differently, mechanically, on each system, which means that low-level commands would have to be different, thus the math, ad nauseum. :-D It might be different if robotic platforms (and their manufacturers) settle on the equivalent of "frameworks" for both the computational side and the manipulator/motivator side. Kits and microcontrollers like the Arduino, Lego Robotics, etc. are all a move in the right direction, but your industrial automobile welder is still a world away from a home made robotic arm, even though they might perform the same tasks. Until then, though, it's going to take a lot of low-level work in both software, hardware, and in-between to get even the most basic robotics project up. Some people love this--I'm working on a homemade trirotor drone made out of $5 of sheet metal from Lowe's and pop-rivets--and they will keep it up. For the average developer, no matter how brilliant, it is usually too much of an investment of time and labor that, in the short run, doesn't really pay off much, even if the pay off is just seeing something move.
vuolsi così colà dove si puote ciò che si vuole, e più non dimandare --The answer to Minos and any question of "Why are we doing it this way?"