Frage

Funktionale Sprachen sind gut, weil sie Fehler vermeiden, indem Zustand zu beseitigen, sondern auch, weil sie leicht für Sie automatisch parallelisiert werden können, ohne dass Sie über die Anzahl der Threads zu kümmern.

Als ein Win32-Entwickler allerdings kann ich Haskell für einige DLLs meiner Anwendung verwenden? Und wenn ich es tue, ist es ein echter Vorteil, dass automatisch für mich genommen werden würde? Wenn ja, was diesen Vorteil gibt mir, den Compiler?

Ist F # parallelisieren Funktionen, die Sie über mehrere Kerne und CPUs automatisch für Sie schreiben? Würden Sie jemals die Anzahl der Threads im Task-Manager Anstieg sehen?

Im Grunde ist meine Frage, wie kann ich mit Haskell in einer praktischen Art und Weise zu starten, und will ich wirklich einige Vorteile sehen, ob ich tun?

War es hilfreich?

Lösung

Es scheint, wie das Buch Real World Haskell ist genau das, was Sie suchen. Sie können es kostenlos online lesen:

http://book.realworldhaskell.org/

Andere Tipps

F # enthält keine magischen Feenstaub, die Funktionen aus unterschiedlichen CPUs oder Maschinen passieren. Was für F # / Haskell und andere funktionale Programmiersprachen tun, ist es einfacher für Sie Funktionen zu schreiben, die unabhängig von der Faden- oder CPU verarbeitet werden, können sie auf erstellt wurden.

Ich habe nicht richtig anfühlen hier einen Link zu einem Podcast veröffentlichen scheint, dass ich teilnehmen, ein wenig aus, aber in der Herding-Code Episode, in der wir mit Matt Podwysocki gesprochen fragten wir die gleiche Frage und er gab einige interessante Antworten. Es gibt auch viele gute Links zum Thema funktionalen Programmierung in dieser Episode. Ich fand einen Link Titel „ Warum Functional Programming Matters “ Das kann vorsehen, einige Antworten für Sie.

Das könnte auch interessant sein: " Real World Functional Programming "

Beispiele sind in F # und C #, aber die Theorie ist ziemlich allgemein. Von dem, was ich (pre-release) gelesen habe, ist es auf jeden Fall interessant, aber so weit ich denke, es mich wünschen macht mehr und mehr mit C # zu halten, Bibliotheken wie Parallel Extensions verwenden.

Du hast nicht erwähnt, aber ich gehe davon aus, dass Sie C ++ verwenden. Eine potenziell einfache Möglichkeit, in funktionalen zu bekommen, ist über C ++ / CLI F #. C ++ enthält „magischen Feenstaub“ (genannt IJW: Es funktioniert einfach), damit Sie in die und aus der verwalteten Code aufzurufen. Damit ist F # -Code ruft fast so einfach, wie es von C # ist.

Ich habe dies in einem Programm (Freeswitch) verwendet, die vollständig in C / C ++ geschrieben ist. Mit einem einzigen verwalteten C ++ / CLI (verwenden Sie den / clr-Schalter), es wechselt auf magische Weise in verwaltetem Code, und von dort kann ich gehen, um meine F # Plugins laden und ausführen. Um die Dinge noch einfacher für den Einsatz zu machen, kann F # statisch verknüpfen alle seine Abhängigkeiten, so müssen Sie nicht über die F # Runtime-Dateien bereitstellen. Eine andere Sache, die CLR-Code attraktiv macht, ist, dass Sie verwalteten Code übergeben können (Delegierten) in C-Code, und die Laufzeit automatisch eine Thunk für Sie.

Wenn Sie die Haskell Weg zu gehen, die Funktion, die Sie gesucht werden müssen, ist FFI: Foreign Function Interface. Aber ich glaube nicht, es gebe Ihnen das gleiche Maß an Integration als C ++ / CLI mit F #.

Ich bin derzeit Lernen Haskell mich, wenn Sie es zu lernen beginnen, es scheint nicht sehr interessant, weil die Lernerfahrung Nichts ist wie eine Sprache wie C # lernen, es ist eine ganz neue Welt, aber ich merkte, ich schreiben konnte sehr sehr komplexe Ausdrücke in nur wenigen Zeilen Code, wenn ich den Code zurückblickte es viel knapper war, war es klein und eng. Ich liebe es absolut! Sie können in der Tat reale Programme schreiben, die zu behaupten, dass sie kleiner, leichter zu werden, und sehr viel komplexer als in den meisten anderen Sprachen erlauben, ich stimme für Sie, es zu lernen !!

Viel Glück.

Da Sie Win32 und DLLs erwähnen, ich nehme an, Sie sind mit nicht verwalteten Code zu arbeiten. In diesem Fall wird GHC für Sie sehr gut funktionieren. Ende letztes Jahr schrieb ich a href einen DDE-Server unter Windows mit <= "http://www.starling-software.com/en/blog/tsac/2009/01/12.december-surprise-topic-haskell-ffi. html“rel =‚nofollow noreferrer‘> FFI zu den MS DDE-Bibliotheken zu sprechen, und überraschenderweise war es eine sehr angenehme Erfahrung (vor allem da ich bin ein Unix-Typ). Haskells FFI ist leistungsstark (auch unterstützt, beispielsweise Rückrufe in Haskell Funktionen aus C oder anderen Bibliotheken) und Typprüfung des Haskell, die beim Schreiben von Code C-Ebene ist wie ein Traum in Erfüllung gegangen.

Der letzte Punkt ist einer der wichtigsten Vorteile von Haskell: das Typsystem ist erstaunlich. Das heißt, es ist wie jedes leistungsfähiges Werkzeug; es braucht Zeit und Mühe, um guten Gebrauch davon zu machen.

Also ja, ist es möglich, kleine Stücke von Code in Haskell beginnen zu schreiben, die in den Rest des Codes verknüpfen (obwohl Sie finden es einfacher, mit kleinen Haskell-Programmen zu starten, die zu Ihrem anderen Code-Link), und es ist lohnt sich eine ganze Menge Zeit, um über diese Ausgaben zu lernen und es zu benutzen, wo immer Sie können. Sie können wie ich am Ende, ein ziemlich großes Projekt Planung eng mit Windows-Code integriert (in meinem Fall ein ausgeklügeltes Excel-Add-in) in Haskell.

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