IronPython vs. C # für kleine Projekte

8

Ich benutze Python derzeit für die meisten meiner Programmierprojekte (hauptsächlich schnelle Entwicklung von kleinen Programmen und Prototypen). Ich würde gerne Zeit in das Erlernen einer Sprache investieren, die mir die Flexibilität gibt, verschiedene Microsoft-Tools und APIs zu nutzen, wann immer sich die Gelegenheit ergibt. Ich versuche mich zwischen IronPython und C # zu entscheiden. Da Python (vor allem wegen seiner Prägnanz und sauberen Syntax) meine bevorzugte Programmiersprache ist, klingt IronPython wie die ideale Option. Aber nachdem ich etwas darüber gelesen habe, habe ich einige Fragen.

Für diejenigen unter Ihnen, die IronPython verwendet haben, wird es immer unklar, wo klassische Python endet und .NET beginnt? Zum Beispiel scheint es eine erhebliche Überlappung in der Funktionalität zwischen den .NET-Bibliotheken und der Python-Standardbibliothek zu geben. Wenn ich also Zeichenfolgenoperationen durchführen oder XML analysieren muss, weiß ich nicht, welche Bibliothek ich verwenden soll. Außerdem bin ich unklar, wann ich Python gegen .NET Datentypen in meinem Code verwenden soll. Zum Beispiel, welche der folgenden würde ich in meinem Code verwenden?

%Vor%

oder

%Vor%

(Übrigens scheint es, dass wenn ich viele Dinge wie das letztere mache, könnte ich etwas an Prägnanz verlieren, weshalb ich Python an erster Stelle bevorzuge.)

Ein weiteres Problem ist, dass eine Reihe von Microsoft-Entwicklertools wie .NET CF und Xbox XNA in IronPython nicht verfügbar sind. Gibt es mehr Situationen, in denen IronPython nicht die volle Reichweite von C # bietet?

    
RexE 30.01.2009, 23:59
quelle

2 Antworten

11

Ich habe eine groß angelegte Anwendung in IronPython erstellt, die an C # gebunden ist.

Es ist fast vollständig nahtlos. Die einzigen Dinge, die in IronPython vom wahren "Python" -Effekt fehlen, sind die C-basierten Bibliotheken (müssen .NET für diese verwenden) und IDLE.

Die Sprache interagiert mit anderen .NET-Sprachen wie ein Traum ... Insbesondere wenn Sie den Interpreter einbetten und Variablen durch Referenz binden.

Übrigens wird in IronPython ein Hash deklariert:

%Vor%

Beachten Sie, dass es sich tatsächlich um ein IronPython.Dict-Objekt und nicht um ein C # -Wörterbuch handelt. Das heißt, die Konvertierungen arbeiten oft unsichtbar, wenn Sie sie an eine .NET-Klasse übergeben. Wenn Sie explizit konvertieren müssen, gibt es eingebaute Funktionen, die das problemlos tun.

Alles in allem eine großartige Sprache für die Verwendung mit .NET, wenn Sie Grund dazu haben.

Nur ein Wort des Rates: Vermeiden Sie die Visual Studio IronPython IDE wie die Pest. Ich habe festgestellt, dass die automatischen Zeilenvervollständigungen beim Einrücken zwischen Leerstellen und Tabs verschärft wurden. Nun - das ist ein schwer zu verfolgender Fehler, der in den Code eingefügt wurde.

    
user54650 31.01.2009, 01:15
quelle
3

Ich würde vorschlagen, einen Blick auf Boo [ Ссылка , eine .NET-basierte Sprache mit einer von Python inspirierten Syntax, die aber die gesamte .NET 3.5-Funktionalität bietet.

IronPython eignet sich hervorragend für die Verwendung von .NET-zentrischen Bibliotheken - es eignet sich jedoch nicht gut dafür zu erstellen , da Unterschiede in der Schreibweise der Sprachen bestehen. Da Boo inferenzbasierte Typisierung zur Kompilierungszeit ausführt, außer wenn die Entschlüsselung explizit angefordert wird (oder ein bestimmter Typ vom Benutzer angegeben wird), können Sie .NET-zentrierte Bibliotheken erstellen, die aus C # (und anderen Sprachen) Code leicht verwendbar sind. Für welche IronPython ist nicht geeignet; Da es zur Laufzeit auch weniger Introspektion benötigt, kompiliert Boo zu schnellerem Code.

    
Charles Duffy 31.01.2009 02:17
quelle

Tags und Links