Protein Folding: A Perspective from Theory and Experiment