compiled vs interpreted languages