If it takes someone more than an hour to determine a programmer's basic worth, then they should fold up shop. The extra 4 hours is a waste of both side's time. You won't really know how good the person is until they are working for weeks or months so how to do you expect to learn this in 5 hours?
This is fascinating for me, I just came out of a 7 hour interview day earlier this week feeling hyped up and energized (although a little croaky after talking for 7 hours)
A 5 hour interview is a ludicrous amount of time to take out of someone's day.