Gostaria de saber quais são as diferenças específicas na terminologia que usamos para agrupar partes relacionadas do código. Às vezes, já vi os termos serem usados de forma intercambiável: muitas linguagens OO usam a palavra-chave "função" para definir um método. (Por quê?)
Se você quisesse ser preciso, quais são os significados específicos de cada um? Ou é exatamente o que cada idioma escolhe para chamá-lo?
terminology
Andrew Vit
fonte
fonte
function
para métodos são JavaScript e PHP. Ambos usam a mesma palavra-chave para não métodos (funções livres) e, no caso do JavaScript, não há realmente uma distinção entre funções e métodos, pelo menos não no nível da linguagem.Sub
é umFunction
valor sem retorno. EmPython
você pode ter uma função que não faz parte de nenhuma classe, portanto não é um método. Você também pode declarar funções dentro de funções e também em C #. Às vezes, eles têm nomes diferentes pela mesma razão que maçãs e abacaxis: porque são diferentes.Respostas:
subprograma, sub-rotina
"sub-rotina" provavelmente vem da linguagem assembly. Alguns processadores incluem instruções para oferecer suporte a sub-rotinas como uma maneira de organizar o código e reutilizar seções comuns do código. Por exemplo, o processador 6502 possuía instruções JSR (salto para sub-rotina) e RTS (retorno da sub-rotina). Lembro-me de que ele também era muito usado em programação estruturada, na qual um programa é uma hierarquia de unidades de código que às vezes eram chamadas de sub-rotinas ou subprogramas. Na IMO, esses são os termos mais genéricos para alguma unidade de código para a qual o controle é transferido temporariamente com a finalidade de concluir uma determinada tarefa.
função, procedimento
Estes são freqüentemente usados de forma intercambiável, mas em alguns idiomas há uma distinção. Em Pascal, uma função é um subprograma que retorna um valor, enquanto um procedimento é um subprograma que não. Em C e idiomas relacionados, todo subprograma tem um tipo de retorno (mesmo que seja
void
), portanto não há distinção.método, função membro
Estes são dois nomes para a mesma coisa - essencialmente uma função que está associada a uma determinada classe ou objeto.
operador
Todo idioma possui um conjunto de operadores internos. Em algumas linguagens, como C ++, operadores são funções que podem ser substituídas (substituídas) e / ou sobrecarregadas (definidas para novos tipos).
função anônima
Refere-se a uma função sem nome. Funções anônimas são essencialmente blocos de código que podem ser atribuídos a variáveis ou passados como parâmetros para uso subsequente, por exemplo, como uma rotina de conclusão.
encerramento, expressão lambda, bloco
Um fechamento é um pedaço de código vinculado a um conjunto de variáveis. Penso em fechamentos como funções anônimas mais contexto.
fonte
2 + 2
. Existem pequenas exceções, como 1-arg, como++arg
(prefixo) ouarg++
(postfix). Embora eu não tenha visto muitos operadores de postfix ..Depende dos idiomas, o que você pode fazer com eles
AFAIK, no Basic, se você chamar algo que não retorna nada, mas executa um trabalho com efeitos colaterais, como impressão, gravação em arquivo ou alteração de uma variável global, isso foi chamado de procedimento.
Se retornar algo, isso foi chamado de função.
Em uma linguagem OOP como Java, raramente encontrei o termo 'função', mas 'método', e foi ensinado que funções são coisas que são globais e podem ser chamadas por todos.
Na escala funcional e na linguagem OOP, um método não é chamado de função, mas você pode passar isso para outro método, e então se torna uma função.
Uma sub-rotina é uma rotina, que é chamada por outra rotina, no meu entender.
Em resumo, não acho que exista uma definição concisa sobre todas as línguas e mais ainda paradigmas. Você deve considerar a cultura específica em que está, se usar esses termos - talvez deva apresentar sua definição primeiro.
fonte
Eu diria que, dependendo do contexto, todas essas palavras podem significar a mesma coisa ou coisas totalmente diferentes, por exemplo, o que Caleb escreveu (mas há mais, ou seja, idiomas em que operadores são funções de primeira classe etc.). Portanto, é difícil dar uma definição específica e é prudente não assumir muito, a menos que o contexto (linguagem de programação) seja conhecido.
fonte