This paper is a survey of algebraic modeling languages, which are playing an increasingly prominent role in the application of mathematical programming. An algebraic language is a computer readable language in which the objective function and the constraints of an optimization model are described algebraically. The emphasis in this paper is on descriptions of prominent language features, and comparisons with other representations of mathematical programs. The language features are evaluated on the basis of their contribution to the human ability to understand, maintain and verify model descriptions. Several recent research contributions are mentioned indicating that there is ample room for both improvements of algebraic languages and new types of languages.