Wie geht man von C # nach Python über?

8

Ich fühle mich wie ich zurück in die Steinzeit gehe.

wie lerne ich ohne Intelligenz neu zu entwickeln (pydev intellisense zählt nicht) .. im Allgemeinen, wie verlässt man erfolgreich den Komfort des visuellen Studios?

    
billy r 03.12.2009, 21:57
quelle

17 Antworten

8

Ich habe kürzlich Python mit einem starken C # Hintergrund gelernt.

Mein Ratschlag: Tu es einfach. Entschuldigung, konnte nicht widerstehen, aber ich bin auch ernst. Installieren Sie python und lesen Sie: Python.org-Dokumentation (v2.6). Ein Buch könnte auch helfen - ich mag den Python-Sprachführer . Von da an begann ich Python zu verwenden, um Lösungen für verschiedene Dinge zu implementieren. Vor allem ProjectEuler.net Fragen.

Es hat mich gezwungen, die Sprachen zu berücksichtigen und die Datenstrukturen aufzubauen.

Python ist wirklich einfach zu bedienen und intuitiv. Um die Grundlagen zu lernen, brauchte ich ungefähr eine Stunde. Um damit ziemlich gut zu werden, dauerte es ca. 5 Stunden. Natürlich gibt es immer mehr zu lernen.

Ich möchte auch darauf hinweisen, dass ich IronPython oder Jython ablehnen würde, weil ich das Gefühl habe, Core zu lernen, regulärer Python ist der erste Schritt.

    
Frank V 03.12.2009, 22:18
quelle
6

Python hat umfangreiche "Introspektions" -Funktionen. Insbesondere können Sie eine Menge über integrierte Funktionen herausfinden, indem Sie einen Befehl namens help() von der Python-Befehlszeile verwenden.

Angenommen, Sie möchten reguläre Ausdrücke verwenden und herausfinden, wie Sie sie verwenden.

%Vor%

Sie erhalten eine schöne Informationsanzeige, die Ihnen automatisch jeweils eine Seite anzeigt (drücken Sie die Leertaste, um die nächste Seite zu sehen).

Wenn Sie bereits wissen, dass Sie die sub() -Funktion aus dem re -Modul verwenden möchten, können Sie nur Hilfe bekommen:

%Vor%

Und dieses help() -Feature funktioniert sogar mit Ihrem eigenen Code, solange Sie Python Docstrings für Ihre Module, Klassen und Funktionen.

Sie können Funktionen im vim-Editor (oder gvim oder vim für Windows) aktivieren, die eine "IntelliSense" -ähnliche Autokomplettierungsfunktion aktivieren, und Sie können , um Hyperlink-Tags zu generieren, damit Sie schnell durch Ihren Code navigieren können. Diese verwandeln vim in etwas, das ungefähr so ​​leistungsfähig ist wie eine IDE, mit der vollen Power von vim zur Bearbeitung. (Es gibt kein explizites Refactoring-Tool, das in vim integriert ist, aber sind Optionen verfügbar .

Und wie andere bemerkt haben, können Sie auch IDEs für Python erhalten. Ich habe die Wingware-IDE verwendet und empfehle sie. Ich versuche, die meiste meiner Arbeit mit freier, Open-Source-Software zu machen, aber das ist ein Stück proprietäre Software, die ich kaufen würde. Ich habe auch Eclipse mit dem Pydev Plugin verwendet (ich habe es benutzt) sein Refactoring-Tool und es hat gut funktioniert).

P.S. Python hat ein umfangreicheres Feature-Set als C #, allerdings auf Kosten, dass Ihr Code nicht so schnell läuft. Sobald du dich an Python gewöhnt hast, wirst du dich nicht mehr wie in der Steinzeit fühlen.

    
steveha 04.12.2009 00:42
quelle
5

Schritt für Schritt?

Beginnen Sie mit einfachen Programmen (Dinge, die Sie mit geschlossenen Augen in C # schreiben können) und machen Sie weiter ... Sie werden die API schließlich auswendig kennen.

    
Oded 03.12.2009 22:04
quelle
4

<rant>

Das ist der Grund, warum ich ein guter Visual Studio-Benutzer bin, der Sie zu einem schlechten Entwickler macht. Anstatt eine API zu lernen, sehen Sie im Objektbrowser nach, bis Sie etwas gefunden haben, das mehr oder weniger nach dem gesuchten Objekt aussieht, instanziieren und dann drücken. und fange an nach dem zu suchen, was nach dem richtigen Ding klingt. Während dies sehr schnell ist, bedeutet es auch, dass es ewig dauert, eine API in jeder Tiefe zu lernen, was oft bedeutet, dass man das Rad neu erfindet (weil das Rad unter einem Berg von Haushaltsgeräten vergraben ist und man keine Ahnung hatte) es war dort), oder einfach Dinge auf eine suboptimale Weise zu tun. Nur weil Sie A Lösung schnell finden, bedeutet das nicht, dass es DIE BESTE Lösung ist.

</rant>

Im Falle von .NET, das mit etwa einer Milliarde APIs für alles unter der Sonne ausgeliefert wird, ist dies tatsächlich bevorzugt. Sie müssen eine Menge Lärm durchforsten, um zu finden, wonach Sie streben.

Pythonischer Code begünstigt einen offensichtlichen Weg, irgendeine gegebene Sache zu tun. Dies neigt dazu, die APIs sehr geradlinig und lesbar zu machen. Der Trick besteht darin, die Sprache zu lernen und die APIs zu lernen. Es ist nicht besonders schwer zu tun, besonders im Fall von Python, und während man sich nicht auf Intellisense verlassen kann, kann es zunächst etwas verwirrend sein, es sollte nicht länger als ein oder zwei Wochen dauern, bis man sich daran gewöhnt hat, nicht da zu sein .

Lerne die Sprache und die grundlegenden Standardbibliotheken mit einem guten Buch. Wenn es um eine neue Bibliothek API geht, finde ich die REPL und einige explorative Codierung kann mich zu einem ziemlich guten Verständnis von dem, was passiert, ziemlich schnell.

    
Matt Briggs 03.12.2009 22:26
quelle
2

Sie können immer mit IronPython beginnen und in Visual Studio weiter entwickeln.

    
Josh 03.12.2009 22:07
quelle
2

Die Python-Idee von Wingware ist ziemlich nett. Das war es, was ich am Ende von Visual Studio C ++ / .net zu tun Python ging.

    
John Schroder 03.12.2009 22:17
quelle
1

Machen Sie sich keine Sorgen wegen Intellisense. Python ist wirklich einfach und es gibt wirklich nicht so viel zu wissen, also nach ein paar Projekten werden Sie Python-Code während des Fahrens, Essens, usw., ohne wirklich sogar versuchen zu begreifen. Plus, python's eingebauter Texteditor (IDLE) hat eine wimpy Version von intellisense, die für meine Zwecke immer mehr als ausreichend war. Wenn Sie leer bleiben und wissen möchten, welche Methoden / Eigenschaften und Objekte das haben, geben Sie dies in einer interaktiven Sitzung ein:

dir (mein Objekt)

    
twneale 03.12.2009 22:23
quelle
1

Genau wie Sie etwas anderes tun, das nicht IntelliStuff hat.

Ich wette, dass Sie diese Frage ohne die Hilfe eines IntelliEnglish-Computerprogramms geschrieben haben, das Ihnen eine Liste von Verben zeigte, die Sie verwenden könnten, und am Ende Ihrer Sätze automatisch Satzzeichen hinzufügte. : -)

    
Ken 04.12.2009 00:52
quelle
1

Ich benutze Eclipse und PyDev die meiste Zeit und die begrenzte Auto-Vervollständigung-Hilfe, die es bietet, ist ziemlich nützlich.

Es wird niemals auf die Stufe von IntelliSense von VS kommen, und das kann es nicht, wegen der dynamischen Natur von Python. Aber es gibt Entschädigungen, große.

Das größte ist die Unterbrechung des Code-Compile-Testzyklus. Es ist so einfach Prototyp-Code in IDLE zu schreiben und zu testen, oft gehe ich zuerst hin: Ich werde ein paar Methoden entwerfen und testen, die zusammenarbeiten müssen, herausfinden, dass es etwas gibt, das ich nicht kenne, es lernen, repariere meinen Test und verbinde das Ganze dann mit PyDev und beobachte es beim ersten Mal.

Ein anderer ist, dass es viel einfacher ist. Es ist wirklich wichtig zu wissen, was die Standardmodule sind und was sie tun, aber in den meisten Fällen kann das mit ein wenig Lesen aufgegriffen werden. Ich verwende nur eine kleine Handvoll Module in meiner täglichen Programmierung - itertools , os , csv (ja, naja), datetime , StringIO - und alles andere ist da, wenn ich es brauche, aber normalerweise Ich nicht.

Die Dinge, die wirklich wichtig sind, sind Dinge, mit denen IntelliSense Ihnen sowieso nicht helfen konnte. Auto-Vervollständigung wird nicht machen

%Vor%

mach ein verdammt wenig Sinn; Sie müssen lernen, was für eine erstaunliche Codezeile das ist und warum Sie es selbst schreiben würden.

Dann wirst du denken: "Wie würde ich überhaupt anfangen, so etwas in C # zu implementieren?" und erkenne, dass die Werkzeuge, die diese steinzeitlichen Menschen benutzen, ein wenig ausgeklügelter sind, als du denkst.

    
Robert Rossney 04.12.2009 03:49
quelle
0

Ich bin mit Python nicht so vertraut, also werde ich einen allgemeinen Rat geben. Stellen Sie sicher, dass Sie einige Referenzseiten mit allgemeinen Funktionen ausdrucken. Halte sie immer bei dir (oder an einer Wand oder einem Schreibtisch), wenn du programmieren willst. Ich bin traditionell ein "Steinzeit" -Entwickler und nachdem ich einige Monate in VS entwickelt habe, finde ich meine Hobby-Programmierung schwierig ohne intellisense .. aber behalten Sie es bei, um die häufigsten Funktionen zu merken und schließlich wird es nur natürlich sein

Sie müssen auch etwas "schwieriger" Debuggen verwenden (nicht sicher, wie das mit Python funktioniert)

Während du aber lernst, solltest du die Güte (zumindest im Vergleich zu C #) von Python genießen, selbst wenn du keine Intellisense hast ... hoffentlich wird dich das motivieren!

    
Earlz 03.12.2009 22:03
quelle
0

Ich habe immer nur IDLE für die Python-Entwicklung verwendet und es macht keinen Spaß. Ich würde empfehlen, Ihren Lieblings-Texteditor zu bekommen, meiner ist Notepad ++, und betet für ein anständiges Plugin dafür. Ich musste immer nur von Eclipse nach Visual Studio wechseln, daher sind meine Meinungen in diesen Kontexten generell ungültig.

    
Woot4Moo 03.12.2009 22:04
quelle
0

Ich benutze Komodo Edit und es ist ziemlich gut zu schätzen, bei der Autovervollständigung.

    
S.Lott 03.12.2009 22:26
quelle
0

Andere haben mehrere Editoren vorgeschlagen, die intellisense-ähnliche Fähigkeiten haben. Probieren Sie sie aus.

Installieren Sie auch ipython und verwenden Sie dies, um die Sprache interaktiv zu lernen. Es ist wie eine aufgemotzte Version der regulären interaktiven Python-Shell mit vielen und vielen zusätzlichen Funktionen, und eine der nützlichsten ist die umfangreiche kontextsensitive Tab-Vervollständigung und Hilfe.

Zum Beispiel, wenn Sie

eingeben %Vor%

Es werden alle Module angezeigt, die Sie importieren können, beginnend mit r

%Vor%

zeigt alle Objekte im neuen Modul an

%Vor%

zeigt den Docstring und andere Informationen über die Funktion re.compile und leitet sie automatisch durch einen Pager, wenn dieser länger als ein Bildschirm ist.

%Vor%

zeigt auch den Quellcode, falls verfügbar.

Ich finde, dass es viel schneller ist, zu Ipython- und Abfrageobjekten zu wechseln, als in den Dokumenten nachzusehen. Sie haben Zugriff auf das übliche python-help () - System.

ipython hat viele und viele andere Funktionen - viel zu viele, um sie in einem kurzen Beitrag zu behandeln.

    
Dave Kirby 04.12.2009 13:37
quelle
0

Pyscripter macht bei Auto-Completion / Intellisense einen vernünftigen Job. Ich benutze es kürzlich, als ich angefangen habe, Python / Django zu lernen, wo ich in den letzten Jahren hauptsächlich C # -Entwickler war.

    
Tom van Enckevort 04.12.2009 13:43
quelle
0

Ich schlage vor, kalte Truthähne zu benutzen - Sprachen wie Python glänzen mit großartigen Texteditoren. Wählen Sie einen aus, bei dem Sie fantastisch werden möchten (vim, emacs usw.) und schauen Sie niemals zurück.

    
orip 04.12.2009 13:51
quelle
0

Ein Fehler, der von Leuten kommt, die aus C # oder Java kommen, ist eine große Klassenhierarchie, wie sie in diesen Sprachen üblich ist. Bei Python ist das fast nie sinnvoll. Erfahren Sie stattdessen etwas über die Eingabe von Enten. Und sorgen Sie sich nicht zu sehr um das Fehlen der statischen Typisierung: In der Praxis ist das fast nie ein Problem.

    
static_rtti 10.08.2016 21:30
quelle
-3

Verwenden Sie einen guten Editor wie Emacs oder Vim.

    
Echo 04.12.2009 16:04
quelle