Frage

An alle Leute, die wissen, Lambda-Kalkül : Welchen Nutzen hat es gekauft haben, in Bezug auf die Programmierung ? Würden Sie empfehlen, dass die Menschen es lernen?

War es hilfreich?

Lösung

Wenn Sie in jeder funktionale Programmiersprache programmieren möchten, ist es von wesentlicher Bedeutung. Ich meine, wie nützlich es ist über Turing-Maschinen zu wissen? Nun, wenn Sie C schreiben, ist die Sprache Paradigma ganz in der Nähe Turing-Maschinen - Sie einen Befehlszeiger und eine aktuelle Anweisung, und die Maschine nimmt eine Aktion im aktuellen Zustand, und dann schlendert entlang zum nächsten Befehl

In einer funktionalen Sprache, Sie können einfach nicht glauben, dass - das ist nicht die Sprache Paradigma. Sie müssen zurück zu Lambda-Kalkül denken, und wie Begriffe werden dort ausgewertet. Es wird viel schwieriger für Sie in einer funktionalen Sprache wirksam zu sein, wenn Sie nicht wissen, Lambda-Kalkül.

Andere Tipps

Der Vorteil des Lambda-Kalkül ist, dass es ein extrem einfaches Modell der Berechnung ist, die zu einer Turing-Maschine entsprechen. Aber während eine Turing-Maschine mehr wie Assembler-Sprache ist, Lambda-Kalkül ist ein wie eine High-Level-Sprache. Und wenn Sie lernen, Kirche Codierungen , die Ihnen helfen, die Programmiertechnik namens Continuation-Passing Style , lernen die für die Umsetzung ist sehr nützlich Suche und andere nette Tricks Rückzieher.

Die hauptsächliche Verwendung von Lambda-Kalkül in der Praxis ist, dass es ein großes Labor Werkzeug für das Studium neue Programmiersprache Ideen ist. Wenn Sie eine Idee für eine neue Sprache-Funktion haben, können Sie fügen Sie die neue Funktion der Lambda-Kalkül und Sie bekommen etwas, das ist ausdrucksstark genug zu programmieren , während sie einfach genug, um sehr gründlich zu studieren. Diese Verwendung ist wirklich mehr für die Sprache Designer und Theoretiker als für Programmierer.

Lambda-Kalkül ist auch nur sehr cool in seinem eigenen Recht: wie Assembler-Sprache zu kennen, wird es vertieft Ihr Verständnis der Berechnung . Es ist vor allem Spaß zu Programm einer universelle Turing-Maschine in dem Lambda-Kalkül. Aber dies ist grund Mathematik, nicht praktisch Programmierung.

Um ehrlich zu sein, das Lernen Lambda-Kalkül vor der funktionalen Programmierung hat mich erkennen, dass die beiden als nicht verwandt sind als C in jeden imperativen Programmierung ist.

Lambda-Kalkül ist a funktionale Programmiersprache, eine esoterische ein, eine Turing tarpit wenn Sie mögen; versehentlich es ist auch die erste.

Die Mehrheit der funktionalen Programmiersprachen auf alles, was Sie nicht benötigen, um Lambda-Kalkül ‚lernen‘, was auch immer das bedeuten würde, ist Lambda-Kalkül irrsinnig minimal, können Sie ‚lernen‘ ihre Axiome in einem unter einer Stunde. Um zu wissen, die Ergebnisse daraus, wie der FixedPoint Satz, die Kirche-Rosser Satz et cetera zu funktionaler Programmierung nur irrelevant ist.

Auch Lambda-Abstraktionen werden oft als ‚Funktionen‘ gehalten, ich damit nicht einverstanden sind, sie Algorithmen sind, nicht funktioniert, ein kleiner Unterschied, die meisten funktionalen Sprachen "behandeln ihre Funktionen mehr in der Art und Weise der klassischen Mathematik tut.

Doch um zum Beispiel effektiv Haskell verwenden Sie bestimmen Systeme vom Typ , das ist unabhängig von Lambda-Kalkül, das System F-Typ-System zu verstehen, brauchen kann auf alle ‚Funktionen‘ angewandt wird und erfordert kein Lambda Abstraktionen überhaupt. Häufig in Mathematik sagen wir f: R ^ 2 -> R: f (x) = x ^ 2. Wir könnten gesagt haben: f (x) = x ^ 2 :: R -> R -> R. In der Tat, Haskell zu dieser Notation ziemlich nahe kommt

.

Lambda-Kalkül ist ein theoretischer Formalismus, Haskell Funktionen sind wirklich nicht mehr ‚Lambda-Abstraktionen‘ als f: f (x) = x ^ 2 wirklich, was Lambda macht Abstraktionen interessant ist, dass es uns ermöglicht, zu definieren, was normalerweise gesehen als ‚Konstanten‘ als ‚Funktionen‘, keine funktionale Sprache tut, dass wegen des enormen Rechenaufwand. Haskell und gleichermaßen ist nur eine eingeschränkte Form von System F der Typ-System auf Funktionen angewandt, wie im täglichen klassischen Mathematik verwendet. Funktionen in Haskell sind sicherlich nicht der anonyme formell symbolische Reduktions-Bewerber, wie sie in Lambda-Kalkül sind. Die meisten funktionalen Programmiersprachen sind nicht symbolisch Reduktion basierte Neuschreiben-Systeme. Lisps bis zu einem gewissen Grad, aber das ist ein Paradigma für sich und seine ‚Lambda-Schlüsselwort‘ wirklich nicht erfüllt es Lambda-Kalkül aufrufen.

Ich denke, die Verwendung von Lambda-Kalkül in Bezug auf der Programmierung in der Praxis ist, dass es ein ganz minimales System ist, die das Wesen der Abstraktion erfaßt (oder „anonymer Funktionen“ oder Schließungen, wenn man so will). Abgesehen davon glaube ich nicht es in der Regel wesentlich außer, wenn Sie Abstraktion selbst implementieren müssen (wie Tetha ( 114646 ) erwähnt).

ich vollständig auch mit Denis Bueno nicht einverstanden ( 114701 ), die sagt, dass es für die funktionale Programmierung wesentlich ist. Es ist durchaus möglich, zu definieren, verwenden oder eine funktionale Sprache ohne Lambda-Kalkül überhaupt zu verstehen. Um die Auswertung von Ausdrücken in funktionalen Sprachen (die, meiner Meinung nach, etwas widerspricht die Verwendung einer funktionalen Sprache) zu verstehen, werden Sie wahrscheinlich besser von Lernen über Termersetzungssystem sein werden.

ich mit denjenigen überein, die sie sagen, ist theoretisch möglich, funktionale Programmierung zu lernen, ohne die Lambda-Kalkül, aber das Lernen, was ist der Vorteil von nicht Lernen der Lambda-Kalkül? Es ist nicht so, wenn es eine große Investition von Zeit in Anspruch nimmt.

Wahrscheinlich wird es Ihnen helfen, die funktionale Programmierung besser zu verstehen. Aber selbst wenn dies nicht der Fall, es ist immer noch eine coole Sache wert Lernen. Der Y-Combinator ist eine Sache der Schönheit.

Wenn Sie nur einen Techniker und Programme schreiben zu wollen, Dinge zu tun, dann müssen Sie nicht wirklich Lambda-Kalkül, endliche Automaten, Kellerautomaten, reguläre Ausdrücke, kontextfreie Grammatik, diskrete Mathematik wissen, etc.

Wenn Sie aber die Neugier über die tieferen Geheimnisse haben diese Dinge zugrunde liegen, können Sie beginnen sich zu fragen, wie diese Fragen beantwortet werden könnten. Die Konzepte sind schön und werden Ihre Fantasie erweitern. Ich denke auch, sie, nebenbei bemerkt, macht einen besserer Praktiker.

Was hat mich süchtig war Minsky Buch Berechnung:. Endlichen und Unendlichen Maschinen

Das Lambda-Kalkül ist ein Rechenmodell, ebenso wie die Turingmaschine. Daher ist es sinnvoll, wenn Sie eine bestimmte Evaluator für eine Sprache auf der Grundlage dieses Modell implementieren müssen, aber in der Praxis, müssen Sie nur die Grundidee (uh. Platz Argument semantisch korrekt im Körper einer Funktion?) Und das ist über es.

Ein posible Weg Lambda-Kalkül zu lernen, ist

http://en.wikipedia.org/wiki/Lambda_Calculus

Oder, wenn Sie mehr wollen, hier ist mein Blog gewidmet Lambda-Kalkül und Sachen wie das

http://weblogs.manas.com.ar/lziliani/

Wie jedes Abstraktion von Berechnungen, mit Lambda-Kalkül man Sachen in den meisten Programmiersprachen verwendet modellieren kann, wie Subtyping. Weitere Informationen hierzu eines der besten Bücher mit praktischen Einsatz der Lambda-Kalkül in diesem Sinne ist

http://www.amazon.com/Types-Programming-Languages-Benjamin -Pierce / dp / 0262162091 / ref = sr_1_1? ie = UTF8 & s = Bücher & qid = 1222088714 & sr = 8-1

fand ich, dass das Lambda-Kalkül nützlich war für zu verstehen, wie die funktionale Programmierung auf einer tieferen Ebene gearbeitet. Vor allem, wie funktionale Sprachen zu implementieren.

Es hat es leichter gemacht für mich fortschrittliche Konzepte wie Typ-Systeme und Auswertungen Strategien (namentlich im Vergleich zu Call-by-Wert zum Beispiel Anruf) zu verstehen.

Ich glaube nicht, braucht man etwas über das Lambda-Kalkül zu wissen, grundlegende funktionale Programmiertechniken zu verwenden. Jedoch das Lambda-Kalkül zu verstehen, macht es einfacher, fortgeschrittene Programmier Theorie zu lernen .

Ich mag auch, dass zu erwähnen, wenn Sie etwas im Bereich des NLP tun, Lambda-Kalkül bei der Gründung eines massiven Körpers der Arbeit in der Zusammensetzung Semantik ist.

Die Vorteile für mich ist eine kompakte synergistische Programmierung. Stuff neigt horizontal mehr als vertikal zu fließen. Außerdem ist es sehr nützlich für das Prototyping einfache Algorithmen. Weiß nicht, ob ich es sein volles Potenzial verwende, aber ich finde es sehr nützlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top