this post was submitted on 04 Dec 2024
129 points (95.1% liked)

ich_iel

2183 readers
610 users here now

Die offizielle Zweigstelle von ich_iel im Fediversum.

Alle Pfosten mĂŒssen den Titel 'ich_iel' haben, der Unterstrich darf durch ein beliebiges Symbol oder Bildschriftzeichen ersetzt werden. Ihr dĂŒrft euch frei entfalten!


Matrix


đŸ“± Empfohlene Schlaufon-Applikationen fĂŒr Lassmich


Befreundete Kommunen:


Regeln:

1. Seid nett zueinander

Diskriminierung anderer Benutzer, Beleidigungen und Provokationen sind verboten.

2. Pfosten mĂŒssen den Titel 'ich_iel' oder 'ich iel' haben

Nur Pfosten mit dem Titel 'ich_iel' oder 'ich iel' sind zugelassen. Alle anderen werden automatisch entfernt.

Unterstrich oder Abstand dĂŒrfen durch ein beliebiges Textsymbol oder bis zu drei beliebige Emojis ersetzt werden.

3. Keine HochwÀhl-Maimais oder (Eigen)werbung

Alle Pfosten, die um HochwĂ€hlis bitten oder Werbung beinhalten werden entfernt. Hiermit ist auch Eigenwerbung gemeint, z.b. fĂŒr andere Gemeinschaften.

4. Keine BildschirmschĂŒsse von Unterhaltungen

Alle Pfosten, die BildschirmschĂŒsse von Unterhaltungen, wie beispielsweise aus WasistApplikaton oder Zwietracht zeigen, sind nicht erlaubt. Hierzu zĂ€hlen auch Unterhaltungen mit KIs.

5. Keine kantigen BeitrÀge oder Meta-BeitrÀge

ich_iel ist kein kantiges Maimai-Brett. Meta-BeitrĂ€ge, insbesondere ĂŒber gelöschte oder gesperrte BeitrĂ€ge, sind nicht erlaubt.

6. Keine ÜberfĂ€lle

Wer einen Überfall auf eine andere Gemeinschaft plant, muss diesen zuerst mit den Mods abklĂ€ren. Brigadieren ist strengstens verboten.

7. Keine Ü40-Maimais

Maimais, die es bereits in die WasistApplikation-Familienplauderei geschafft haben oder von RĂŒdiger beim letzten Stammtisch herumgezeigt wurden, sind besser auf /c/ichbin40undlustig aufgehoben.

8. ich_iel ist eine humoristische Plattform

Alle Pfosten auf ich_iel mĂŒssen humorvoll gestaltet sein. Humor ist subjektiv, aber ein Pfosten muss zumindest einen humoristischen Anspruch haben. Die AtmosphĂ€re auf ich_iel soll humorvoll und locker gehalten werden.

9. Keine Polemik, keine KöderbeitrÀge, keine Falschmeldungen

BeitrĂ€ge, die wegen Polemik negativ auffallen, sind nicht gestattet. Desweiteren sind Pfosten nicht gestattet, die primĂ€r Empörung, Aufregung, Wut o.Ä. ĂŒber ein (insbesonders, aber nicht nur) politisches Thema hervorrufen sollen. Die Verbreitung von Falschmeldungen ist bei uns nicht erlaubt.


Bitte beachtet auch die Regeln von Feddit.org

founded 6 months ago
MODERATORS
 

Kontext: Ich kann bis jetzt nur Java und will ein Programm schreiben um die Metadaten meiner Musikbibliothek zu verĂ€ndern. Die Bibliothek die das Möglich macht unterstĂŒtzt nur Python. Anfangs war ich echt positiv von der Einfachheit ĂŒberrascht, aber mittlerweile kann ich den Hass auf Python sehr stark verstehen. SpĂ€testens bei den Ersten Typisierungsfehlern lernt man stark typisierte Sprachen wie Java zu schĂ€tzen.

top 50 comments
sorted by: hot top controversial new old
[–] pulsey 34 points 2 weeks ago (1 children)

Mit Java fÀngt man beim rechten Bild an und es bleibt auch dabei.

[–] Black616Angel@discuss.tchncs.de 3 points 2 weeks ago (3 children)

Ich lerne grade die (Programmier-)Arbeit an einem Tool, welches zwar in Java geschrieben ist, aber Python als Skriptsprache verwendet... Python 2.

Außerdem muss man den Testserver fĂŒr das Testen von Änderungen rebooten, wir haben aber nur einen Server fĂŒr ca. 6 Leute.

Ich freue mich schon auf die Arbeit.

[–] ___qwertz___ 3 points 2 weeks ago (1 children)

Jython?

Ich hasse Jython, wie kann man den so viele Jahre den Sprung auf Python 3 verpassen? >_>

Das kann sein. Aber das ist nur in dem Tool integriert, das wir eingekauft haben... Vor ca. 5 Jahren... Als Python 2 schon fast eol war.

[–] Randelung@lemmy.world 3 points 2 weeks ago (1 children)

(Eigene) VM und automatisierte Tests fĂŒr beste Ergebnisse.

Ja aber die Lizenzen...

[–] pulsey 3 points 2 weeks ago

Das klingt als wÀrst du in der Hölle. Hoffentlich wird's bald besser.

[–] bjoern_tantau@swg-empire.de 21 points 2 weeks ago (2 children)

Was ich gelernt habe ist, dass du Python so schreiben solltest als wĂ€re es typisiert. Hab bisher nur Godot Script geschrieben, aber das ist stark an Python angelehnt, deshalb hoffe ich, dass sich das ĂŒbertragen lĂ€sst.

Du kannst so ziemlich allem einen Typ geben und das so forcieren. Dann solltest du nicht durcheinander kommen.

[–] mogoh@lemmy.ml 9 points 2 weeks ago

Hilft einem wenig, wenn man libraries verwendet.

[–] UnfortunateShort@lemmy.world 6 points 2 weeks ago

Das Type-Checking kann aber leider nicht mit strikt typisierten Sprachen mithalten und erfordert oft manuelle Checks, die eigentlich komplett ĂŒberflĂŒssig sind. Liegt natĂŒrlich auch daran, dass man die Typen theoretisch stĂ€ndig Ă€ndern kann, egal was dran steht.

Und was schlimmer ist: Fehler in den Annotations fĂŒhren teilweise dazu, dass dir vermeintliche Folgefehler an komplett anderen Stellen angezeigt werden, als sie wirklich liegen. Z.B. dass deine Variable an gegebener Stelle den falschen Typ hat, was aber eigentlich daran liegt, dass an anderer Stelle was kompatibles aber verkehrtes zugewiesen wurde, wobei du ursprĂŒnglich die Annotation vergessen hast, weil an der Stelle ein Type-Hint aufgeplopt ist, was den ersten Fehler widerum unsichtbar macht.

Klingt vielleicht konstruiert, aber eine Annotation vergisst man schnell und wenn, dann wird es schnell Àrgerlich.

[–] jenesaisquoi 18 points 2 weeks ago (2 children)

Du brauchst mypy in deinem Leben.

Oder die Hartkern-Variante: in Rust schreiben und via Python konsumierbar machen mit PyO3

[–] runiq 6 points 2 weeks ago

Im Prinzip ja, aber fĂŒr ein One-Off-Skript zum Anpassen von Metadaten wĂ€ren mir das dann wahrscheinlich doch zuviele Typen.

[–] muelltonne 3 points 2 weeks ago (1 children)
[–] wasabi 6 points 2 weeks ago* (last edited 2 weeks ago)

Python kann mittlerweile statische type hints. Dabei schreibst du nur die intention ("ein int geht rein, ein bool kommt raus"). Mypy warnt dich dann wenn du in irgendeine Funktion Daten reinstecken willst, die nicht reinpassen. Zur Laufzeit werden die type gibts ignoriert. Je nachdem wen man fragt ist das entweder eine total flexible Art Typen so stark oder so lax wie man möchte in seinen code zu integrieren, oder es ist nutzlos da es keine laufzeitsicherheit bietet.

[–] Diplomjodler3@lemmy.world 17 points 2 weeks ago (1 children)

Du machst es falsch. Sorry, wenn ich hier pauschal werde. Aber so eine Aufgabe ist wirklich trivial in Python. Ich verstehe, das man da verwirrt ist, wenn man von anderen Sprachen kommt, aber du musst einfach ein bisschen umdenken.

[–] cows_are_underrated 2 points 2 weeks ago (1 children)

Das ganze Ding ist nicht enorm schwer, aber Python hat einfach nicht die KomplexitĂ€t die ich brauche um mich wohl zu fĂŒhlen. Zudem finde ich das ganze Syntax teils sehr komisch.

[–] Diplomjodler3@lemmy.world 5 points 2 weeks ago (1 children)

Da kann Python nun aber nix dafĂŒr.

[–] cows_are_underrated 4 points 2 weeks ago (1 children)

Das ist so. Sorgt trotzdem dafĂŒr, dass ich Python auf keinen Fall fĂŒr GrĂ¶ĂŸere Projekte nutzen werde.

[–] Diplomjodler3@lemmy.world 2 points 2 weeks ago

Das ist dein gutes Recht, Brudi.

[–] 5W_lzxEP@lemmy.world 12 points 2 weeks ago (1 children)

Python ist stark Typisiert. Was du meist ist dynamisch - statisch.

[–] Saleh 10 points 2 weeks ago (2 children)

Ich mag dynamische Typisierung. Ich möchte nicht an jeder Stelle dem Programm erklĂ€ren mĂŒssen, dass ich eine Fließkommazahl speichern möchte, wenn ich eine Ganzzahl mit einer Fließkommazahl multipliziert habe. Ich möchte auch nicht bei großen 2D-Arrays Speicherplatz fressen, weil keine Spalten mit verschiedneen Typen zugelassen werden und alles in Fließkomma, oder noch schlimmer in Text umgewandelt werden muss.

[–] aaaaaaaaargh 16 points 2 weeks ago (2 children)

Provokativer Nimm: Wenn du dynamische Typisierung in einer Matrix brauchst, ist dein Programm vermutlich nicht besonders performant.

Genau wegen sowas wĂŒrde ich Python nie fĂŒr mehr als einfache Skripte nehmen, aber da stehe ich vermutlich eher allein auf weiter Flur.

[–] wasabi 3 points 2 weeks ago (1 children)

Sowas macht in modernem Python auch niemand. Dem type checker fĂŒr solche Konstrukte einen Typ beizubringen ist quasi unmöglich. Wer außerhalb von winzigen skripten keine type hints nutzt, machts mMn falsch.

[–] aaaaaaaaargh 3 points 2 weeks ago

Naja, ich habe ja direkt auf jemanden reagiert, der das offensichtlich tut, also so ganz niemand stimmt wohl nicht.

[–] gandalf_der_12te 2 points 2 weeks ago (1 children)

dynamische Typisierung

"Spalten mit verschiedenen Typen" klingt fĂŒr mich stark nach Tabelle, a.k.a. Excel-Tabelle oder ne Art Datenbank-Table.

[–] aaaaaaaaargh 3 points 2 weeks ago

In einer strikten Typisierung wĂ€re der Typ des Feldes einer n-dimensionalen Matrix bereits bekannt, was natĂŒrlich deutliche Vorteile hinsichtlich ihrer Abarbeitung in kritischen Bereichen erlauben wĂŒrde. Bei "Spalten mit verschiedenen Typen" klingt das eher nach einem generischen Datenmodell.

[–] froh42@lemmy.world 11 points 2 weeks ago (1 children)

a) Bei statisch typisierten Sprachen geht der Trend auch stark dort hin, dass der Complier fĂŒr Dich die Typen ermittelt - zur Compile-Zeit. Auch haben viele davon auch die Möglichkeit punktuell dynamisch zu arbeiten, an genau den Stellen, wo man es braucht.

b) Oh wow, du möchtest nicht "Speicherplatz fressen". Dann nimm eine Sprache / Werkzeug / Library, die nicht pro gespeichertem Wert einzeln tracken muss, von welchem Typ sie ist. Hier zahlst Du in dynamischen Sprachen immer einen Performance-Overhead. Deswegen wird z. B. in Python viel Number crunching auch nicht in Python selbst gemacht, sondern in NumPy

[–] aaaaaaaaargh 5 points 2 weeks ago (1 children)

ad b) nicht nur Performance-Overhead, sondern eine dynamisch typisierte Sprache macht das ja auch nicht umsonst, da wird irgendwo ein Typen-Bit oder Byte rumfliegen.

Ich glaube, dass hinter der vorangehenden (also nicht deiner) Aussage, die Unkenntnis ĂŒber effiziente Speichermodelle steht. Ein auf fp32 basiertes Modell ist fĂŒr hohen Durchsatz garantiert geeigneter als irgendwas gemischtes. Deswegen ist der Speicherplatz egal, das wird eh alles in den Cache gerammelt und die sind groß genug. Und bei Nudelmaschinen (SIMD) muss man eh HomogenitĂ€t gewĂ€hrleisten.

[–] froh42@lemmy.world 4 points 2 weeks ago (1 children)

FĂŒnfzehn Extrapunkte fĂŒr den Begriff Nudelmaschine fĂŒr SIMD

[–] aaaaaaaaargh 2 points 2 weeks ago* (last edited 2 weeks ago)

Seit Jahren lasse ich den fallen und seit Jahren scheint das niemand zu registrieren. Mir geht das Herz auf - danke!

[–] redxef 12 points 2 weeks ago (1 children)

Lustiger Fakt: Python ist stark typisiert (aber dynamisch), aber booleans sind trotzdem integer:

assert isinstance(True, int)

War die einzige Falle in die ich bis jetzt rein gelaufen bin, die wirklich gemein ist.

Und typehints im Zusammenhang mit cython. Und cython eigenheiten generell.

[–] d_k_bo 4 points 2 weeks ago (1 children)

Python ist stark typisiert (aber dynamisch), aber booleans sind trotzdem integer

Das ist kein Widerspruch, bool ist eine Subklasse von int.

assert issubclass(bool, int)
[–] redxef 5 points 2 weeks ago

Ja, das aber war eher so gemeint, dass es total unerwartet ist.

[–] eunieisthebus 10 points 2 weeks ago

Python ist doch angenehm. Und die meisten typfehler sagt dir schon die Entwicklungsumgebung noch vor dem run.

FĂŒr kleinere Sachen ist python sowieso spitze weil wortarm und fĂŒr grĂ¶ĂŸeres solltest du sowieso Tests schreiben um Fehler auszuschließen. Ob Python oder Java ist dann auch wurst

[–] death_to_carrots 8 points 2 weeks ago* (last edited 2 weeks ago)

Schau dir mal pydantic und allgemein Type Hints an.

[–] aaaaaaaaargh 8 points 2 weeks ago (1 children)

[Zensierte abfĂ€llige und zynische Bemerkungen ĂŒber Python]

[–] Diplomjodler3@lemmy.world 8 points 2 weeks ago (2 children)

[Sarkastisch formulierter Vorwurf des mangelnden VerstÀndnisses von Python]

[–] aaaaaaaaargh 4 points 2 weeks ago

[Patzige Antwort ĂŒber GIL, furchtbare Syntax und brechende VerĂ€nderungen]

[–] fairchild@sopuli.xyz 1 points 2 weeks ago

Verstehe ich so gar nicht, meine Erfahrung mit PythđŸ€ą warte kurz đŸ€ź

[–] trollercoaster@sh.itjust.works 7 points 2 weeks ago (1 children)

Python ist eigentlich ganz nett. Man muss nur pragmatisch rangehen und auf jeden Fall die Community und die merkwĂŒrdigen SĂ€ue, die die regelmĂ€ĂŸig durchs Dorf treiben, ignorieren...

Gerade fĂŒr kleinere Sachen ist das so sperrigen Sprachen wie Java deutlich ĂŒberlegen, wenn man sich erstmal reingefunden hat.

Wie bei allen Programmiersprachen, ist es natĂŒrlich sinnvoll, gescheite Werkzeuge zu benutzen.

[–] cows_are_underrated 2 points 2 weeks ago (2 children)

FĂŒr kleine Sachen ist Python geil, da hört es aber auch schon auf.

[–] fallingcats@discuss.tchncs.de 4 points 2 weeks ago* (last edited 2 weeks ago)

Sag das Home Assistant, es scheint fĂŒr die recht gut zu funktionieren.

[–] Gladaed 1 points 2 weeks ago (1 children)

Papperlapap, fĂŒr fast alles was scripting ist ist python toll.

E.g. conan2 ist pythonbasiert. Testsuites kann man damit auch betreiben. Und es erlaubt dir z.b.PS nicht zu können wenn du plattformunabhÀngigkeit brauchst.

[–] cows_are_underrated 2 points 2 weeks ago (1 children)

FĂŒr simple Sachen ist es gut, aber komplexe Sachen machen absolut keinSpaß, einfach weil Python zu blöd ist zu verstehen was ich tue wenn ich meine ganzen Klassen nicht an den Anfang schreiben will. Das macht das ganze Ding einfach u ĂŒbersichtlicher und zwingt einen dazu eventuell Sachen umzustrukturieren, obwohl es dadurch dann unĂŒbersichtlicher wird.

[–] nett_hier 2 points 2 weeks ago

Du kannst am Anfang from __future__ import annotations machen und dann Klassen vor ihrer Deklaration verwenden. Siehe auch dieser StapelÜberlauf Faden: https://stackoverflow.com/questions/61544854/from-future-import-annotations

[–] polle 5 points 2 weeks ago

Ich sehe, selbst nicht checken und dann ist die Programmiersprache das Problem, nice.

[–] random@lemmy.blahaj.zone 3 points 2 weeks ago

durchschnittlicher pyton benutzer gegen umschreiben in rost chad

[–] NotAnonymousAtAll 3 points 2 weeks ago* (last edited 2 weeks ago)

Wisst ihr eigentlich wie gut es sich anfĂŒhlt durch eine Kommentarsektion zu blĂ€ttern bei der bei fast jedem Unter-Faden etwas steht zu dem mensch sich Ă€ußern könnte; aber dann bewusst zu entscheiden, dass das echt nicht nötig ist und auch andere Menschen das genau so gut unter sich ausdiskutieren können; und dann halt einfach nicht auf irgendwelche Details eine Reaktion zu pfostieren, sondern einfach nur zu chillen (und vielleicht einen Meta-Kommentar abzusetzen, aber mehr nicht)?

[–] wasabi 2 points 2 weeks ago (1 children)

Warum nimmst du nicht einfach taglib? Die library hat bindings fĂŒr viele sprachen

[–] cows_are_underrated 1 points 2 weeks ago

Das ist das erste mal, dass ich ĂŒberhaupt mit libraries Arbeite, also kenne ich den ganzen Kram noch nicht. Wenn ich mein script final fertiggestellt habe kommt das ganze vielleicht noch in Java, wo ich dann taglib nutze.

load more comments
view more: next â€ș