To be a bit pedantic, FPGAs are flashed/configured via a boot serial flash in which you program the gate configuration using a hardware description language like vhdl or verilog. The FPGA itself is not a device which is manufactured for a specific application, rather it is like a box of lego which can be put together using it’s components (logic element blocks consisting of look up tables and glue logic) through a flexible mesh network of programmable interconnections.
This is done after manufacturing by an end user just like a microprocessor would be programmed, but instead of telling a fixed deterministic processor architecture what to do (microprocessor), you tell an FPGA what to be. It is even possible to “emulate”/recreate a softcore processor inside an FPGA which is how I’ve seen people use to make very accurate NES on FPGA projects. In university, I took a class where we implemented a motorola 68000 microprocessor inside a xilinx spartan 3E. Very cool to work with but pretty steep learning curve learning the syntax and ide.