F# vs IronPython: Wann ist eine bevorzugt, die andere?

Während die Sprachen F# und IronPython sind technisch unterschiedlich, es gibt große überschneidungen zwischen Ihre Nutzungsmöglichkeiten in meiner Meinung nach. Wann ist eine mehr anwendbar, als die anderen?

So weit es für mich Aussehen wie F# ist rechnerisch effizienter, während IronPython erbt eine bessere Bibliothek von Python. Ich bin glücklich, korrigiert werden.

Es ist ein etwas in Frage ist F#, IronPython/IronRuby als C# ist VB.NET? aber die meisten Antworten gibt es über die Sprache Paradigmen, anstatt Ihre tatsächliche Anwendbarkeit.

Bearbeiten: ich denke, ich sollte hinzufügen, ein bisschen mehr hintergrund. Ich habe gute Erfahrungen mit Python im Allgemeinen, und habe gerade gelernt F# nach ein paar zögerlichen funktionale Programmierung Schritte vor, vor allem in Erlang. Ich habe derzeit das Gefühl in der Lage, weiter zu verwenden, entweder Python oder F# in die Zukunft. Ich möchte entscheiden, welche ich verwenden soll und wo. Zum Beispiel:

  1. Python hat sehr gute Daten-Strukturen als Teil der standard-Bibliothek. Der andere Tag, ich brauchte ein äquivalent von Python heap - Modul und es ist nicht verfügbar in der standard-F#/.net-Bibliothek. Punkt für IronPython.
  2. F# verwendet werden können, zu bauen bequemer Bibliotheken, einfacher Zugriff von anderen .Net-Sprachen. Also für ein .Net, die Ihren Wohnsitz Bibliothek, die ich lieber F#.
  3. Cross-Plattform-Entwicklung. IronPython ist hier besser. F#/Mono verwendbar ist, ist eine viel kleinere Palette von Plattformen und F#/OCaml-Kompatibilität ist nicht leicht zu pflegen, vor allem in Bezug auf Bibliotheken.
  4. Die IronPython-interaktive shell scheint mir einfacher als der fsi. YMMV.

Also die Frage hinausläuft: gibt es irgendwelche Gründe, abgesehen von einer Präferenz von einem Paradigma zu einem anderen oder einige team-oder corporate-Einstellungen, das würde Sie pick F# anstatt IronPython oder Umgekehrt? Vorausgesetzt, Sie sind ebenso zuversichtlich, in beide? Oder sind Sie genau äquivalent für alle praktischen Zwecke?

Bearbeiten: Ok, Jungs, es sieht Sie haben beurteilt, dass dies eine dumme Frage, downvoting es und die Antworten. Aber es ist wenigstens ehrlich. Also bitte einfach nur ein Hinweis. Ist es unmöglich, zwischen den beiden zu unterscheiden, oder bin ich die Eingabe in einige geheime Tabu durch diese Frage? Wenn es aussieht wie ein troll kann jemand bitte informieren Sie mich?

  • Was bevorzugst du mehr (innerhalb der Grenzen Ihrer funktional-und politisch-Anforderungen)?
  • Ich glaube nicht, dass es eine dumme Frage, aber es ist eine bizarre one. Sie sind sehr verschiedene Sprachen zu entwickeln, wie auch als eher Nische zu, und ich erwarte nicht, dass mehr als ein paar Menschen auf dem Planeten andere, als Sie jemals hatte, diese Entscheidung zu treffen. Wer hatte wohl gerade ging das mit der Sprache besser vertraut mit.
  • Wenn Ihre Frage waren "ehrlich" Sie haben die Tatsache anerkannt, dass ich bereits widerlegt deinem ersten Punkt zweimal mit der Verweisung auf F#'s built-in Set Datenstruktur.
  • Blick. Sie haben nicht widerlegt, noch nichts. Ich habe gesagt, es gibt einen Unterschied zwischen einer Reihe und einer Warteschlange. Sie erwähnten gerade, dass F# Set nutzbar ist yest3erday, und Sie gab eine falsche beispielsweise der Nutzung, wo die Priorität ist für die Sortierung verwendet, das ist nicht der wichtigste Punkt. Dennoch, wenn Sie mich überzeugen kann oder andere davon zu überzeugen, Menschen auf die andere Frage, die F# Set Funktionen als eine Priorität werde ich die Modifikation hier.
  • danke. Das ist eigentlich eine gute Antwort.
  • noch nicht widerlegt, noch nichts. Ich habe gesagt, es gibt einen Unterschied zwischen einer Reihe und einer priority queue". Und ich habe gezeigt, dass der Unterschied unbedeutend ist, und Ihre Erklärung, warum mein benchmark war "falsch" ist falsch. Ich führte das Pferd zum Wasser, aber ich kann ihn nicht zwingen zu trinken...
  • Oh, um Gottes Willen. Ich sage nicht, dass es einen performance-Unterschied. Ich sage, dass das zwei verschiedene Dinge tun. Wenn Sie wollen, finden die vollständige Reihenfolge der Daten, dann ist Ihre beste option ist eine sortierte Liste. Wenn Sie möchten, eine ungeordnete Liste verwenden Sie dann set. Wenn Sie möchten, eine A* - Suche, dann müssen Sie eine Warteschlange Priorität. Wenn Sie fügen Sie alle Punkte in einer Datenstruktur dann knallen Sie alle von Ihnen, die Sie tun, Sortieren. Versuchen Sie eine sortierte Liste und du wirst sehen was ich meine.
  • In der Tat habe ich vor kurzem implementiert die A* - Algorithmus für ein Magazin-Artikel und verwendet die eingebaute Set als priority-queue. Ich dachte, Sie redeten über die Leistung, da Sie zitiert asymptotische Zeitkomplexität wie der Unterschied zwischen diesen abstrakten Datenstrukturen.

Schreibe einen Kommentar