What is a programmable logic controller?

What is a programmable logic controller?