[2][3] He did not actually define the term strictly, but contrasted real numbers and procedures in ALGOL: First and second class objects.
Thus in a sense procedures in ALGOL are second class citizens—they always have to appear in person and can never be represented by a variable or expression (except in the case of a formal parameter)... [4]Robin Popplestone gave the following definition: All items have certain fundamental rights.
[7][better source needed] The simplest scalar data types, such as integer and floating-point numbers, are nearly always first-class.
For example, neither Fortran IV nor C supports array assignment, and when they are passed as parameters, only the position of their first element is actually passed—their size is lost.
Because of this, their usage generally comes with some (cultural) stipulations and advice, as untested modification of the core programming system by users can easily undermine performance optimisations made by language implementers.