Frage

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

War es hilfreich?

Lösung

Viele von ihnen sind relativ neue Entwicklungen in der Programmiersprache Welt. Dies ist etwas, das man in F # sehen wird, dass Sie nicht in Lisp, insbesondere Common Lisp, weil die F # Standard noch in der Entwicklung ist. Als Ergebnis, werden Sie es ist ein ziemlich viel zu lernen, zu finden. Natürlich Dinge wie ADT, Pattern-Matching, Monaden und currying als Bibliothek in Lisp gebaut werden können, aber es ist schöner, zu lernen, wie sie in einer Sprache zu verwenden, wo sie bequem eingebaut sind.

Der größte Vorteil des Lernens F # für reale Nutzung ist die Integration mit .NET.

Andere Tipps

Lisp Vergleicht man direkt zu F # ist nicht wirklich fair, denn am Ende des Tages mit genug Zeit, die Sie die gleiche Anwendung in jeder Sprache schreiben können.

Allerdings sollten Sie Fis aus den gleichen Gründen lernen, die ein C # oder Java Entwickler sollte es lernen - weil es auf der .NET-Plattform die funktionale Programmierung ermöglicht. Ich bin nicht 100% vertraut mit Lisp, aber ich nehme es, dass einige der gleichen Probleme wie OCaml hat es nicht stellar Bibliothek Unterstützung. Wie Sie Datenbankzugriff in Lisp tun? Was ist High-Performance-Grafik?

Wenn Sie mehr erfahren möchten über ‚Warum .NET‘, lesen Sie in diesem SO Frage .

Wenn Sie F # und Lisp wissen, würden Sie diese eine ziemlich seltsame Frage finden zu fragen.

Wie andere haben darauf hingewiesen, ist Lisp dynamisch typisierte . Noch wichtiger ist, ist die einzigartige Eigenschaft von Lisp, dass es homoiconic: Lisp-Code ist ein Grundtyp Lisp Daten (eine Liste). Das Makrosystem nutzt, dass, indem sie dich Code schreiben, die zum Zeitpunkt der Kompilierung ausführt und modifizieren anderen Code .

F # hat nichts davon - es ist eine statisch typisierte Sprache, die viele Ideen von ML und Haskell leiht, und führt es auf .NET

Was Sie fragen, ist verwandt mit „Warum muß ich lernen, einen Löffel zu benutzen, wenn ich weiß, wie eine Gabel benutzen?“

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

Wenn ich von Lisp zu F # Schalt wurde, wäre es nur, weil ich eine neue Aufgabe auf meinen Händen hatte, die enorm von einer .NET-Bibliothek nur profitierte.

Aber ich weiß nicht, also bin ich nicht.

Geld. F # -Code ist bereits wertvoller als Lisp-Code und diese Lücke wird verbreitert sehr schnell als F # weit verbreitete Annahme sieht.

Mit anderen Worten, Sie haben eine viel bessere Chance auf ein stabiles Einkommen mit F # verdient als Lisp verwendet wird.

Cheers, Jon Harrop.

F # ist eine ganz andere Sprache im Vergleich zu den meisten Lisp Dialekte. So F # gibt Ihnen einen ganz anderen Winkel der Programmierung - einen Winkel, die Sie nicht von Lisp lernen. Die meisten Lisp Dialekte sind am besten für inkrementelle, interaktive Entwicklung von symbolischer Software verwendet. Zur gleichen Zeit der meist Lisp Dialekte sind nicht funktionalen Programmiersprachen, sondern eher wie Multi-Paradigma Spricht - mit unterschiedlichen Dialekten verschiedenes Gewicht Platzierung auf der Unterstützung der FPL-Features (frei von Nebenwirkungen, unveränderliche Datenstrukturen, algebraische Datentypen, ...). So sind die meisten Lisp Dialekte entweder keine statische Typisierung oder nicht viel Wert darauf legen.

Wenn Sie also etwas Lisp-Dialekt kennen, dann lernen F # sehr viel Sinn machen kann. Nur nicht denken, dass viel von Ihrer Lisp Wissen zu F # gilt, da F # eine ganz andere Sprache. So viel wie eine imperative Programmierung verwendet, um C oder Java einige Ideen zu verlernen braucht, wenn Lisp zu lernen, braucht man auch Lisp Gewohnheiten (keine Typen, Nebenwirkungen, Makros, ...) bei der Verwendung von F # verlernen. F # ist auch angetrieben von Microsoft und die Vorteile der .NET Framework unter.

F # hat den Vorteil, dass .NET Entwicklung (im Allgemeinen) ist sehr allgemein angenommen, leicht verfügbar und mehr Massenmarkt.

Wenn Sie F # codieren möchten, können Sie Visual Studio bekommen, die viele Entwickler bereits ... im Gegensatz zu bekommen die LISP-Umgebung und läuft.

Darüber hinaus bestehende .NET-Entwickler sind viel eher als LISP bei F # sehen, ob das etwas für Dich bedeutet.

(Dies ist von einem .NET-Entwickler kommen, die codiert und geliebt, LISP, während in der Schule).

Ich bin mir nicht sicher, ob Sie es? Wenn Sie F # interessant finden, das wäre ein Grund sein. Wenn Sie erfordert es funktioniert, wäre es ein Grund sein. Wenn Sie denken, es würde Sie produktiver machen oder Ihnen Mehrwert über die derzeitigen Kenntnisstand bringen, das wäre ein Grund sein.

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

Wenn die Frage auf der anderen Seite ist das, was F # gibt, dass Lisp nicht, dann Typinferenz, Pattern-Matching und die Integration mit dem Rest des .NET-Framework berücksichtigt werden soll.

Ich weiß, dieser Thread ist alt, aber da ich auf diesen einen stolperte ich wollte nur meine Gründe kommentieren. Ich lerne, F # einfach für berufliche Chancen, da .NET viel Gewicht in einer Kategorie von Unternehmen trägt, die mein Feld beherrschen. Das funktionale Paradigma hat unter mehr quantitativ und Daten orientierten Unternehmen im Einsatz gewachsen und ich möchte einer der frühen Ankömmlinge auf diesen Trend sein. Momentan gibt keine starke funktionale Sprache existiert, die vollständig und sicher mit der .NET-Bibliothek integriert. Ich habe versucht, tatsächlich in den Hafen einige .NET von Lisp-Code und es ist wirklich ein Schmerz b / c der FFI unterstützt nur C-Primitiven und .NET-Interoperabilität erfordert eine ‚Schnittstelle‘ konstruieren und auch wenn ich weiß, wie das ist es wirklich eine riesige in C zu tun Schmerzen. Es wäre wirklich, wirklich, gut, wenn Lisp die extra Meile ging es neben Standard ist und eine C ++ Klasse erforderlich (einschließlich virtuellen Funktionen w / vtables) und ein C # Stil Interface-Typ in seiner FFI. Vielleicht wirft auch in einem zu Schnittstelle Stil Typ Java. Dies würde ein vollständige Interoperabilität mit .NET-Bibliothek ermöglichen und Lisp einen starken Anwärter als Groß Sprache machen. Doch mit dieser sagte, von einem Lisp Hintergrund kommt F # ziemlich leicht gemacht Lernen. Und Ich mag, wie F # hat die extra Meile gegangen Typen zur Verfügung zu stellen, dass Sie es häufig quantitative Art der Arbeit sehen würde. Ich glaube, F # mit mathematischen Arbeit im Verstand geschaffen wurde und das an sich hat einen Wert über Lisp.

Eine Möglichkeit, auf diese (die ursprüngliche Frage) zu sehen ist, die Sprache (und die zugehörigen Tools und Plattformen) auf die unmittelbare Aufgabe zusammenpassen. Wenn die Aufgabe einen überwältigenden Anteil von .NET-Code erfordert, und würde es erfordern weniger Schuh-Horning in einer Sprache, als eine andere Aufgabe frontal zu treffen, dann nehmen Sie den Weg des geringsten Widerstandes (F #). Wenn Sie nicht .NET-Funktionen benötigen, und Sie sind ein komfortables Arbeiten mit Lisp und es gibt keine Arm-Biege von ihm weg zu bewegen, halten Sie es.

Nicht wirklich viel anders als mit einem Hammer mit einem Schraubenschlüssel zu vergleichen. Wählen Sie das Werkzeug, das die Arbeit am effektivsten paßt. Der Versuch, ein Werkzeug zu holen, die objektiv „beste“ ist, ist Unsinn. Und in jedem Fall, in 20 Jahren alle aktuell „hot“ Sprachen könnte ohnehin veraltet sein.

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