Rendezvous with Rama
(Rama, book 1)
Arthur C Clarke