Sollten Sie C # und F # zusammen verwenden

16

Ich weiß, dass Sie C # und F # zusammen in demselben Projekt verwenden können, bin mir jedoch nicht sicher, ob dies eine gute Idee ist.

Es scheint mir, dass das Mischen von zwei sehr unterschiedlichen Codierungsstilen (funktional gegenüber OOP) zu einem Mangel an Kohäsion im Design führen kann. Ist das richtig?

Tom Squires
quelle
1
Wie können Sie sie im selben Projekt verwenden? Meinen Sie die gleiche Lösung?
Bryan Boettcher
2
Nicht die Microsoft-Definition des Projekts, sondern die allgemeinere Definition
Tom Squires
Ein offensichtlicher Nachteil ist, dass, wenn mindestens ein Teil der Arbeit am Projekt erfordert, dass der Entwickler mit beiden Abschnitten in C # und F # interagiert (auch um sie nur zu lesen), diese Teile einen Entwickler benötigen, der sich in beiden Sprachen auskennt, und es gibt weniger von ihnen als diejenigen, die sich in nur einer Sprache auskennen, und daher sind sie schwerer zu finden, möglicherweise teurer und es gibt weniger Abwechslung von ihnen (in diesem speziellen Fall ist es jedoch wahrscheinlich, dass die meisten F # -Entwickler zumindest auch mit C # vertraut sind). .
1.
absolut. Beispiel: Die schrittweise Einführung von F # in eine ältere C # -Lösung ist ein gültiges Szenario.
KolA

Antworten:

23

Es ist nichts Falsches daran, Sprachen in einem Produkt zu mischen, solange man sie richtig einsetzt und sie "gut zusammenspielen".

Wenn es einen Teil Ihres Projekts gibt, der am besten mit einer funktionalen Sprache codiert werden kann, ist es sinnvoll, ihn in F # zu codieren. Ähnliches gilt für C #.

Was (bestenfalls) sinnlos wäre, wäre, Sprachen zu mischen.

ChrisF
quelle
0

Es scheint mir, dass das Mischen von zwei sehr unterschiedlichen Codierungsstilen (funktional gegenüber OO) zu einem Mangel an Kohäsion im Design führen kann. Ist das korrekt?

Ich glaube nicht, dass Sie einen "Mangel an Zusammenhalt" bekommen. Jede Sprache hat Stärken und Schwächen. Wenn Sie sie in einer gemeinsamen Laufzeit kombinieren, können Sie dem Besten aus beiden Welten näher kommen. Mit C # und F # möchten Sie nur sicherstellen, dass Sie die Schnittmenge der beiden Sprachen an der Schnittstelle zwischen den beiden Sprachen in Ihrer Lösung verwenden.

Jon Harrop
quelle
0

Ja, ich stimme ChrisF zu . Auch C # enthält derzeit bereits F # -Prinzipien, z. B. anonyme Typen:

var unitanon = new[]
{
    new { Field1="new car", Field2 = 1},
    new { Field1="old car", Field2 = 20} 
};

Das heißt, ich persönlich denke, es ist ein Schritt zurück in die Code-Lesbarkeit, obwohl es sehr praktisch ist.

PaulDezember
quelle
2
Anonyme Typen sind eigentlich kein F # -Prinzip. Vielleicht möchten Sie sich auf die Typinferenz beziehen (was das Schlüsselwort var in C # bewirkt), wobei der Compiler errät, auf welchen Typ Sie sich beziehen. Dies wird in F # verwendet.
Mongus Pong
1
Ich würde F # für die einfachen asynchronen Fähigkeiten benutzen. Die TPL hat es jedoch ziemlich einfach gemacht, dies in C # selbst zu tun. Wenn Sie jedoch eine Sprache für die Skripterstellung einbetten würden, würde ich definitiv F # zum Parsen verwenden.
Jetti