[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