Was sind die Ursprünge der öffentlichen / privaten Funktionserklärungen?

8

Die Frage

Was sind die Ursprünge des Public / Private-Funktionsparadigmas?

Hintergrund

Im Chat wurde eine Frage zu Header-Dateien in C gestellt, deren Verwendung hauptsächlich dem Compiler und nicht dem Programmierer dient. Nach meinem Verständnis ist dies jedoch die erste Verwendung des Konzepts "privater" Funktionen oder Funktionen, die in der Header-Datei keinen Prototyp enthalten. Hätte C keine Header-Dateien zum Deklarieren von Funktionen verwendet, hätten wir dann immer noch das aktuelle Konzept von öffentlichen und privaten Funktionen, wie es in C # oder Java zu sehen ist? Oder wurde dieses Konzept ursprünglich an anderer Stelle entwickelt und einfach im C-Header / Source-Schema implementiert?

Ampt
quelle

Antworten:

10

Privat / öffentlich stammt aus der ursprünglichen OO-Sprache Simula , die einige Jahre vor C lag. Laut dem Wikipedia-Artikel wurde das ursprüngliche Konzept erstmals in der TOPS / 10-Variante von Simula implementiert und 1987 in den Kernsprachenstandard integriert. Es heißt jedoch nicht, wann TOPS / 10 Simula zum ersten Mal erstellt wurde kann oder kann nicht früher als C gewesen sein.

Unabhängig davon, selbst wenn C und sein Header-Dateisystem nicht vorhanden gewesen wären, hätten moderne Programmiersprachen das Konzept der Kapselung durch das private / öffentliche System von Simula geerbt.

Mason Wheeler
quelle
5
Und natürlich hatte der Mainframe-Code von LONG vor 1987 Routinen für "externe Symbole" (== "öffentlich") und nicht externe (== "privat") Routinen ohne die spezifischen Schlüsselwörter.
Ross Patterson
1

Ich denke, die Idee, Teile Ihres Codes privat zu machen, hat Wurzeln, die weiter zurückreichen als Simula. Scheme (1975) war die erste Sprache, die Verschlüsse implementierte, mit der Sie Daten wie Lambdas kapseln können. Mit Schema können Sie auch interne Funktionen mit dem Schlüsselwort define angeben.

Wenn Sie Funktionen privat machen, können Sie mehr Abstraktion in ein Programm integrieren. Das Erstellen von Abstraktionen in Programmen hat eine lange Geschichte. LISP-Varianten wie Scheme tragen wesentlich zur Entwicklung moderner Programmiersprachen bei.

Struktur und Interpretation von Computerprogrammen von Abelson, Sussman ist ein ausgezeichnetes Buch, um mehr über Abstraktionen zu erfahren, wenn Sie an diesen Dingen interessiert sind.

Nicolas
quelle
Dieser Beitrag ist ziemlich schwer zu lesen (Textwand). Hätten Sie etwas dagegen bearbeiten sie in eine bessere Form ing?
Mücke