Ich habe "JavaScript: The Good Parts" gelesen und der Autor erwähnt, dass JavaScript die erste Lambda-Sprache ist, die gestartet wird.
Die Funktionen von JavaScript sind erstklassige Objekte mit (meistens) lexikalischem Umfang. JavaScript ist die erste Lambda-Sprache , die zum Mainstream wird. Im Grunde hat JavaScript mehr mit Lisp und Scheme gemeinsam als mit Java. Es ist Lisp in Cs Kleidung. Dies macht JavaScript zu einer bemerkenswert leistungsfähigen Sprache.
Ich habe keine Lambda-Sprache verstanden. Was sind die Eigenschaften einer solchen Sprache und wie unterscheidet sie sich von Sprachen wie Java, C, C ++ und Php?
javascript
lambda
Sushil Bharwani
quelle
quelle
Antworten:
Ich habe noch nie gehört, dass jemand den Begriff "Lambda-Sprache" verwendet, und die einzigen plausiblen Definitionen, die ich mir vorstellen kann, würden JavaScript als "die erste" ausschließen.
Das heißt, ich vermute, er kann entweder bedeuten:
function
Syntax in JavaScript; diese istlambda
in vielen Sprachen geschrieben, daher möglicherweise "Lambda-Sprachen".Beide Verwendungen leiten sich aus der Verwendung des griechischen Buchstabens Lambda ab, um die Funktionsabstraktion im Lambda-Kalkül zu bezeichnen, dem von Alonzo Church entwickelten Berechnungsmodell, auf dem die funktionale Programmierung basiert.
Bearbeiten: sah sich das Ergebnis von Google Books an --- "first to go Mainstream"; Nun, das ist fraglich. Ich würde behaupten, dass LISP an einem Punkt zumindest einigermaßen Mainstream war. Es ist jedoch ein fairer Punkt, die Semantik von JavaScript ist direkt vom Schema inspiriert und hat sicherlich ein größeres Publikum erreicht als jede andere Sprache, die ähnliche Behauptungen aufstellen kann.
quelle
Eine Lambda-Sprache ist in einfachen Worten eine Sprache, mit der eine Funktion an eine andere Funktion übergeben werden kann, wobei die Funktion wie jede andere Variable behandelt wird. Außerdem sollten Sie in der Lage sein, diese Funktion so zu definieren, dass sie anonym (oder inline) übergeben wird. PHP 5.3 fügte Unterstützung für Lambda-Funktionen hinzu. War JavaScript die erste Mainstream-Sprache? Lisp wurde häufig in Lernumgebungen vor JavaScript und auch beim Anpassen unserer geliebten Emacs verwendet. Http://www.gnu.org/software/emacs/manual/html_node/eintr/
Hier ist ein Beispiel
Wie unterscheidet es sich von C? In C können Sie Zeiger auf Funktionen übergeben, diese jedoch nicht anonym inline definieren.
In Java (vor Version 8) müssen Sie ein Objekt übergeben, das eine Schnittstelle implementiert, die tatsächlich anonym inline definiert werden kann, um den gleichen Effekt zu erzielen.
quelle
Er bezieht sich auf Lambda-Kalkül .
quelle
Ich habe ein Lambda gesehen, das als anonyme Funktion und als Referenz auf eine Funktion definiert ist. Javascript unterstützt beide:
Hier bekommt JS viel von seiner Kraft und Flexibilität. Java unterstützt die erste bis zu einem gewissen Grad (anonyme Schnittstellenimplementierungen),
nicht jedoch die letztere- siehe unten für das Update für Java 8.Mir ist unklar, welches (oder beide) davon die richtige Definition eines Lambda ist.
JS ist definitiv nicht die erste Sprache, die diese Funktionen unterstützt. Aus dem Gedächtnis heraus denke ich, dass Sprachbegeisterte immer davon schwärmen, Lambdas zu unterstützen.
Übrigens: In Java wird normalerweise eine anonyme Klasse verwendet, um eine Klassendefinition im laufenden Betrieb für ein Argument zu übergeben (häufig in Swing verwendet). So etwas (aus dem Gedächtnis, nicht kompiliert):
Aktualisieren
Java ist ab 8 offiziell eine Lambda-Sprache.
Sie können jetzt die folgende Syntax verwenden:
Codequelle
quelle
In der offenen Kursware des MIT wurde Struktur und Interpretation von Computerprogrammen als Buch von Hal Abelson, Jerry Sussman und Julie Sussman bezeichnet. Sie diskutieren das Schema, das ein Dialekt von LISP ist, und erklären dort eine sehr detaillierte und klare Erklärung dessen, was Lambda ist, sowie das Schema LISP und die Sprachen im Allgemeinen. Ich empfehle Ihnen dringend, sich das anzuschauen, wenn Sie ein wirklich klares und tiefes Verständnis der Computerprogrammierung haben möchten. Ihnen zu erklären würde dreimal so viel Zeit in Anspruch nehmen, als ob Sie dorthin gegangen wären und einfach das Buch gelesen oder die Tutorials angesehen hätten, die es perfekt erklären, es ist genial.
Javascript basiert hauptsächlich auf dem Sprachschema und ist Lisp-Vater. Außerdem hat es seine Lamda-Struktur übernommen und sich damit etabliert.
quelle
Aus Wikipedia: In Programmiersprachen wie Lisp und Python ist Lambda ein Operator, mit dem anonyme Funktionen oder Abschlüsse nach Verwendung der Lambda-Rechnung bezeichnet werden. Ein Beispiel für diese Verwendung von Lambda in der Python-Sprache ist dieser Abschnitt des Computercodes, der eine Liste alphabetisch nach dem letzten Zeichen jedes Eintrags sortiert:
quelle
Mit JavaScript können Sie eine anonyme Funktion definieren, die nicht an einen Bezeichner gebunden ist. Eine solche Funktion wird auch als Lambda-Abstraktion bezeichnet, und da JS dies unterstützt, wird sie als Lambda-Sprache bezeichnet.
Eigenschaften: Diese Funktion wird für die sofortige Ausführung einer Funktion oder für die kurzfristige Verwendung benötigt, wenn es keine Bedeutung hat, der Funktion einen Namen zu geben.
Es unterscheidet sich von Sprachen wie Java, C, C ++ und PHP, da in JS Anonymous-Funktionen für Closure und Currying verwendet werden.
quelle