- Na programação, a origem da expressão "chamar uma função" é semelhante ao conceito de "solicitar" ou "chamar" um livro em uma biblioteca
- Na computação inicial, predominava a prática de invocar, chamar sub-rotinas de uma biblioteca
- Quando o Fortran II introduziu a instrução CALL, a expressão "chamar uma função" se popularizou rapidamente
- Depois, linguagens como Algol e JOVIAL também adotaram isso e passaram a usar o substantivo "call"
- O sentido de "call" foi se ampliando gradualmente para abranger antes, durante e depois da transferência de controle em tempo de execução
Por que os programadores dizem que "chamam" (call) uma função?
- Houve uma pergunta no StackExchange sobre a origem da expressão "chamar (
call) uma função"
- Existem várias analogias, mas na prática a origem vem do sentido de "call" como invocar ou trazer algo
- Assim como se "solicita" um livro em uma biblioteca, começou com a ideia de "solicitar" uma sub-rotina para usá-la
- "call number" é a marcação que indica a localização de um livro em uma biblioteca
A história de "call" na terminologia de bibliotecas
- Segundo o OED, Melvil Dewey usou pela primeira vez "call number" como termo de biblioteconomia em 1876
- "call number" é a notação usada para a localização de um livro ou para um pedido de consulta
- No Library Journal de 1888, termos como "call blank", "call slip" e "call number" já eram usados normalmente
- Segundo a explicação de Joudrey & Taylor, "call number" recebeu esse nome a partir do ato de chamar materiais em estantes fechadas
- Sistemas como o Cutter number foram introduzidos para classificação
O uso inicial de "call" na ciência da computação
- No artigo de 1947 de John W. Mauchly, aparece um caso de uso em que sub-rotinas eram "called in" a partir de uma biblioteca de sub-rotinas
- No contexto de referenciar e usar rapidamente algo por meio de um número registrado
- As rotinas em assembly do MANIAC II (1956) também aplicavam a ideia de atribuir um "call number" a cada sub-rotina para trazê-la quando necessário
- Na linguagem assembly real, isso era chamado de "transfer control"
- Nessa época, o destaque estava menos na "chamada" em tempo de execução e mais na ideia de trazer trechos de código durante a compilação ou a ligação
O surgimento da instrução "CALL" nas linguagens de programação
- Fortran II (1958) introduziu as instruções
CALL e RETURN
- A ação de "call for" transferia o controle de execução para uma sub-rotina
- A instrução
CALL apontava diretamente para o ato sintático de "chamar"
- Aos poucos, começou a haver mistura entre a ideia de "transferir o controle" em tempo de execução e o ato de "chamar" no momento de linkedição ou montagem
A ampliação e consolidação do sentido de "call" nos anos 1960
- No dicionário de Sarbacher (1959), "call in" é definido como a transferência de controle da rotina principal para uma sub-rotina
- Também são explicados "call number" e "call word" como identificador e até código de chamada
- Em JOVIAL (1960), "procedure call" e "calls" já aparecem oficialmente como substantivos
- Depois, o termo passou a ser usado junto com significados em várias camadas, como local de chamada (site), argumento (argument), parâmetro etc.
- Algol (1959~1960) também usa expressões como "procedure call", "called procedure" e "during the call" para descrever diferentes momentos da chamada
- No relatório do Algol 60 de Peter Naur, também aparece a distinção temporal entre "call for" e "during the call"
- No Burroughs Algebraic Compiler (1961), o verbo "to call" aparece claramente pela primeira vez
- A partir de Corbató et al. (1963), o uso moderno de "to call a subroutine" se generalizou
Conclusão
- A instrução "CALL X" do Fortran II fez a expressão "call" se firmar para chamadas de função/sub-rotina
- A ideia veio do conceito bibliotecário anterior de chamar algo por número, mas ganhou uma nova ampliação de sentido nas linguagens de programação
- Depois, Algol, JOVIAL e outras linguagens adotaram termos como "call" e "call site"
- Por volta de 1961, a expressão "to call X" começou a se fixar em documentos formais de programação e na comunidade
- Hoje, chamar uma função se refere ao conjunto completo de operações de transferir temporariamente o controle, executar e depois retornar com um resultado, e 'call' se tornou o termo padrão
1 comentários
Comentários do Hacker News