4D programming