Python WTF?



  • Marthog (sinngemäss) schrieb:

    Ich stelle auf Stur und weigere mich, ein dynamisches Typsystem zu benutzen

    Mit der Einstellung kommst du nicht weit. Es hat Vor- und Nachteile aber wenn man die Programme vernünftig angeht, hat man da kein Problem.

    SeppJ schrieb:

    -Whitespace als syntaktische Element

    Wie kann das ein Grund sein? Die Syntax von C++ finde ich ja mal obermühsam.

    SeppJ schrieb:

    -Wie Objektorientierung in Python umgesetzt wurde

    Umgesetzt in welchem Sinne? Die Umsetzung war mit Python 2 in der Tat noch broken. Mit Python 3 wurde ist das gefixt.

    Die Designentscheidung von Membern als Dictionary finde ich sehr gelungen. Mag auf den ersten Blick etwas seltsam erscheinen, aber die Möglichkeiten mit Meta-Klassen sind wirklich enorm.

    Decorators vermisse ich auch ständig in C++.

    Dravere schrieb:

    Ich mag Python zum Erstellen von Tools oder kleinen Hilfsprogrammen. Sobald es ein grösseres Programm wird, bekomme ich Probleme mit der Strukturierung. Es ist unglaublich frustrierend, dass das Konzept von One-Class-Per-File nicht möglich ist, da das File selber ein Modul darstellt. Dadurch bekommt man unnötige Namensräume.

    Dann schreibst du halt ein __init__.py. Ist sowieso immer eine gute Idee, nicht alle Symbole zu exportieren. Wobei ich nicht der Meinung bin, dass das One-Class-Per-File-Konzept in Python sehr sinnvoll ist.



  • pythonic schrieb:

    Marthog (sinngemäss) schrieb:

    Ich stelle auf Stur und weigere mich, ein dynamisches Typsystem zu benutzen

    Mit der Einstellung kommst du nicht weit. Es hat Vor- und Nachteile aber wenn man die Programme vernünftig angeht, hat man da kein Problem.

    Der Vorteil ist, dass man es mal so eben schnell hinklatschen und etwas ausprobieren kann, insbesondere wenn es auf verschiedenen Typen aufbauen soll.
    Python ist gut fuer Extreme Programming geeignet, weil man den Code schnell anpassen kann und viele Fehler uebers testen findet.
    Fuer grosse Projekte kann es hingegen sehr schnell passieren, dass man einfach mal eine Methode vergessen hat und einem der Fehler dan erst zur Laufzeit um die Ohren fliegt. Der Fehler tritt aber schoen in irgendwelchen tief verschachtelten Funtionen auf und im schlimmsten Fall wird das Objekt sogar in einem Container gespeichert und erst eine ganze Zeit spaeter ausgeloest.
    Ein statisches Typsystem faengt diese Feher alle zur Compilezeit ab.

    pythonic schrieb:

    SeppJ schrieb:

    -Wie Objektorientierung in Python umgesetzt wurde

    Umgesetzt in welchem Sinne? Die Umsetzung war mit Python 2 in der Tat noch broken. Mit Python 3 wurde ist das gefixt.

    Die Designentscheidung von Membern als Dictionary finde ich sehr gelungen. Mag auf den ersten Blick etwas seltsam erscheinen, aber die Möglichkeiten mit Meta-Klassen sind wirklich enorm.

    Decorators vermisse ich auch ständig in C++.

    Hier:

    template <class T>
    auto decorator(T some_func) {
        return []() {
            std::cout << "decorator called";
    	return some_func();
        };
    }
    

    mit ein paar templates kann man auch noch auf beliebige Parameter erweitern und mit einem Macro kommt man vielleicht sogar auf nahezu pythons syntax. Wenn man die Funktion zur Laufzeit generisch will, kann man auch std::function einsetzen, verliert dadurch aber etwas Geschwindigkeit.



  • Marthog schrieb:

    Hier:

    template <class T>
    auto decorator(T some_func) {
        return []() {
            std::cout << "decorator called";
    	return some_func();
        };
    }
    

    mit ein paar templates kann man auch noch auf beliebige Parameter erweitern und mit einem Macro kommt man vielleicht sogar auf nahezu pythons syntax. Wenn man die Funktion zur Laufzeit generisch will, kann man auch std::function einsetzen, verliert dadurch aber etwas Geschwindigkeit.

    Das kann ja wohl nur ein schlechter Scherz sein.
    Oder wie tauscht du damit eine Memberfunktion eines Objekts aus?



  • Z schrieb:

    Hi,
    ich wollt' mal fragen, ob und warum (oder warum nicht) ihr Python verwendet.

    Ich nutze Python um Blender und Gimp zu erweitern und anzupassen. Meine Pythonprogramme sind auch außerhalb dessen meist sehr klein. Große Software entwickeln finde ich extrem anstrengend, da geht mir jeglicher Spaß verloren wenn ich erst in Schichten, DesignPattern und OOP denken muss, also lasse ich es. Ich lebe schließlich nur einmal und das recht kurz.



  • Ich habe die letzte Woche einiges in Python gemacht, ja. Aber mögen tue ich das nicht. Ich bin einfach kein Fan von dynamischen Sprachen. Das kommt mir alles so schmutzig vor. Für kleine Sachen find' ich das noch OK … wobei ich da auch noch GNU/Octave in meiner Werkzeugkiste habe und gerne mal benutze (auch dynamisch, aber da stört es mich nicht).



  • Mir geht es genau umgekehrt ich finde Sprachen wie C++ total lästig, wenn man nur kleine Plugins oder Scripts schreiben möchte. Ich brauche halt kein OOP, Typensicherheit und was weiß ich noch alles. Ich möchte so angenehm und schnell(im Sinne von Arbeitszeit) wie Möglich von A nach B kommen und nicht so sicher oder erweiterbar wie möglich.

    Ist doch schön dass sich das Programmieren und die Sprachen dazu weiter entwickeln und sich den Bedürfnissen der User immer mehr anpassen. Generalisierte Lösungen sind meist immer schwere Monster und meist weniger für den speziellen Zweck zu gebrauchen.

    Python hat sich bewährt, sonst hätte es nicht so lange überlebt. Was da wie unter der Haube passiert ist mir als Anwender herzlich egal. Wenn das Werkzeug zu mir passt wird es benutzt, wenn es mir zu kompliziert ist kommt es in die Tonne.



  • BlenderRender schrieb:

    Ich brauche halt kein OOP…

    Das ist kein Argument für Python und gegen C++, weil Du in beiden Sprachen genauso viel/wenig "OOP" anwenden kannst/musst.

    BlenderRender schrieb:

    Python hat sich bewährt, sonst hätte es nicht so lange überlebt.

    Weil es überlebt hat, ist es gut? Oder nur gut genug? 😉 Das wäre auch kein Argument.

    Jeder nach seiner Fasson…



  • Für System Scriptsprachen gibt es defakto ja nur 3 Optionen:

    Perl, Python, Ruby

    Perl verwenden nur Masochisten also bleibt die Wahl zwischen Python und Ruby. Die Beiden nehmen sich aber nicht viel.

    Deshalb verwenden viele Leute eben Python.



  • Du hast Lua vergessen. Also mit Lua, Pyhon und Javascript + JSON/XML als Beschreibungssprache und einem kleinen Coreteil C/C++/Rust etc. kann man schon ganz mächtige Applikationen zaubern. Der Anteil von reinen Systemsprachen wird doch immer weniger. Man nimmt sie halt da wo man sie nehmen muss, aber ab dann kann man sehr gut alles scripten.

    Ein großes Projekt nur in reinem C++ wäre wohl heute ganz großer Unsinn.





  • BlenderRender schrieb:

    Ein großes Projekt nur in reinem C++ wäre wohl heute ganz großer Unsinn.

    Gerade bei grossen Projekten wird das was die dynamischen Scriptsprachen wie Lua oder Python so praktisch macht sehr gefährlich.
    Also nein, grosse C++ Projekte sind kein Unsinn. Du hast einfach nur keine Ahnung.



  • Ich freue mich, dass ich anscheinend nicht alleine mit meiner Meinung bin. Ich verwende Python auch nur um Kleinigkeiten zu programmieren. Kleine Scripte, die mir die Arbeit erleichtern. Für alles andere setzte ich auf typsichere Sprachen, weil ich einfach keine Lust habe, dass mir Programme wegen Fehlern zur Laufzeit um die Ohren fliegen, die eine typsichere Sprache schon zur Compilezeit abgefangen hätte.


Anmelden zum Antworten