Frage

Ich bin daran interessiert, trinken Sie einige moderne dynamische Sprache, die koolaid, so habe ich geglaubt, dass all das Zeug an Michael Foord ' s blog und die podcasts, die ich gekauft habe sein Buch (und Lesen), und ich fügte hinzu, ein eingebettetes IPy Laufzeit zu einem großen vorhandene app vor einem Jahr oder so (aber das war für jemand anderes, und ich wusste wirklich nicht, verwenden Sie es mir).

Jetzt brauche ich zu tun, einige ziemlich einfache code-Generierung Sachen, wo ich bin, rufen ein paar der Methoden auf ein paar .net-Objekte (custom, C#erstellte Objekte), erstellen Sie ein paar strings, schreiben Sie einige Dateien, etc.

Die Erfahrung zu versuchen, dies lässt mich fühlen wie der kleine junge, der denkt, er ist der einzige, der sehen kann, dass Der Kaiser hat keine Kleider an.Wenn Sie mit IronPython, ich würde es wirklich schätzen zu wissen, wie Sie sich mit den folgenden Aspekten:

  • Code-Bearbeitung - nutzen Sie das .NET framework ohne Intellisense?
  • Refactoring - ich kenne einen laden, der 'Umgestaltung' ist zu arbeiten, um die Sprache bezogenen Geschäftigkeit, so dass, wenn Python ist leicht genug dann werden wir nicht brauchen, Aber Dinge wie benennt scheinen mir wesentlich zu sein, um iterativ die Entwicklung der Qualität von code unabhängig von der Sprache.
  • Lähmende startup-Zeit - Eines der Dinge, die gut sein soll über interpretierten Sprachen ist das fehlen der Kompilierung führt zu schnellen interaktiven Entwicklung.Leider kann ich das kompilieren einer C# - Anwendung und starten Sie es schneller als IPy starten kann.
  • Interaktive hacking - die IPy-Konsole/repl gut sein soll, aber ich habe nicht gefunden eine gute Möglichkeit, die code Sie haben interaktiv kam an und speichern es in einer Datei - cut und paste aus der Konsole ist ziemlich miserabel.Und die Konsole scheint zu halten Referenzen .NET-Assemblys, die Sie importiert haben, so müssen Sie beenden und neu starten, wenn Sie arbeiten an der C# - Sachen.Hacking in C# in so etwas wie LinqPad scheint einen viel schnelleren und einfacheren Weg, Dinge auszuprobieren (und hat die richtige Intellisense).Verwenden Sie die Konsole?
  • Debuggen - was ist die Geschichte hier?Ich kenne jemand, der auf der IPy-team arbeitet an einer Befehlszeile hobby-Projekt, aber lasst uns einfach sagen, ich bin nicht sofort angezogen, um eine Kommandozeilen-debugger.Ich weiß nicht wirklich brauchen einen debugger von kleinen Python-Skripts, aber ich würde, wenn ich waren zu verwenden IPy für scripting unit-tests, zum Beispiel.
  • Unit-testing - ich kann sehen, dass dynamische Sprachen für dieses, aber es ist eine IDE-test-runner-integration (wie für Resharper, etc).Die Foord Buch hat ein Kapitel über das, was ich gebe zu, ich habe noch nicht richtig Lesen, aber es scheint zu beinhalten, fahren Sie eine Konsole-Modus-test-runner von der Eingabeaufforderung aus, die sich anfühlt, einen gewaltigen Schritt zurück von mit einem integrierten test-runner wie TestDriven.net oder Resharper.

Ich möchte wirklich glauben, in diesem Zeug, also ich arbeite immer noch auf der Annahme, dass ich was verpasst habe.Ich würde wirklich gerne wissen, wie andere Menschen den Umgang mit IPy, besonders wenn Sie es tun in einer Weise, die nicht das Gefühl, gerade erst haben wir verloren, 15 Jahre,'-Wert der Werkzeug-Entwicklung.

Update:(Juli 2010) Diese Frage ist ganz veraltet, jetzt gibt es eine offizielle IronPython-Tools für VS und PyCharm beide zeigen eine Menge von Versprechen und von denen keines war ungefähr, als ich es schrieb.Danke an alle, die geantwortet.Für diejenigen von Ihnen, die gerne ohne automatische refactoring-tools, kann ich empfehlen, dass Sie nie, nie, verwenden Sie eine IDE mit guter automatische refactoring.Nachdem Sie haben, werden Sie sich Fragen, warum Sie dachten, Sie waren immer glücklich mit suchen und ersetzen, und du wirst nie arbeiten wollen ohne es wieder.Wenn nichts anderes, ist die Fähigkeit, sofort umbenennen von Bezeichnern, ohne sich Gedanken über das ersetzen der falschen wenig ändert sich der text in Ihrem ganzen Ansatz für die Namensgebung Zeug.

War es hilfreich?

Lösung

do you use the .NET framework without Intellisense?

Ja.Ich allein emacs mit IronPython."M-/" ist gut genug für mich.Ich gelegentlich wechseln Sie zum Reflektor-und MSDN-wenn ich es wirklich brauche Informationen über das SDK.

Refactoring

Sie eigentlich bedeuten "Automatisches Refactoring", wenn Sie sagten, "Refactoring".Ich habe eine Menge Refactoring, während Codierung.Könnte es besser sein, mit ein bißchen Automatisierung.Aber ich bin in Ordnung mit manueller refactoring.Außerdem zwingen mich auf weitere tests.Ich habe nie eine beliebige IDE mit refactoring-Funktion ausgiebig, vielleicht das ist, warum Ich bin mir nicht Leid.Einfache Suche-und-ersetzen-ist in Ordnung für mich.

Crippling startup time

Ja, das ist mein großer Schmerz, auch wenn ich arbeiten bin auf der 3-GHz-Quad-core mit 4G Ram, es tut nimmt der 50er Jahre laufen 359 test-Fällen.Die Hälfte dieser Zeit (25s) ist die startup-Zeit !!Es scheint, IronPython führen Sie einige sehr schwere Aufgabe, wenn die Verarbeitung zu importieren große Modul.Ich bin jetzt Planung zu spucken meinen tests in teilen, diese zu mildern Schmerzen.

Interactive hacking - Do you use the console?

Ich benutze die Konsole gelegentlich, wenn ich wollen, um zu versuchen, einige ad-hoc-Idee.Habe problem nicht mit es.Die meiste Zeit schrieb ich meine Gedanken in die unit-test jedoch.

Debugging - what's the story here?

Wenn das Debuggen mittels break-point-und Variablen-Inspektion.Ich allein mit dem print-Anweisung für das Zeug.Die Art der Anwendung, mit der ich arbeite, ist über Leben und halten Sie gepflegt werden, für mindestens ein Jahrzehnt.Behandeln fehlerhaften code, den ich setzen Sie nur auf 3 Dinge:verständlich-code, unit-Tests und umfangreiche Protokollierung.

Unit testing

Ich habe nie nahe kommen zu jedem Werkzeug, das Sie erwähnen.Verwenden Sie einfach unittest.TextTestRunner.Neben den schrecklichen Start-Zeit, ich habe keine anderen Beschwerden.

** AKTUALISIERT **

Beende ich gerade das Upgrade auf IPy 2.6B1 mit phänomenalem Ergebnis.Die startup-Zeit zu reduzieren von 25s 6s und meiner gesamten Testzeit reduzieren von 50er bis 16 !!!

ERSTAUNLICH !

Andere Tipps

Wie über IronPython-Tools für Visual Studio 2010?

IronPython-tools bieten eine Python-code-editor, ein Datei-basiertes Projekt system und einen interaktiven Python-interpreter, alle innerhalb von Visual Studio 2010, und das alles kostenlos. http://ironpython.net/tools/

Ich denke, dass dieses add-in würde Abdeckung die meisten Ihrer Punkte.

Hoffe es hilft,

Patrick

IronPython ist eine großartige Lösung, aber ich zurück zu halten, um CPython für Windows.Warum ?

In meiner Erfahrung CPython unter Windows, Mac OS/X und *NIX sind praktisch die gleichen.Ich kann fast alle die "Batterien" in jeder Umgebung.Ich Häufig das entwickeln von Anwendungen auf Linux-und Schiff-und Windows-Servern.Ein paar Probleme mit threading abgesehen, hatte ich keine Probleme.

IronPython, auf der anderen Seite, ist ein Python-wrapper um die .Net-Framework.Ich finde es viel angenehmer zu nutzen als C#, aber das ist alles.Meine CPython-Programme funktionieren nicht ohne erhebliche Nacharbeit.Die Batterien für IronPython sind unterschiedlich.

Wenn es Ihr Ziel ist, um produktiv zu sein auf .Net dann IPy ist wahrscheinlich Ok.Allerdings, wenn Sie suchen portable Python-Fähigkeiten, dann würde ich es vermeiden.

Ich benutze PyDev zu schreiben IronPython-code.Ich bin versucht zu trennen .NET-spezifischen code, so viel wie möglich, so, dass ich die (Eisen -) Python-Skripte innerhalb von PyDev.Dank PyDev, die ich verwenden kann, Pylint, die gefunden werden können in http://www.logilab.org/857.Neuere Versionen von PyDev in der Lage sind, zum konfigurieren der interpreter auch pro Datei oder Projekt-basis.Also, ich kann leicht schalten Sie die Interpreten aus IronPython zu CPython-und Umgekehrt.Durch diese Weise, kann ich sehen, dass mein code ist portabel zwischen Python-Implementierungen.(Obwohl ich bin nicht mit, Jython 2.5 RC kann verwendet werden in PyDev zu.)

Mit Python und IronPython 2.5 kompatibel-code, den ich verwenden kann, die Umgestaltung in PyDev finden http://pydev.sourceforge.net/refactoring.html.

IronPython Studio wäre eine gute Wahl, wenn es unterstützt IronPython-2.x, aber leider, es funktioniert nicht.

PyDev, Flügel, PyCharm und IronPython-Tools für Visual Studio alle intellisense-Unterstützung für .NET unter IronPython.Ich habe das Gefühl, dass SharpDevelop hat auch intellisense für IronPython.

Start-Zeit enorm verbessert unter IronPython 2.6 und wieder in 2.7.Es ist immer noch deutlich langsamer als CPython jedoch.

Fahrrad-Mechaniker und Seil sind zwei beliebte automatisierte refactoring-tools für Python.Ich habe nie gefunden, ein muss für entweder von Ihnen.

pdb (Python debugger, standard library) arbeitet mit IronPython.PyDev, SharpDevelop und IronPython-Tools für Visual Studio alle debugging-Unterstützung für IronPython.

Ich habe integrierten testing-tools (Flügel hat eine gute unittest Unterstützung SharpDevelop unterstützt unittest und unittest2 für IronPython, PyDev und PyCharm haben wahrscheinlich gute unittest-integration zu).Ich ziehe mit meinen tests von der Befehlszeile aus.unittest2 ist ideal für diese, wie es beseitigt die Notwendigkeit zu schreiben, Ihre eigenen test-Sammlung / running code.

Ich nutze den interaktiven interpreter zu Experimentieren viel und gelegentlich als aufgemotzt shell.

Ich habe mit IronPython (und das DLR im Allgemeinen) ausgiebig, in meine Projekte in letzter Zeit für verschiedene Dinge.Einige Beispiele:

  • Ich habe ein Dokument-generator basierend auf Vorlagen, die verwendet py-Skripte zu erstellen und transformieren die Kontext-Variablen übergeben werden, die in der template-renderer (Excel, Word, html->pdf)
  • Als Ausdruck Gutachter für eine spezielle Regel-engine.Die Skripte sind gespeichert in eine Spalte in einer Datenbanktabelle und zur Laufzeit ausgewertet, um zu bestimmen, welche Regel gilt.
  • Als Schritte in einem ETL-engine.Im Grunde habe ich einige Komponenten, die Lesen können Excel-Dateien, und ich benutze python-Skripte, um die Daten transformieren und erstellen NHibernate-Entitäten, die zum füllen einer Datenbank.
  • Dynamische Konfigurations-Skripte für C# - Komponenten.
  • Ein Berechnungsmodul für einige Indikatoren, die erstellt werden müssen, aus einer großen Menge von Daten.Ich bin die Kombination der Parallel extensions mit vorkompilierten Skripte, die Leistung ist gut, so weit.

Sachen wie, dass.Sobald der Motor korrekt konfiguriert ist, mit Pfaden und Referenzen alle eingestellt haben, können Sie im Grunde ein Skript verwenden, für einfach alles.

Fast alle diese Dinge laufen in asp.net mvc-Anwendungen, und so weit so gut.Ich entdeckte, dass die ScriptEngine und einige Komponenten wie ScriptScope sind thread-sicher, so kann ich sogar eines konfiguriert, die Motor im inneren statt ein IoC-container (ex.Windsor) zwischen Controller und wie.

Wie bei einem editor, ich EditPlus die meisten der Zeit.Die VS 2010-python-editor neigt dazu, ein bisschen instabil, obwohl eine schnelle Bearbeitung ist kein problem.

Meine Verwendung von IronPython nur um schnell Prototypen für mich selbst, also kann ich nicht viel dazu sagen.Aber wenn Sie suchen für ein IDE -, spezifische IronPython, IronPython Studio passierbar ist.Es ' ll geben Sie einige Intellisense-Funktionalität, aber es ist ein bisschen flockig mal, also nicht schließen, dass die MSDN-Dokumentation-Fenster nur noch.Es wird Ihnen erlauben, interaktiv Debuggen wie jeder andere .Net-Projekt.Es unterstützt auch das Visual Studio 2008 forms-designer, wenn Sie es vorziehen, die GUI ist so.Ich habe es nicht versucht, aber es könnte auch Unterstützung für die Ausführung von nUnit-tests mit TestDriven.net.

Leider benennt und andere refactoring-Funktionen von VS 2008 scheinen nicht unterstützt.

Ich bin mit IPy in einer integrierten Umgebung für die Ausführung von Testskripten.

1 & 2.Sie sind Recht, es gibt nicht viel Unterstützung für die code-Bearbeitung oder Umgestaltung -- die richtige Unterstützung für Visual Studio wäre toll.

Ignorieren Sie Ihre Dritte Punkt-interpretiert vs. kompiliert ist ein Alter-alte argument.

Noch nicht viel getan, interaktive hacking-noch, so kann nicht kommentieren, 4. Punkt.

Ich verwende die Visual Studio-debugger zum Debuggen meiner IPy scripts.

Weiß nicht, über ein unit-test-IDE-integration entweder.

Ich bin mit einer Reihe von blackjack-Simulationen auf Python 2.6 vs.IronPython Version 2.6, und hype ungeachtet, IronPython zu sein scheint, nur ein bisschen langsamer (vielleicht durch ungefähr 10%?) Der code ist sehr einfach, nur Sachen wie:

def highcount(hand):
  total=0
  for c in hand:
    if c[1]==11 and 11+total>21:
      total+=1
    else:
      total+=c[1]
  return total

und

def dmove():
  if ( (dhand[0][1]==11 and dhand[1][1]==10) or 
       (dhand[0][1]==10 and dhand[1][1]==11) ):
    return 21 # should return blackjack

  while 1:
    lc=lowcount(dhand)
    hc=highcount(dhand)
    if lc>21: return lc # dealer busts
    if lc>=17: return hc # stand on soft 17
    if hc>=17: return hc # stand on hard 17
    dhand.append(deck.pop()) # hit otherwise

Wenn die .NET VM Optimierungen sind ähnlich wie die JVM den Hotspot ist durchaus möglich, dass über längere Läufe, IronPython kann, führen Sie die simulation schneller.

Ein weiterer wichtiger Punkt zu beachten, ist die blackjack-simulation leicht eignet sich zum laichen auf mehrere threads, die CPython ist GIL macht völlig wertlos im Hinblick auf die Geschwindigkeit steigern.Mit IronPython ich tun, erhalten Sie die volle 400% speedup auf einem quadcore -, das ist wirklich, wirklich cool.

Der code ist nicht irgendeine esoterische Python-Funktionen (, dass ist eine gute Sache), was bedeutete, dass es 100% lief unverändert auf IronPython.

Ich bin mit Iron Python, nicht Professionell, leider, aber als eine Schnelle Entwicklung der Sprache für meine persönlichen Projekte.

Python ist so eine tolle Sprache, die für Benutzerfreundlichkeit, die Kürze, aber die Lesbarkeit von code und Einfachheit.Einige von dies ist durch eine dynamische Sprache, sondern auch die basic-syntax.

Ich bin jedoch kein cpython-guru, und kann man so viel mehr aus Iron Python als cpython, da kann ich problemlos nutzen .NET-Plattform, auf der ich bin viel mehr zu Hause.Ich bin enttäuscht, es gibt derzeit kein Anschluss der Twisted-Bibliotheken in cpython, der nur erweiterte Python-Bibliotheken, die ich bin bequem mit, als wären Sie so nützlich .NET.

Ich benutze auch die interaktive Fenster, nur um zu testen .NETTO-Strukturen, wenn ich die Codierung in C#.

Ich kaufte Foord Buch so jetzt bin ich nur lernen.Ich hoffe wirklich, dass es für web-Entwicklung, aber leider muss ich warten, bis es unterstützt wird asp.net mvc.Ich habe auch planen, es zu benutzen als ein scripting-tool für windows-Systeme, da kann ich nutzen .net framework

Bei der Arbeit verwenden wir IronPython gegen das SharePoint-Objektmodell.Es ist perfekt für viele kleine Programme, die sind größer als ein powershell-Skript, aber nicht etwas, das bereitgestellt werden muss, als ein Artefakt in SharePoint.Es ist ideal für rapid-prototyping auf Servern, auf denen Visual Studio nicht installiert ist.In der Regel verwenden wir Notepad++ als unseren editor der Wahl.

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