Wikipedia has a very comprehensive article on this.