Wenn Sie LISP bereits kennen, warum sollten Sie auch F # lernen?

7

Was ist der Mehrwert für das Lernen von F #, wenn Sie bereits mit LISP vertraut sind?

    
Michiel Borkent 24.09.2008, 12:22
quelle

11 Antworten

19

Viele davon sind relativ neue Entwicklungen in der Welt der Programmiersprache. Dies ist etwas, was Sie in F # sehen, das Sie nicht in Lisp sehen werden, besonders Common Lisp, weil der F # -Standard noch in Entwicklung ist. Als Ergebnis wirst du feststellen, dass es ziemlich viel zu lernen gibt. Natürlich können Dinge wie ADTs, Pattern-Matching, Monaden und Currying als Bibliothek in Lisp erstellt werden, aber es ist schöner zu lernen, wie man sie in einer Sprache verwendet, in der sie einfach eingebaut sind.

Der größte Vorteil beim Erlernen von F # für den realen Einsatz ist die Integration mit .NET.

    
Nathan Shively-Sanders 24.09.2008, 19:41
quelle
6

Lisp direkt mit F # zu vergleichen ist nicht wirklich fair, denn am Ende des Tages mit genügend Zeit könnte man die gleiche App in jeder Sprache schreiben.

Sie sollten F # jedoch aus den gleichen Gründen lernen, wie ein C # - oder Java-Entwickler es lernen sollte - weil es eine funktionale Programmierung auf der .NET-Plattform ermöglicht. Ich bin nicht 100% vertraut mit Lisp, aber ich nehme an, dass es einige der gleichen Probleme wie OCaml hat, da es keine Unterstützung für stellare Bibliotheken gibt. Wie machen Sie Datenbankzugriff in Lisp? Was ist mit leistungsstarken Grafiken?

Wenn Sie mehr über 'Why .NET' erfahren möchten, lesen Sie diese SO-Frage .

    
Chris Smith 24.09.2008 16:45
quelle
6

Wenn du F # und Lisp wüsstest, würdest du das als seltsame Frage empfinden.

Wie bereits erwähnt, wird Lisp dynamisch typisiert . Noch wichtiger ist, dass das einzigartige Merkmal von Lisp darin besteht, dass es homoikonisch ist: Lisp-Code ist ein grundlegender Lisp-Datentyp (eine Liste). Das Makrosystem nutzt dies, indem es Ihnen ermöglicht, Code zu schreiben, der zur Kompilierungszeit ausgeführt wird und anderen Code ändert .

F # hat nichts dergleichen - es ist eine statisch getippte Sprache, die viele Ideen von ML und Haskell entlehnt und sie auf .NET ausführt.

Was Sie fragen, ist ähnlich wie "Warum muss ich lernen, einen Löffel zu benutzen, wenn ich weiß, wie man eine Gabel benutzt?"

    
Andrey Fedorov 25.02.2009 21:28
quelle
5

Da LISP dynamisch typisiert ist und F # statisch typisiert ist, finde ich solche Vergleiche seltsam.

    
sanxiyn 24.09.2008 12:28
quelle
3

Wenn ich von Lisp zu F # wechseln würde, dann nur deshalb, weil ich eine Aufgabe in meinen Händen hatte, die von einer .NET-only-Bibliothek enorm profitiert.

Aber ich nicht, also bin ich nicht.

    
Matthias Benkard 24.09.2008 12:29
quelle
3

Geld. F # -Code ist bereits wertvoller als Lisp-Code, und diese Lücke wird sich sehr schnell erweitern, da F # weitverbreitet angenommen wird.

Mit anderen Worten, Sie haben eine viel bessere Chance, mit F # ein stabiles Einkommen zu verdienen als mit Lisp.

Prost, Jon Harrop.

    
Jon Harrop 19.10.2008 04:17
quelle
3

F # ist eine sehr unterschiedliche Sprache im Vergleich zu den meisten Lisp-Dialekten. F # gibt Ihnen einen ganz anderen Programmierwinkel - einen Winkel, den Sie nicht von Lisp lernen. Die meisten Lisp-Dialekte werden am besten für die inkrementelle, interaktive Entwicklung von symbolischer Software verwendet. Gleichzeitig sind die meisten Lisp-Dialekte keine funktionalen Programmiersprachen, sondern eher multiparadigmatische Sprachen - mit unterschiedlichen Dialekten, die die Unterstützung von FPL-Funktionen unterschiedlich belasten (frei von Nebenwirkungen, unveränderlichen Datenstrukturen, algebraischen Datentypen, ...). Daher fehlt den meisten Lisp-Dialekten entweder die statische Typisierung oder es wird nicht viel Wert darauf gelegt.

Wenn Sie also einen Lisp-Dialekt kennen, kann das Lernen von F # sehr sinnvoll sein. Denken Sie nur nicht daran, dass ein Großteil Ihres Lisp-Wissens auf F # zutrifft, da F # eine ganz andere Sprache ist. So wie eine imperative Programmierung, die für C oder Java verwendet wird, einige Ideen verlernen muss, wenn man Lisp lernt, muss man auch Lisp-Gewohnheiten (keine Typen, Nebenwirkungen, Makros, ...) verlernen, wenn man F # benutzt. F # wird auch von Microsoft betrieben und nutzt das .net-Framework.

    
Rainer Joswig 25.02.2009 21:19
quelle
2

F # hat den Vorteil, dass die .NET-Entwicklung (im Allgemeinen) sehr weit verbreitet ist, leicht verfügbar ist und einen größeren Massenmarkt bietet.

Wenn Sie F # codieren wollen, können Sie Visual Studio bekommen, was viele Entwickler bereits haben ... im Gegensatz dazu, die LISP-Umgebung zum Laufen zu bringen.

Darüber hinaus sehen bestehende .NET-Entwickler viel eher F # als LISP, wenn Ihnen das etwas bedeutet.

(Dies kommt von einem .NET-Entwickler, der während des Studiums LISP programmiert und geliebt hat.)

    
pearcewg 25.02.2009 21:34
quelle
1

Ich bin mir nicht sicher, ob du es würdest? Wenn Sie F # interessant finden, wäre das ein Grund. Wenn Sie arbeiten, erfordert es, es wäre ein Grund. Wenn Sie denken, dass Sie dadurch produktiver werden oder Ihnen einen Mehrwert gegenüber Ihrem derzeitigen Wissen verschaffen, wäre das ein Grund.

Aber wenn Sie F # nicht interessant finden, Ihre Arbeit erfordert es nicht und Sie denken nicht, dass es Sie produktiver machen oder Ihnen einen Mehrwert bringen würde, warum sollten Sie dann?

Wenn die Frage auf der anderen Seite ist, was F # dem Lisp nicht gibt, dann sollten Inferenz, Mustervergleich und Integration mit dem Rest des .NET-Frameworks berücksichtigt werden.

    
mlarsen 24.09.2008 19:56
quelle
0

Ich weiß, dass dieser Thread alt ist, aber seit ich auf diesen gestoßen bin, wollte ich nur meine Gründe kommentieren. Ich lerne F # einfach für berufliche Gelegenheiten, da .NET in einer Kategorie von Unternehmen, die mein Gebiet beherrschen, eine große Rolle spielt. Das funktionale Paradigma wird zunehmend bei quantitativ und datenorientierten Unternehmen eingesetzt, und ich möchte einer der ersten Teilnehmer dieses Trends sein. Gegenwärtig gibt es keine starke funktionale Sprache, die vollständig und sicher in die .NET-Bibliothek integriert ist. Ich habe versucht, etwas .NET aus Lisp-Code zu portieren und es ist wirklich ein Schmerz b / c das FFI unterstützt nur C-Primitive und .NET-Interoperabilität erfordert ein "Interface" -Konstrukt und obwohl ich weiß, wie man das in C macht, ist es wirklich riesig Schmerzen. Es wäre wirklich, wirklich, gut, wenn Lisp die Extrameile in seinem nächsten Standard ging und eine C ++ - Klasse (einschließlich virtueller Funktionen w / vtables) und eine C # Art Schnittstelle in seinem FFI verlangte. Vielleicht werfen Sie auch einen Java-Interface-Style ein. Dies würde eine vollständige Interoperabilität mit der .NET-Bibliothek ermöglichen und Lisp zu einem starken Anwärter auf eine große Sprache machen. Wie dem auch sei, von einem Lisp-Hintergrund ausgehend, machte das Lernen von F # ziemlich einfach. Und ich mag, wie F # die Extra-Meile gegangen ist, um Typen zur Verfügung zu stellen, die Sie es häufig als quantitative Art Arbeit sehen würden. Ich glaube, dass F # mit mathematischer Arbeit erstellt wurde und das an sich Wert gegenüber Lisp hat.

    
user922475 12.01.2012 20:17
quelle
0

Eine Möglichkeit, dies zu betrachten (die ursprüngliche Frage), besteht darin, die Sprache (und damit verbundene Werkzeuge und Plattformen) der unmittelbaren Aufgabe anzupassen. Wenn die Aufgabe einen überwältigenden Prozentsatz an .NET-Code erfordert und weniger Schuh-Horning in einer Sprache als ein anderer erfordert, um die Aufgabe direkt zu erfüllen, dann nimm den Weg des geringsten Widerstands (F #). Wenn Sie keine .NET-Funktionen benötigen und mit LISP arbeiten können, ohne dass Sie sich von ihm wegbewegen müssen, verwenden Sie es weiterhin.

Nicht wirklich viel anders als ein Hammer mit einem Schraubenschlüssel zu vergleichen. Wählen Sie das Werkzeug aus, das am besten zu Ihrem Job passt. Der Versuch, ein objektiv objektiv "bestes" Werkzeug auszuwählen, ist Unsinn. Und in jedem Fall könnten in 20 Jahren alle derzeit "heißen" Sprachen sowieso veraltet sein.

    
Skatterbrainz 16.03.2015 02:22
quelle

Tags und Links