Frage

1) Sind funktionale Sprachen für Web-Anwendungen geeignet Entwicklung?

2) Sind funktionale Sprachen geeignet für Unternehmen / ERP / CRM Art von Anwendungen?

War es hilfreich?

Lösung

Funktionale Sprachen der Art, die Sie beschreiben, sind Allzweck-Programmiersprachen, sind sie für alle Arten von Dingen, einschließlich Web-Anwendungen und Business-Anwendungen. (Ich benutze Haskell).

Wie gabor schon sagt, letztlich kommt es auf Bibliotheken. Scala verfügt über einen Web-Framework: Lift. Haskell hat happstack sowie 2100 4400 (in 2010 2012) Bibliotheken auf Hackage für alle Arten von thiings.

Es ist wirklich nicht so sehr eine Frage der Sprache, als der Basiswerkzeuge, wenn man bedenkt, insbesondere Fachgebiete.

Andere Tipps

Funktionale Sprachen für etwas gut sind, würden Sie gerne um sie für die.

Doch die Entwicklung von Anwendungen in diesen Tagen sind nicht so einfach, eine Programmiersprache wie verwenden. Der Vorteil von Java, C #, usw. ist, dass sie mit großen Bibliotheken und anderer Umgebung Feinheiten kommen, die unbedingt erforderlich sind, wenn Sie Business-Software zu bauen. Die meisten funktionalen Sprachen haben nicht diese große Unterstützung (noch?).

F # könnte vielversprechend sein, da es in der .NET-Umgebung ist und dort zur Verfügung Vorteile der Werkzeuge nutzen (korrigieren Sie mich, wenn ich falsch liege).

Die Artikel beschreibt, wie Lisp, eine frühe funktionelle Sprache, verwendet wurde, um eine Bahn zu schaffen basierte Anwendung erfolgreich.

Funktionale Sprachen sind gut geeignet für die Entwicklung von Webanwendungen, Scala insbesondere.

Haben Sie einen Blick auf die Rahmen für weitere Informationen Heben .

  

2) Sind funktionale Sprachen geeignet für Business / ERP / CRM Art von Anwendungen?

den zweiten Punkt über Business / ERP / CRM-Anwendungen zu adressieren: ich persönlich würde nicht diese Umsetzung in einer „reinen“ funktionalen Sprache wie Haskell oder eine dynamische funktionale Sprache wie Clojure. Auf der anderen Seite, I am zur Zeit ein ERP in Scala Umsetzung, die natürlich ist hybrid OOP / FP und statisch kompilierte.

Der Grund, warum ich das sage ist, dass ein Unternehmen App wie ein ERP grundsätzlich Rekordorientiert ist: Es ist ein Datenschema die verschiedenen Datensatztypen und die App-Logik ausdrückt, wird dann fast vollständig um entworfen, um jene Datensätze CRUDing und Anwenden von benutzerdefinierten Business-Workflows zu ihnen. Und im Grunde, ich glaube nicht, dass diese Art von datenzentrierten Business-Anwendungen eine gute Passform für das Funktionsmodell ist.

Die Leute können über die OOP-relationalen Mismatch sprechen alles, was sie wollen, aber letztlich beide OOP und Datenbanken sind Rekord orientiert: eine OOP-Sprache mit einem guten ORM können Sie diese unterschiedlichen Datenmodelle in Ihren Code Karte und dann den Code anhängen zu handhaben jedes der Modelle. Und da diese statisch typisierte (idealerweise mit einem stark typisierte ORM wie Scala squeryl) reduziert massiv die Chancen auf einen Laufzeitfehler oder z.B. eine Änderung an einem der Datenmodelle nicht ordnungsgemäß durch den Code angewendet werden.

Sie mich nicht falsch - ich ein großer Fan von FP bin (ich bin mehr und mehr meiner Systeme Programmierung in Haskell zu tun), aber für mich den satzorientierte Ansatz der OOP macht mehr Sinn als die Funktion -orientierten Ansatz von FP für die Datenobjekte eines Unternehmens ERP oder ähnliches Gerangel. (Scala ist eine schöne Ausnahme von der Regel, weil Sie das OOP Paradigma mit Qualität ORMs die Ordnung halbe Manipulation zu verwenden, aber auch die FP Güte für Ihre allgemeine App-Programmierung.)

  1. Ja, Stickstoff ist ein gutes Beispiel für einen funktionalen Web-Framework. Er skaliert auch.

http://nitrogenproject.com/

Yaws ist ein fantastischer Web-Server für Erlang.

Während ich nicht, dass irgendwelche besonderen funktionalen Sprachen sind dafür Web-Entwicklung zugeschnitten sagen würde, würde ich auch nicht sagen, dass Sie nicht Web-Entwicklung mit einer funktionalen Sprache tun können. Ich denke, dass hängt ganz von welcher Web-Frameworks können Sie für die Sprache verfügbar sein wählen oder nicht und ob es irgendwelche Web-Server, die die Sprache unterstützt.

Zum Beispiel, ich bin sicher, dass Sie F # zusammen mit ASP.Net auf IIS-Web-Entwicklung zu tun, verwenden können. Ich bezweifle, gibt es Unterstützung für F # in der Template-Engine, aber man kann auf jeden Fall der Geschäftslogik in F # schreiben.

In ähnlicher Weise ist es mod_haskell für Apache, die es relativ einfach machen sollten dynamische Ausgabe mit Haskell zu haben. Obwohl, ich habe nie persönlich daran gewöhnt. Zur gleichen Zeit, wenn ein mod_(erlang or scala) für Apache da ist, wäre es für diese Sprachen ähnlich einfach sein.

Letztendlich denke ich, dass die staatenlos Natur der funktionalen Sprachen ist für einen staatenlos, MVC-Stil Web-Framework es gut geeignet machen. Aber ich denke, es kommt darauf an, was wirklich Tools und Frameworks zur Verfügung um Ihr Leben leichter machen, wenn sie mit diesen Sprachen arbeiten. Zum Beispiel war Rubin nicht wirklich beliebt für Web-Entwicklung bis Schiene beliebt bekam, und ich habe wirklich nicht wie alles webby mit Python zu tun, bis ich django gefunden.

Funktionale Sprachen bieten neue Arten von Abstraktionen, die für Web-Entwicklung verwendet werden können. Fortsetzung basierte Web-Server sind zum Beispiel populär unter funktionalen Sprachen. Der PLT Scheme Webserver diese Art von Web-Anwendungsentwicklung unterstützt. Sie können mehr über Fortsetzungen und ihre Verwendung in der Web-Entwicklung auf wikipedia

lesen

Die meisten funktionalen Sprachen, nämlich die, die Sie enthalten, sind für allgemeine Zwecke Sprachen betrachtet. Für Web-Entwicklung, würde ich tief betrachten Clojure oder Scala verwenden. Sie haben beide sehr gutes Web-Frameworks, und sie beide auf der JVM ausgeführt werden. Ich kann total empfehlen Clojure und Scala, aber nicht so viel für die andere.

Haskell hat einen Web-Framework, aber ich habe es nie benutzt.

Business-Anwendungen? Sicher warum nicht. Funktionale Sprachen sind für so ziemlich alles.

Einer der größten Vorteile von den Befürwortern der funktionalen Sprachen beansprucht ist, dass sie es leichter schreiben Programme machen, die parallel ausgeführt werden können. Aber Web-Anwendungen haben in der Regel keine Probleme mit Parallelität. Typischerweise hält der Web-Server / Anwendungsserver einen Pool von Threads, und jede Benutzeranforderung wird einen anderen Thread zugeordnet, die auf einem anderen physikalischen Prozessor ausgeführt werden können. So können Sie die Vorteile von mehreren Prozessoren nutzen, ohne zu viel Mühe. Der Trick ist, dass Web-Anwendungen durch eine große Anzahl von kleinen Anfragen gekennzeichnet sind, und Threads und imperative Sprachen gut dort arbeiten. Wo imperative Sprachen zu brechen beginnen, wenn Sie eine kleine Anzahl von rechenintensive Anfragen haben.

Ein weiterer großer Vorteil der funktionalen Sprachen ist, dass da Funktionen keine Nebenwirkungen haben, ist das Testen einfacher. Sie testen jede Funktion einzeln über ein paar seiner Eingänge, und Sie wissen das System einwandfrei funktioniert. Aber da ist ein Fang. Wenn Ihr Betrieb Ein- oder Ausgang handelt, verwenden Sie eine Monade eher als eine Funktion, und Sie verlieren diese Testbarkeit Nutzen für den Teil des Codes.

Aber, beinhaltet typischerweise Webanwendungen Informationen aus einer Anfrage zu lesen, Anfragen an eine Datenbank zu machen, die Antwort von der Datenbank zu lesen und eine Antwort zu formatieren. Das ist viel, viel IO oder Monaden, und nur sehr wenig Gelegenheit für Funktionen.

diese Eigenschaften von Web-Anwendungen gegeben, welche Vorteile funktionale Sprachen bringen, um Web Application Programming?

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