Já teve outros posts sobre isso:

Este último, inclusive, tem duas respostas que complementam e aprofundam bastante o assunto: essa e essa.