Artificial Intelligence is a very new and complex science. It's a compendium of 9-10 other domains of research(phylosophy, mathematics, linguistics, cs, knowledge representation etc) but the progress done so far is amazing.
Right now the only true and strict impediment in developing complex rational agents is hardware related. If we'd come up with a way of developing a computer system the size of a briefcase capable or rivalling a human brain in calculation power tomorrow, then we'd have hollywood robots in front of us, doing our chores or cracking our skulls as the popular apocalyptic scenerio goes.
As it is, the most powerful computational systems in the world today cannot rival in any way a human brain, even a mediocre one. But if Moore's Law stays true for the next 50 years as it has these past 50 then we might just live to see such a system developed.
Computers can, with present technology, "reprogram" themselves based on previous reactions to their interactions
This is hardly "present", the programing language capable of such is dated all the way back to 1958, it's called LISP and it is still the high-level programming language used in developing AI.
Computers cant do things nobody thaught them after all.
Don't confuse the computer you have in front of you with a rational agent, a "smart" system. They are built differently and work differently on every level possible.
Knowledge Representation can take the world as you see it and think it and put it in 0s and 1s. Yes, it's that powerful. The only thing it cannot represent is what you may call human nature, the thing that makes be and act irrational so often.
To give ya a small example, one of the questions for an AI exam I took was: When is it rational for an agent(robot) to play the lottery?
You don't tell him to play or not to play, or when to do it, you just make sure he can make the best decission according to the information he has and the math numbers he can come up with when processing decissional trees (how one choice leads to another and so on). And by making sure I mean designing him properly.