MVC / MVP / MVVM ¿Qué diablos?

Recientemente trabajé en un proyecto .Net WPF para construir un sistema de punto de venta minorista donde utilicé el patrón MVP por primera vez. Me tomó un poco para envolver mi cabeza en torno al cambio de enfoque, pero una vez que lo hice, ¡pensé que el concepto se sacudió!

Mi pregunta es la siguiente: ¿cuál es la distinción entre MVC, MVP y MVVM? Si hay una distinción clara, ¿hay pautas sobre cuándo debe usar un patrón sobre otro?

Si alguien puede ofrecer orientación sobre esto, o señalar un artículo que explique las diferencias, lo apreciaría mucho.

Respuestas a la pregunta(2)

Su respuesta a la pregunta