- En programación, la expresión "llamar" a una función tiene un origen similar a la idea de "solicitar" o "pedir" un libro en una biblioteca
- En la computación temprana predominaba la tendencia de invocar o traer subrutinas desde una biblioteca
- Fortran II introdujo la instrucción
CALL, popularizando rápidamente la expresión "llamar una función"
- Después, lenguajes como Algol y JOVIAL también adoptaron esto y empezaron a usar el sustantivo "call"
- El significado de "call" se fue ampliando y consolidando gradualmente para abarcar antes, durante y después del control en tiempo de ejecución
¿Por qué los programadores dicen que una función se "llama" (call)?
- En StackExchange hubo una pregunta sobre el origen de la expresión "llamar (
call) a una función"
- Hay varias metáforas, pero en realidad proviene del sentido de "call" como invocar o hacer venir algo
- Igual que cuando en una biblioteca se "solicita" un libro, comenzó con la idea de "pedir" una subrutina para usarla
- Un "call number" es la marca que indica la ubicación de un libro en la biblioteca
La historia de "call" en la terminología bibliotecaria
- Según el OED, Melvil Dewey usó por primera vez "call number" en 1876 como término de bibliotecología
- "Call number" es una notación usada para la ubicación de un libro o para solicitarlo
- En el Library Journal de 1888 también se usaban cotidianamente términos como "call blank", "call slip" y "call number"
- Según la explicación de Joudrey & Taylor, el nombre "call number" proviene del acto de pedir materiales en estanterías cerradas
- Sistemas como el Cutter number se introdujeron con fines de clasificación
Los primeros usos de "call" en ciencias de la computación
- En un artículo de John W. Mauchly de 1947 aparece un caso de uso de subrutinas "called in" desde una biblioteca de subrutinas
- En el contexto de referenciarlas y usarlas rápidamente mediante un número registrado
- Las rutinas ensambladoras de MANIAC II (1956) también aplicaban la idea de asignar un "call number" a cada subrutina para traerla cuando hiciera falta
- En el lenguaje ensamblador real se hablaba de "transfer control"
- En esa época se enfatizaba más la idea de traer fragmentos de código durante la compilación o el enlace que la de una "llamada" en tiempo de ejecución
La aparición de la instrucción CALL en los lenguajes de programación
- Fortran II (1958) introdujo las instrucciones
CALL y RETURN
- La acción de "llamar" (
call for) entregaba el control de ejecución a una subrutina
- La instrucción
CALL señalaba literalmente el acto sintáctico de "llamar"
- Poco a poco empezó a mezclarse de forma ambigua la idea de transferir el control en tiempo de ejecución con la acción de "llamar" en la etapa de enlace o ensamblado
La ampliación y consolidación del significado de "call" en los años 60
- En el diccionario de Sarbacher (1959), "call in" se define como el movimiento de control desde la rutina principal hacia una subrutina
- También explica "call number" y "call word" como identificadores y hasta como código de llamada
- En JOVIAL (1960) se usan oficialmente como sustantivos expresiones como "procedure call" y "calls"
- Después se emplearon junto con significados en varias capas, como sitio de llamada, argumento y parámetro
- Algol (1959~1960) también expresa el momento de la llamada de varias maneras: "procedure call", "called procedure" y "during the call"
- En el reporte de Algol 60 de Peter Naur también aparece la distinción temporal entre "call for" y "during the call"
- En Burroughs Algebraic Compiler (1961) aparece por primera vez con claridad la forma verbal "to call"
- A partir de Corbató y otros (1963) se generaliza el uso moderno de "to call a subroutine"
Conclusión
- La instrucción
CALL X de Fortran II hizo que la expresión "call" se asentara para referirse a la llamada de funciones/subrutinas
- Se inspiró en una idea previa del ámbito bibliotecario (llamar por número), pero en los lenguajes de programación amplió su significado
- Después, distintos lenguajes como Algol y JOVIAL adoptaron términos como "call" y "call site"
- Desde alrededor de 1961, la expresión "to call X" empezó a consolidarse en la documentación oficial y en la comunidad
- Hoy, una llamada de función se refiere al conjunto de operaciones en que se transfiere temporalmente el control, se obtiene un resultado y luego se regresa, y 'call' se convirtió en el término estándar
1 comentarios
Opiniones de Hacker News