A term used in the data processing community for a high-level language that is designed to allow users who are not trained programmers to develop applications, in particular for querying databases and generating reports. 4GLs are usually nonprocedural languages in which the user describes what is wanted in terms of application, not the computer. The processor takes the user's description and either interprets it directly or generates a program (e.g. in a database query language or Cobol) that will perform the desired operation. For this reason the latter are sometimes called application generators.