Some elementary entities belong to the language and are available without further effort by the programmer, with their specific semantics. These we will term concrete. Others we will term abstract: they are constructed by the programmer and abstracted by means of a declaration. We might define programming along these lines as the construction of abstract algorithms.