This paper presents Abacus, a service-oriented programming language designed for the development of grid applications. Abacus considers that all the grid resources constitute a unified logical address space, where each memory cell holds a resource in the form of a service, and a grid application solves a problem by operating on these memory cells. Abacus allows programmers to concentrate on the logic of their applications, such as service implementation logic, service invocation logic, and glue logic. Low-level details such as resource distribution, resource binding, and service deployment are supported by the compiler and the runtime system. With such virtualization techniques, Abacus helps to enhance the productivity of programmers in developing grid applications.