[Python-de] Re: Man weiss erst, was man an Python hat, wenn man C# schreibt
Gerhard Häring
gerhard.haering at gmx.de
Mon Mar 17 22:29:11 EST 2003
Gerson Kurz wrote:
> Nachdem ich jetzt ein paar Tage C# programmiert habe (siehe etwa
> http://p-nand-q.com/e/pcalc_net.html) schätze ich Python noch mehr als
> vorher (falls das überhaupt möglich war). Wenn man Python programmiert,
> vergisst man leicht, wie *gut* die Sprache ist; deshalb hier ein paar
> Punkte, in denen Python zu programmieren einfach mehr Spaß macht und schöner
> ist als etwa C#.
ACK.
> [...]
> - A propos: explizite Typangaben. Dem Compiler mag es das Leben einfacher
> machen, wenn überall Typen dranstehen, aber wie einfach ist die Pythonsyntax
> ohne Typen - und genauso schnell wie .NET ist es vermutlich auch. Zum
> Beispiel fängt mein erstes Windows-Forms-Beispiel mit folgender bildhübschen
> Syntax an:
>
> public class Form1 : System.Windows.Forms.Form
> {
> private System.Windows.Forms.MainMenu mainMenu1;
> private System.Windows.Forms.MenuItem menuItem1;
> private System.Windows.Forms.MenuItem menuItem2;
> private System.Windows.Forms.MenuItem menuItem3;
> private System.Windows.Forms.MenuItem menuItem4;
> private System.Windows.Forms.MenuItem menuItem5;
> private System.Windows.Forms.MenuItem menuItem6;
> private System.Windows.Forms.MenuItem menuItem8;
> private System.Windows.Forms.MenuItem menuItem13;
> private System.Windows.Forms.MenuItem menuShowOptions;
> private System.Windows.Forms.MenuItem menuSetFont;
> private System.Windows.Forms.MenuItem menuQuit;
Typischer IDE-generierter Code halt :-/
> [...]
> protected override void Dispose( bool disposing )
A propos: Nichtdeterministische Garbage Collection. Ich hab mir vor
kurzem mit folgendem vorübergehend beholfen:
foreach (SearchResult in ...) {
[...]
if (counter % 1000 == 0) {
System.GC.Collect(); // Argh!
}
counter++;
}
Bei Python weiss ich wenigstens, das
while 1:
x = Foo()
in der momentanen Implementierung konstanten Speicher braucht. Einige
Java-VMs kannst du mit so was sogar an die Wand fahren :-D
> [...]
> - Python hat ja auch keinen Präprozessor, was ich als alter Makrohacker
> lange lange vermisst habe. Dafür hat Python Introspektion und eval(), womit
> sich die wichtigsten Sachen abbilden lassen, und die anderen auch, mit etwas
> mehr Aufwand. C# hat weder noch.
C# (.NET) hat Introspektion.
> - Ich vermisse Sachen wie "if a in [liste von werten]", oder "for a in
> [liste von werten]". (Wobei foreach letzterem nahekommt, aber auch nur ganz
> von der Ferne nahe: "foreach(datentyp bezeichner in liste)", sprich, die
> Liste kann nicht unterschiedliche Werte enthalten.
Ich hab noch nie Kraut und Rüben in Containern gehabt. Und wenn, dann
immer von einer gemeinsamen Basisklasse. foreach tut's also für mich
in C#.
> [...]
> - Ich vermisse die Triplequote-Strings
C#:
string helpstr = @"bla bla bla bla bla
bla bla bla";
> [...]
> - Es tut mir leid, wenn ich sowas
>
> m_input.TextChanged += new System.EventHandler(this.onInputTextChanged);
Lies: "Wir führen mal eben schnell für GUI-Programmierung die
Sprachfeatures Events und Delegates ein." Aus Sicht von
"Practicability beats Purity" ist das vielleicht gar nicht mal so
schlecht. Oder willst du stattdessen lieber Java's Inner Classes? ;-)
-- Gerhard
More information about the Python-de
mailing list