The possibility for spontaneous ad hoc networks between mobile devices has been increasing as small devices become more capable of hosting useful networked applications. These applications face the challenges of frequent disconnections, highly dynamic network topologies, and varying communication patterns, a combination unique to mobile ad hoc networks. This is the first survey to examine current MANET programming approaches including tuple spaces, remote objects, publish/subscribe, and code migration through analysis and experimental results. We suggest that these approaches are essentially extensions to existing distributed llel computing concepts and new abstractions may be necessary to fully handle the programming issues presented by MANETs. Categories and Subject Descriptors D.2.2 [Software Engineering]: Design Tools and Tech