¿Cuáles son los orígenes de las declaraciones de funciones públicas / privadas?

8

La pregunta

¿Cuáles son los orígenes del paradigma de la función pública / privada?

Antecedentes

En el chat surgió una pregunta sobre los archivos de encabezado en C, y su uso es principalmente para ayudar al compilador, no al programador. Sin embargo, entiendo que este es el primer uso del concepto de funciones "privadas", o funciones que no están prototipadas en el archivo de encabezado. Si C no hubiera utilizado archivos de encabezado para declarar funciones, ¿seguiríamos teniendo el concepto actual de funciones públicas y privadas como se ve en C # o Java? ¿O este concepto se desarrolló inicialmente en otro lugar y simplemente se implementó en el esquema C Header / Source?

Ampt
fuente

Respuestas:

10

Privado / público proviene del lenguaje original OO, Simula , que precedió a C por unos años. Según el artículo de Wikipedia, el concepto original se implementó por primera vez en la variante TOPS / 10 de Simula, y se integró al estándar del lenguaje central en 1987. Sin embargo, no dice cuándo se creó TOPS / 10 Simula por primera vez, por lo que puede o no haber sido anterior a C.

De todos modos, incluso si C y su sistema de archivos de encabezado no hubieran existido, los lenguajes de programación modernos aún habrían heredado el concepto de encapsulación a través del sistema público / privado de Simula.

Mason Wheeler
fuente
55
Y, por supuesto, el código de mainframe de LONG antes de 1987 tenía rutinas de "símbolos externos" (== "públicos") y rutinas no externas (== "privadas"), sin las palabras clave específicas.
Ross Patterson
1

Creo que la idea de hacer que partes de su código sean privadas tiene raíces que se remontan a Simula. Scheme (1975) fue el primer lenguaje en implementar cierres, lo que le brinda la posibilidad de encapsular datos como lambdas. El esquema también le permite especificar funciones internas utilizando la palabra clave define.

Hacer que las funciones sean privadas permite que se incorpore más abstracción en un programa. La creación de abstracciones en los programas tiene una larga historia, con lenguajes variantes LISP como Scheme que contribuyen mucho al desarrollo de lenguajes de programación modernos.

Estructura e interpretación de programas de computadora por Abelson, Sussman es un excelente libro para aprender más sobre abstracciones si está interesado en esas cosas.

Nicolas
fuente
esta publicación es bastante difícil de leer (muro de texto). ¿Te importaría editarlo en una mejor forma?
mosquito