Folgen

rant 

Python ist wirklich eine schreckliche Erfindung gewesen und jede Einfachheit wird mit sehr ätzenden Laufzeitfehlern gekauft. Ich kann nicht nachvollziehen, warum es im wissenschaftlichen Kontext so gerne verwendet wird.

@jannik Weil gerade dort immer noch kurz vor Deadline schnell was hingepfuscht werden muss... ;)

Für schnelles Prototyping ist #Python super, für ernsthafte Apps eher weniger.

@ls aber nicht Mal prototypen macht Spaß damit, weil man sich ständig in den Fuß schießt..

@ls Magst du kurz deine Perspektive etwas erklären?

@blub Python ist halt sehr dynamisch. Je komplexer eine Anwendung wird, desto wichtiger werden compile-time Checks, z.B. welche Datentypen an welche Funktionen übergeben werden dürfen. Auch fehlen dedizierte Variablendeklaration, damit Tippfehler sofort auffallen.

@ls Aber ist dieser Gegensatz dynamisch vs. statisch nicht schon sehr alt? Dem gegenüber hätte Java z.B. unendlich viel (toten) Gluecode, der eigentlich auch gepflegt werden muss etc. Es gibt in allen Sprachen gute große Frameworks die damit gebaut werden, von daher würde ich das so pauschal nicht sehen 😉

@jannik Naja vor Python gab es wenig universelle Skriptsprachen die in vielen Themenfeldern verbreitet waren z.B: GIS, ML, NLP, Datascience, ...

@blub @jannik Ja, klar ist der alt. Aber immer noch richtig.

Ich weiß nicht, wie Du jetzt auf Glue-Code und Frameworks kommst. Meine Kritik wurzelt in der Sprache #Python selbst.

Z.B. die Klassen/Methoden mit dem "self"-Parameter wirken wie ein wüster Hack um mit Dynamik echte Klassen zu simulieren.

Ein moderner Compiler denkt mit und kann erstaunlich viele Fehler zur Kompilezeit melden, die in Python erst irgendwann auffallen würden. Und das rächt sich halt bei großer Komplexität.

@ls
@blub @jannik
> Z.B. die Klassen/Methoden mit dem "self"-Parameter wirken wie ein wüster Hack um mit Dynamik echte Klassen zu simulieren.

“self" als Parameter gibt es gemäß dem Prinzip "explizit ist besser als implizit".

Da werden auch keine echten Klassen simuliert, denn es *sind* echte Klassen. Denn was sind Klassen im wesentlichen anderes, Typen, an denen Methoden/Funktionen hängen?

@blub @jannik

@kirschwipfel @blub Wenn explizit besser ist, warum wird 'self' dann beim Aufruf implizit übergeben?

Diese Asymmetrie (Funktion hat n+1 Parameter, Aufruf nur n) finde ich nicht durchdacht. Die Methoden wirken eher wie einfache Funktionen mit etwas syntactic sugar beim Aufruf.

Zu echten/modernen Klassen gehört auch eine richtige Kapselung, also z.B. private und protected Klassenattribute und Methoden. Das unterstützt Python nur rudimentär und die Unterstriche sind weder elegant noch explizit.

@ls
> warum 'self' … implizit?

Weil „myObj.method(myObj, …)“ redundant wäre und damit niemand auf die Idee kommt „myObj.method(objEinerTotalAnderenKlasse, …)“ zu schreiben.

> … wirken eher wie einfache Funktionen mit etwas syntactic sugar beim Aufruf.

Egal in welcher Sprache: Am Ende wird eine Funktion aufgerufen. Klassen sind eigentlich immer syntactic sugar, denn man könnte sie auch händisch implementieren (solange die Sprache Funktionen als Variablen erlaubt)

@blub

@kirschwipfel @blub Ich sehe trotzdem keinen Vorteil zum this-Zeiger, wie es ihn z.B. in C++ gibt.

Klar kann man Klassen auch selbst implementieren, aber das ist der Wartbarkeit der Software nicht zuträglich weil zusätzliche Komplexität.

Und bei Python sieht man halt nicht auf einen Blick, wie viele Attribute so eine Klasse überhaupt hat.

rant 

@jannik weil's einfach zu lernen ist. nicht jeder möchte viel zeit mit code verbringen...

rant 

@raketenlurch @jannik Das sind nim oder php auch… 

rant 

@f2k1de @raketenlurch @jannik php hat dann aber dieses sehr weiche Typsystem

rant 

@raketenlurch Das verstehe ich voll und als erste Programmiersprache ist es wahrscheinlich angenehmer, weil man schnell zu Ergebnissen kommt, aber sobald man nicht mehr auf den ausgelatschten Pfaden läuft, und z.B. externe Libraries braucht, fängt plötzlich alles an zu brennen.

rant 

@jannik dependency management ist aber bei fast jeder sprache hell. das ist imho kein argument gegen python

rant 

@raketenlurch Ich komme mit dem npm / php / elixir-Konzept persönlich viel viel besser als mit dem python/c-Weg, bei dem man einfach darauf vertraut, dass eine Library schon irgendwie da ist..

rant 

@jannik @raketenlurch Dafür lädt mensch sich schneller mal unerwünschtes.. ;)

rant 

@hackbyte @raketenlurch Ist doch der Malware egal, ob sie jetzt in ~/dev/project/node_modules oder in ~/.m2 oder in /usr/lib liegt?

rant 

@jannik python ist IMHO super für Scripte, aber wenn es mehr wird, wird es schmerzthaft.

rant 

@jannik es ist halt einfach nicht geil!

Melde dich an, um an der Konversation teilzuhaben
Ülfte

Ülfte ist ein verteiltes (föderalisiertes) soziales Netzwerk, ähnlich wie andere bekannte Plattformen. Es frei von Werbung oder Algorithmen und basiert auf dem Mastodon Softwareprojekt.