What dbc says in his answer. But there's also that you can to some degree choose to shift complexity to hardware or software.
You can for instance have a very expensive, high-quality, difficult to design and build harmonic-drive limb joint. The hardware is strong, accurate and reliable. There's no backlash or slack anywhere. Your software for moving the joint can in such a case be more or less "move_to_angle(something)" and you're done.
Or you can have a hobby servo moving a hinge consisting of two holes threaded with a wire hanger. You can build it in five minutes. But now your software has to take all the slop, and all the inaccuracies into account. The behaviour of the joint will change depending on bending angle, direction to the floor, what it's holding and probably a lot more. You'll need extra sensors and probably some kind of adaptive system that learns to control the rickety thing.
So you can decide whether you want to shift more of your problems to the hardware or to the software.