Programmable Logic and Memories