Für was nutzt ihr Python?



  • Ethon schrieb:

    Nichts Größeres weil mich da das fehlende (explizite) Typsystem furchtbar nervt, ich finde Programmieren ohne Typen sehr schwierig.

    Solche Sprachen haben genau einen Typ.

    Für winzige Programme, die in lesbarer Schrift auf den Bildschirm passen, kann ich gerade so noch mit Lua leben. Ich kann mir aber nicht vorstellen wie man damit größere Programme schreiben kann. Auf der Arbeit musste ich mal einen Bug in einer wenige hundert Zeilen umfassenden Javascript-Datei für eine Webseite beheben. Das ist wahnsinnig schwierig, wenn man eine IDE und einen Compiler gewohnt ist, die ein sinnvolles Typsystem unterstützen und damit ganz viel Unsinn vor dem Ausführen finden. Was kann in diesem Argument alles hereinkommen? In einer vernünftigen Sprache ist diese Frage schnell beantwortet, denn es steht direkt in der Parameterliste. In so einer Schwachsinnssprache wie Javascript muss man dann alle Aufrufe heraussuchen und hoffen, dass man keinen übersehen hat. Etwas umbenennen oder einen Parameter hinzufügen? In einer vernünftigen Sprache ganz einfach, weil dann bei jeder Verwendung der Compiler einen Fehler meldet. In ach so flexiblen "dynamischen" Sprachen ist so etwas Einfaches der Horror.

    Da muss es einen tollen Vorteil geben, der den gewaltigen Produktivitätsverlust beim Herumsuchen ausgleicht. Kann mich mal jemand aufklären?



  • Ein Typ ist so gut wie kein Typ. 😉

    Und ich habe mich auf das gleiche Problem bezogen: Ich habe mich in einem 500 Zeilen Script nicht mehr ausgekannt nachdem es ein Studienkollege etwas refactort hat und musste wirklich die komplette Aufruf-Hierachie durch manuelles Typ-Tracing betreiben um zu verstehen was da herum gereicht wird. Hint: es war etwas wie eine Liste von Dictionaries, welche Strings auf Listen mappen.
    Grausam.



  • TyRoXx schrieb:

    Da muss es einen tollen Vorteil geben, der den gewaltigen Produktivitätsverlust beim Herumsuchen ausgleicht. Kann mich mal jemand aufklären?

    Nö, dynamic typing is bullshit. Aber Python ist an sich recht nett um schnell irgendwas zusammenzuhacken. Richtige Software würde ich damit nicht bauen wollen...



  • Für was nutzt ihr Python?

    für ein Skript, das die Frage beantwortet, wofür ihr python benutzt.

    Scherz.

    Für Aufgaben, für die mir bash zu unbequem ist, die aber zu einfach sind, um dafür ein C++ Projekt aufzusetzen. Z.B automatisierte log-Analysen und etwas kompliziertere Admin Skripten.

    In den letzten Jahren gehe ich aber mehr und mehr dazu über, die kleineren (und alle Admin-)Sachen mit bash zu skripten, für alles Größere C++ zu nehmen, und den Rest mit domain-specific languages. Für kleine Tools mit GUI würde ich fast noch immer lieber tcl/tk nehmen.

    Vor einigen Jahren hatte ich ein berufliches Projekt in python 2 mit rund 10k Loc, und ehrlich gesagt würde ich nicht wieder ein 10k Loc Projekt mit python erledigen wollen.

    Irgendwie habe ich keine Bedarfslücke, für die ich python wirklich bräuchte. Ist eine ganz hübsche Sprache.



  • Für Webserver. Mit dem Framework Django ist es extrem einfach, einigermassen komplizierte Webseiten zu erstellen. Klassenhierarchien werden automatisch (mit Reflection) zu Datenbanktabellen, Queries sind eine DSEL und in den HTML-Templates kann ich die Objekte aus Python benutzen.

    Ich wüsste nicht, wie das in C++ vernünftig umsetzbar wäre.

    Mit dynamic Typing hatte ich bisher nur ein Problem, wenn ich Parameter vertauscht habe, aber das passiert mir mit Named Arguments nicht mehr.



  • Ich nutze Python für ImageProcessing mit OpenCV und als GUI für CommandLineTools.



  • Ich benutze es momentan, um ein Tool in einer Firma zu schreiben, dass alle SVN-Repositories in ein einziges merged. Es gibt dafür leider kein Tool im Internet.

    python finde ich als Skriptsprache ganz gut, aber nicht sooo gut, wie jetzt vll. andere. Ruby ist z. B. ausdrucksstärker, Scala ebenfalls und hat dazu noch Typsicherheit und Performance. Das Beste an pyhton sind einfach die libs.

    L. G.,
    IBV



  • IBV schrieb:

    Ich benutze es momentan, um ein Tool in einer Firma zu schreiben, dass alle SVN-Repositories in ein einziges merged. Es gibt dafür leider kein Tool im Internet.

    Witzig, genauso ein Programm für Git habe ich neulich noch in Bash geschrieben.



  • Manchmal nutze ich Python fuer kleine Scripte, aber ansonsten nur noch Java. C++ muss ich leider gerade ein wenig fuer einen Auftrag machen, was fuer eine schreckliche Sprache und Workflow. Respekt wer sich so etwas freiwillig antut.



  • Python ist eine kleine, praktische Skriptsprache, mit der man sich schnell mal kleine Programme zusammenschreiben kann. Dabei hat man auch noch eine bessere Syntax und viel mehr moeglichkeiten als mit Bash. Auch zum ablaufenlassen von Tests scheint es ganz praktisch zu sein.

    Ich nutze es hauptsaechlich fuer kleine Berechnungen und um mal schnell was auszuprobieren.


  • Mod

    Für nichts mehr. Ich habe es eine Weile versucht, für Programme, die für Shellscript zu komplex und für eine general purpose Sprache zu einfach sind. Aber die Sprache hat mir überhaupt nicht gefallen. Seither bin ich stattdessen sehr viel besser in bash geworden und schrecke auch nicht zurück, für eine kleine Aufgabe C++ zu benutzen. Da habe ich mittlerweile so viele schöne kleine Helferlein, dass diese kleinen Aufgaben fast so einfach gehen wie in Scriptsprachen. Seither besteht kein Bedarf mehr für Zwischensprachen und ich habe Python mehr oder weniger aus dem Gedächtnis verdrängt. Ich weiß gar nicht mehr, was mich konkret störte, ich glaube es war irgendwas mit dem Objektmodell und/oder der Typisierung.

    PS: Und Nein, meine Helferlein veröffentliche ich nicht. Die sind historisch gewachsen und daher wahrscheinlich nur von mir vernünftig nutzbar.



  • Ich nutze Python auch überhaupt nicht.

    Ich finde Python-Code unglaublich anstrengend zu lesen. Ich hatte mal versucht damit was zu machen und alles in mir hat sich dagegen gewehrt solch einen Code zu schreiben. Es hat sich nicht natürlich für mich an gefühlt. Ich bin halt voll auf den C und C++ Syntax gepolt. Vielleicht bin ich auch zu alt um mich komplett um zu gewöhnen.



  • So viele Python-Hater hier! Dabei ist es so eine schöne Sprache und ich benutze sie, wann immer ich kann. Wer braucht schon C/C++!

    Nein, ich habe dieselben Probleme wie die meisten anderen und würde mich hüten, größere Anwendungen in Python zu schreiben. Für die abstrakte Ebene der Datenverarbeitung mit SciPy/NumPy ist Python ganz okay (was aber mehr mit den Bibliotheken zu tun hat als mit der Sprache), und MatPlotLib ist langsam, erzeugt aber wunderschöne Plots. Aber für größere kommerzielle Projekte mit mehreren Entwicklern und einer Deadline finde ich es ungeeignet.

    Vor einiger Zeit habe ich mal das Vergnügen gehabt, mich näher mit zwei größeren Python-Projekten aus der Bildverarbeitung auseinanderzusetzen, was meine Zweifel genährt hat:

    • beide GUIs waren furchtbar. Es gibt Qt-Wrapper für Python, und Qt kann sehr brauchbare Ergebnisse erzeugen, aber anscheinend haben Python-Programmierer kein Händchen dafür. Kein Wunder, wenn selbst der Schöpfer der Sprache solche Posts abläßt. "This then, was the big eye-opener for me: that despite all the hype, Windows UI programming is as tedious today as it was in 1995." - Klar, wir schreiben ja alle unsere Message-Loops von Hand; und was bitte ist ein Form-Designer?
    • der GIL verhindert fast alle nützlichen Formen von Multithreading. Aber wer braucht das schon, solange Intel alle zwei Jahre eine doppelt so schnelle CPU rausbringt!! Egal, jedenfalls waren die Autoren des einen Programms durchaus der Meinung, daß Multithreading ihnen nützen würde. Was also tun? Separate Worker-Prozesse spawnen und per IPC mit Daten füttern 😞
    • fast alle datenverarbeitenden Bibliotheken haben ein C-Backend, weil Python einfach zu langsam ist. Das wäre ja noch kein Problem, aber die meisten nutzen dafür Cython, und das läuft nur zusammen mit CPython. Das ist in der Praxis ein großer Hinderungsgrund, irgendwelche weniger bescheuerten Alternativen wie IronPython zu verwenden: alle Bibliotheken, die Cython verwenden, werden dann nicht unterstützt.
    • auch in Python hat der Autor einer Funktion üblicherweise eine genaue Vorstellung davon, welche Argumenttypen er erwartet. Die Folge ist, daß die typische API-Funktion einer Bibliothek zu 3/4 aus manuellen Typ-Assertions besteht. Und das ist guter Library-Code; wenn da keine Typ-Assertions sind, bekommt man irgendwo in den Untiefen der Bibliothek eine obskure Exception. Das ist fast dasselbe Problem wie mit Template-Typargumenten in C++, nur eben zur Laufzeit und ohne Performancevorteil. Außerdem fördert die dynamische Typisierung totum pro parte-Patterns ("dieser Parameter ist die ID des Objekts, aber du kannst auch das Objekt übergeben"), die eine statische Analyse zusätzlich erschweren. Und alles nur für ein paar Zeichen Tippersparnis.
    • die Komfort-Nachteile durch das dynamische Typsystem wurden schon erwähnt. Dabei gibt es sogar Tools, die eine Rohform von Code-Completion und sogar Refactorings anbieten (z.B. PTVS); aber es gibt ja sogar eine Python-Implementation ohne GIL (nämlich IronPython), und die benutzt auch keiner. Der wahre Python-Hacker schreibt seinen Code unter Linux im Texteditor (Debugger? Was ist das?), setzt CPython, automake und pip voraus und ist weitgehend kompatibel mit sich selbst.
    • natürlich sitzt die Hälfte der Abhängigkeiten noch auf Python 2.7 fest, so daß man selbst kein 3.x verwenden kann.

    Klar ist mit Python einfacher anfangen ( print "Hello, World!" ) als mit, sagen wir, C# ( using System; namespace MyProgram { public static class Program { public static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } ). Aber sobald man mal >1000 LoC hat, sind die syntaktischen Fixkosten von C# irrelevant, ganz abgesehen davon, was einem der Tool-Support alles abnimmt ("Generate Method Stub" & "Implement Interface" ftw).

    So, jetzt will ich aber mal eine ordentliche Apologie für Python lesen, sonst wird das hier zu einseitig 🤡



  • audacia schrieb:

    So, jetzt will ich aber mal eine ordentliche Apologie für Python lesen, sonst wird das hier zu einseitig 🤡

    - IDEs sind allesamt Bloatware und haben trotzdem nicht alle Features, die bei C-ähnlichen Sprachen sehr sinnvoll wären. Besonders schlimm ist die Situation bei C++, wo IDEs im Jahr 2000 feststecken. Python braucht keine IDE, denn da machen billige Menschen die Fleißarbeit.

    - Man kann an einem total kaputten Programm solange Workarounds für Laufzeitfehler einbauen, bis es irgendwie "funktioniert". Das ist in C++ viel schwieriger, weil dabei der Compiler so viele Semantikfehler anmeckert. Außerdem hat C++ undefiniertes Verhalten, was nicht immer ersichtlich ist.

    - Python und so sind total hip. Da ist man voll der Hacker ey.

    - Alle großen Webseiten laufen mit Python oder Ruby (bis sie das wegwerfen, weil die Hosting-Kosten explodieren).

    - Python kann man als besseres Bash verwenden.

    - Python ist besser als PHP.

    - Mit der Aussprache Pyfon kann man Pedanten ärgern, die wissen, dass der Name nicht von der Schlange kommt.



  • TyRoXx schrieb:

    - IDEs sind allesamt Bloatware und haben trotzdem nicht alle Features, die bei C-ähnlichen Sprachen sehr sinnvoll wären. Besonders schlimm ist die Situation bei C++, wo IDEs im Jahr 2000 feststecken. Python braucht keine IDE, denn da machen billige Menschen die Fleißarbeit.

    Gute IDEs sparen soviel Zeit, ich muss jedesmal lachen wenn Jemand einen normalen Texteditor verwendet...



  • Shade Of Mine schrieb:

    TyRoXx schrieb:

    - IDEs sind allesamt Bloatware und haben trotzdem nicht alle Features, die bei C-ähnlichen Sprachen sehr sinnvoll wären. Besonders schlimm ist die Situation bei C++, wo IDEs im Jahr 2000 feststecken. Python braucht keine IDE, denn da machen billige Menschen die Fleißarbeit.

    Gute IDEs sparen soviel Zeit, ich muss jedesmal lachen wenn Jemand einen normalen Texteditor verwendet...

    http://www.pequenocerdocapitalista.com/wp-content/uploads/2012/09/The_Sarcasm_Misunderstanding_by_ThePlotThinnens.jpg :p



  • Shade Of Mine schrieb:

    TyRoXx schrieb:

    - IDEs sind allesamt Bloatware und haben trotzdem nicht alle Features, die bei C-ähnlichen Sprachen sehr sinnvoll wären. Besonders schlimm ist die Situation bei C++, wo IDEs im Jahr 2000 feststecken. Python braucht keine IDE, denn da machen billige Menschen die Fleißarbeit.

    Gute IDEs sparen soviel Zeit, ich muss jedesmal lachen wenn Jemand einen normalen Texteditor verwendet...

    sprachabhängig.
    Aber zB Java würde mich ohne Eclipse ziemlich nerven, mit Eclipse aber geschmeidig.



  • TyRoXx schrieb:

    Ethon schrieb:

    Nichts Größeres weil mich da das fehlende (explizite) Typsystem furchtbar nervt, ich finde Programmieren ohne Typen sehr schwierig.

    Solche Sprachen haben genau einen Typ.

    Für winzige Programme, die in lesbarer Schrift auf den Bildschirm passen, kann ich gerade so noch mit Lua leben. Ich kann mir aber nicht vorstellen wie man damit größere Programme schreiben kann. Auf der Arbeit musste ich mal einen Bug in einer wenige hundert Zeilen umfassenden Javascript-Datei für eine Webseite beheben. Das ist wahnsinnig schwierig, wenn man eine IDE und einen Compiler gewohnt ist, die ein sinnvolles Typsystem unterstützen und damit ganz viel Unsinn vor dem Ausführen finden. Was kann in diesem Argument alles hereinkommen? In einer vernünftigen Sprache ist diese Frage schnell beantwortet, denn es steht direkt in der Parameterliste. In so einer Schwachsinnssprache wie Javascript muss man dann alle Aufrufe heraussuchen und hoffen, dass man keinen übersehen hat. Etwas umbenennen oder einen Parameter hinzufügen? In einer vernünftigen Sprache ganz einfach, weil dann bei jeder Verwendung der Compiler einen Fehler meldet. In ach so flexiblen "dynamischen" Sprachen ist so etwas Einfaches der Horror.

    Da muss es einen tollen Vorteil geben, der den gewaltigen Produktivitätsverlust beim Herumsuchen ausgleicht. Kann mich mal jemand aufklären?

    php ist mir sympathischer und Zeilenumbrüche statt 10000 Buchstaben in einer Zeile ebenfalls.

    EDIT:
    Hat was mit Gedanken sortieren zu tun



  • Ich hab’ Python mal gelernt, weil ich dachte, dass das praktisch für mich wär’. Aber im Endeffekt nutze ich die Sprache jetzt nicht. Im Moment experimentiere ich eher mit Rust, habe aber auch ein Auge auf Julia geworfen. Julia find ich interessant als Ersatz für Python / Matlab / GNU Octave, weil es generische Programmierung anscheinend besser unterstützt (Yay multiple dispatch!) und weil es JIT-kompiliert wird und daher nicht so lahmarschig ist.

    Oh warte ... mir fällt gerade ein, dass ich ja doch was in Python gebastelt habe, was ich sogar hinterher benutzt habe: Ich hab’ mich per Python in den DBus reingehängt, um in Abhängigkeit von Pidgin-Benachrichtigungen eine per USB angeschlossene RGB-LED anzusteuern — als Ersatz für die akkistuschen Signale.



  • Weil hier das Thema IDE so extensiv angesprochen wird: Ich war bisher auch mit keiner Python-IDE richtig glücklich, inklusive des heiligen ERIC - bis ich durch Zufall das Python-Plugin für KDevelop entdeckt habe. KDevelop + Python-Plugin ist für mich durchaus vergleichbar mit Eclipse für Java.


Anmelden zum Antworten