Eu estava lendo "JavaScript: The Good Parts" e o autor menciona que JavaScript é a primeira das linguagens lambda a ser lançada.
As funções do JavaScript são objetos de primeira classe com escopo (principalmente) léxico. JavaScript é o primeiro linguagem lambda a se tornar mainstream. No fundo, JavaScript tem mais em comum com Lisp e Scheme do que com Java. É Lisp com as roupas de C. Isso torna o JavaScript uma linguagem extremamente poderosa.
Não entendi o que é uma língua lambda. Quais são as propriedades de tal linguagem e como ela difere de linguagens como Java, C, C ++ e Php?
javascript
lambda
sushil bharwani
fonte
fonte
Respostas:
Nunca ouvi ninguém usar o termo "linguagem lambda", e as únicas definições plausíveis que posso pensar excluiriam o JavaScript como "a primeira".
Dito isso, suspeito que ele queira dizer:
function
sintaxe em JavaScript; isso é escritolambda
em muitas linguagens, portanto, possivelmente, "linguagens lambda".Ambos os usos são derivados do uso da letra grega lambda para denotar abstração de função no cálculo lambda, o modelo de computação desenvolvido por Alonzo Church e no qual a programação funcional é baseada.
Editar: olhou para o resultado do Google Livros --- "first to go mainstream"; bem, isso é discutível. Eu sugeri que o LISP foi em um ponto pelo menos razoavelmente popular. É um ponto justo, porém, a semântica do JavaScript é diretamente inspirada pelo Scheme e certamente atingiu um público maior do que qualquer outra linguagem que pode fazer afirmações semelhantes.
fonte
Uma linguagem lambda, em termos simples, é uma linguagem que permite passar uma função para outra função, onde a função é tratada como qualquer outra variável. Além disso, você deve ser capaz de definir esta função para ser passada anonimamente (ou embutida). PHP 5.3 adicionou suporte para funções lambda. JavaScript foi a primeira linguagem mainstream? Lisp foi amplamente utilizado em ambientes educacionais antes do JavaScript e também na personalização de nosso amado Emacs http://www.gnu.org/software/emacs/manual/html_node/eintr/
Aqui está um exemplo
Como é diferente de C? Em C, você pode passar o ponteiro para funções, mas não pode defini-lo inline anonimamente.
Em Java (antes da versão 8), para obter o mesmo efeito, você deve passar um objeto que implementa uma interface, que na verdade pode ser definida anonimamente em linha.
fonte
Ele se refere ao cálculo Lambda .
fonte
Eu vi um lambda definido como uma função anônima e como uma referência a uma função. Javascript oferece suporte a:
É aqui que o JS obtém muito poder e flexibilidade. O Java suporta o primeiro até certo ponto (implementações de interface anônima),
mas não o último- veja abaixo a atualização do Java 8.Não está claro para mim qual (ou ambas) dessas é a definição apropriada de lambda.
JS definitivamente não é a primeira linguagem a oferecer suporte a esses recursos. De memória, acho que é pequeno o fato de os entusiastas da linguagem sempre elogiarem o apoio a lambdas.
BTW: Em Java, uma classe anônima é geralmente usada para passar uma definição de classe rapidamente para um argumento (muito usada em swing). Algo assim (de memória, não compilado):
Atualizar
Java, a partir de 8, agora é oficialmente uma linguagem Lambda.
Agora você pode usar a seguinte sintaxe:
Código Fonte
fonte
No curso aberto do MIT chamado estrutura e interpretação de programas de computador, um livro de Hal Abelson, Jerry Sussman e Julie Sussman. Eles discutem Scheme, que é um dialeto de LISP e lá eles explicam uma explicação muito detalhada e clara do que é lambda e Scheme LISP e linguagens em geral. Recomendo enfaticamente que você o leia se deseja ter um entendimento realmente claro e profundo de Programação de Computadores. Explicar para você levaria três vezes mais tempo do que se você fosse lá e apenas lesse o livro ou assistisse aos tutoriais que explicam perfeitamente, é genial.
Javascript é baseado principalmente na linguagem Scheme e em seu pai Lisp, e além disso, pegou sua estrutura lamda e se tornou mainstream com ela.
fonte
Da wikipedia: Em linguagens de programação como Lisp e Python, lambda é um operador usado para denotar funções anônimas ou encerramentos, seguindo o uso do cálculo lambda. Um exemplo desse uso de lambda na linguagem Python é esta seção de código de computador que classifica uma lista em ordem alfabética pelo último caractere de cada entrada:
fonte
JavaScript permite definir uma função anônima que é uma função que não está vinculada a um identificador. Essa função também é conhecida como Lambda Abstraction e, como o JS a suporta, é conhecida como Lambda Language.
Propriedades: Esta função é necessária em caso de execução imediata de uma função ou para uso a curto prazo, onde não há significado de dar nome à função.
É diferente de linguagens como Java, C, C ++ e PHP, pois as funções JS Anonymous são usadas para Closure e Currying.
fonte