These are a great example of Deferred Design. Chips based upon this technology actually consist of large arrays of logic gate, but which kind they behave as is determined by a program that is loaded as they start up. This means that by flashing the firmware of the device, these logic gate can be reconfigured to provide different behaviour.

While it may sound similar, it is vastly different from a simple microcontroller. In the case of a microcontroller, you program instructions to be run on a set of already hard-configured logic gates. You cannot do anything outside the function of the gates already present. But in the case of a PLD, the logic gate themselves are what may change, and indeed you could implement a microcontroller on a PLD.

A particular case of a Programmable Logic gate is the FPGA.