Je lisais "JavaScript: The Good Parts" et l'auteur mentionne que JavaScript est le premier des langages lambda à être lancé.
Les fonctions de JavaScript sont des objets de première classe avec une portée lexicale (principalement). JavaScript est le premier langage lambda à se généraliser. Au fond, JavaScript a plus en commun avec Lisp et Scheme qu'avec Java. C'est Lisp dans les vêtements de C. Cela fait de JavaScript un langage remarquablement puissant.
Je n'ai pas compris ce qu'est un langage lambda. Quelles sont les propriétés d'un tel langage et en quoi est-il différent des langages comme Java, C, C ++ et Php?
javascript
lambda
sushil bharwani
la source
la source
Réponses:
Je n'ai jamais entendu personne utiliser le terme «langage lambda», et les seules définitions plausibles auxquelles je puisse penser excluraient JavaScript comme «le premier».
Cela dit, je soupçonne qu'il veut dire soit:
function
syntaxe en JavaScript; ceci est écritlambda
dans de nombreux langages, d'où éventuellement des «langages lambda».Les deux usages sont dérivés de l'utilisation de la lettre grecque lambda pour désigner l'abstraction de fonction dans le calcul lambda, le modèle de calcul conçu par Alonzo Church et sur lequel la programmation fonctionnelle est basée.
Edit: regardé le résultat de Google Livres --- "premier à devenir grand public"; eh bien, c'est discutable. J'avais avancé que LISP était à un moment au moins raisonnablement courant. C'est un bon point cependant, la sémantique de JavaScript est directement inspirée de Scheme et a certainement atteint un public plus large que tout autre langage pouvant faire des déclarations similaires.
la source
Un langage lambda, en termes simples, est un langage qui permet de passer une fonction à une autre fonction, où la fonction est traitée comme n'importe quelle autre variable. De plus, vous devriez pouvoir définir cette fonction pour qu'elle soit transmise de manière anonyme (ou en ligne). PHP 5.3 a ajouté la prise en charge des fonctions lambda. JavaScript était-il le premier langage courant? Lisp a été largement utilisé dans les environnements éducatifs avant JavaScript et aussi dans la personnalisation de notre bien-aimé Emacs http://www.gnu.org/software/emacs/manual/html_node/eintr/
Voici un exemple
En quoi est-ce différent de C? En C, vous pouvez passer un pointeur vers des fonctions, mais vous ne pouvez pas le définir en ligne de manière anonyme.
En Java (avant la version 8), pour obtenir le même effet, vous devez passer un objet qui implémente une interface, qui peut en fait être définie de manière anonyme en ligne.
la source
Il se réfère au calcul Lambda .
la source
J'ai vu un lambda défini comme une fonction anonyme et comme une référence à une fonction. Javascript prend en charge à la fois:
C'est là que JS tire une grande partie de sa puissance et de sa flexibilité. Java prend en charge la première dans une certaine mesure (implémentations d'interface anonyme),
mais pas la dernière- voir ci-dessous pour la mise à jour de Java 8.Je ne sais pas laquelle (ou les deux) de ces éléments est la bonne définition d'un lambda.
JS n'est certainement pas le premier langage à prendre en charge ces fonctionnalités. Partant de mémoire, je pense que son petit discours dit que les amateurs de langues sont toujours ravis de soutenir les lambdas.
BTW: En Java, une classe anonyme est généralement utilisée pour passer une définition de classe à la volée pour un argument (beaucoup utilisé en swing). Quelque chose comme ça (de mémoire, non compilé):
Mettre à jour
Java, à partir de 8, est désormais officiellement un langage Lambda.
Vous pouvez maintenant utiliser la syntaxe suivante:
Source du code
la source
Dans le cours ouvert du MIT appelé structure et interprétation des programmes informatiques, un livre de Hal Abelson, Jerry Sussman et Julie Sussman. Ils discutent Scheme, qui est un dialecte de LISP et y expliquent une explication très détaillée et claire de ce qu'est lambda et Scheme LISP et des langues en général. Je vous recommande fortement de le regarder si vous souhaitez avoir une compréhension vraiment claire et approfondie de la programmation informatique. Vous expliquer prendrait trois fois plus de temps que si vous y alliez et lisez simplement le livre ou regardez les tutoriels qui l'expliquent parfaitement, c'est du génie.
Javascript est principalement basé sur le langage Scheme et son père Lisp, et en plus il a pris sa structure lamda et est devenu courant avec elle.
la source
De wikipedia: Dans les langages de programmation tels que Lisp et Python, lambda est un opérateur utilisé pour désigner des fonctions anonymes ou des fermetures, suivant l'utilisation du calcul lambda. Un exemple de cette utilisation de lambda dans le langage Python est cette section de code informatique qui trie une liste par ordre alphabétique du dernier caractère de chaque entrée:
la source
JavaScript permet de définir une fonction anonyme qui est une fonction qui n'est pas liée à un identifiant. Cette fonction est également connue sous le nom d'abstraction Lambda et puisque JS la prend en charge, elle est appelée langage Lambda.
Propriétés: Cette fonction est nécessaire en cas d'exécution immédiate d'une fonction ou pour une utilisation à court terme, où il n'y a aucune signification de donner un nom à une fonction.
Il est différent des langages comme Java, C, C ++ et PHP, car dans JS, les fonctions anonymes sont utilisées pour la fermeture et le currying.
la source