Der Begriff "erstklassiger Bürger" oder "erstklassiges Element" in einer Programmiersprache wurde in den 1960er Jahren von dem britischen Informatiker Christopher Strachey im Kontext erstklassiger Funktionen eingeführt. Die wohl bekannteste Formulierung dieses Prinzips ist die Struktur und Interpretation von Computerprogrammen von Gerald Jay Sussman und Harry Abelson:
- Sie können durch Variablen benannt werden.
- Sie können als Argumente an Prozeduren übergeben werden.
- Sie können als Ergebnis von Verfahren zurückgegeben werden.
- Sie können in Datenstrukturen enthalten sein.
Grundsätzlich bedeutet dies, dass Sie mit diesem Programmiersprachenelement alles tun können, was Sie mit allen anderen Elementen in der Programmiersprache tun können.
Es geht nur um "Gleichberechtigung": Sie können alle oben genannten Aufgaben ausführen, beispielsweise mit ganzen Zahlen. Warum sollte also eine andere Aufgabe anders sein?
Die obige Definition ist insofern einschränkend, als sie nur den Aspekt der Erstklassigkeit in Bezug auf das Sein von Objekten des Programms behandelt. Eine allgemeinere Definition wäre, dass eine Sache erstklassig ist, wenn man alles damit machen kann, was man auch mit anderen Dingen ähnlicher Art machen kann.
Beispielsweise sind Java-Operatoren und Java-Methoden von ähnlicher Art. Sie können neue Methoden definieren, Sie können die Namen Ihrer eigenen Methoden (etwas) frei wählen, Sie können Methoden überschreiben, Sie können Methoden überladen. James Gosling kann all das auch mit Betreibern machen, aber Sie und ich können es nicht. Ich meine, entgegen der landläufigen Meinung, Java tut Support - Betreiber Überlastung: zum Beispiel die +
ist Betreiber überlastet für byte
, short
, int
, long
, float
, double
und String
, und IIRC in Java 7 auch für BigInteger
und BigDecimal
(und wahrscheinlich ein paar habe ich vergessen), es ist nur , dass SieHabe keinen Einfluss darauf. Das macht Betreiber nach dieser zweiten Definition eindeutig zur zweiten Klasse. Beachten Sie jedoch, dass Methoden nach der ersten Definition immer noch keine erstklassigen Objekte sind. (Macht das Betreiber dritte Klasse?)