L
@SeppJ sagte in to_string():
Das Hautproblem bei Python-Dependencies ist, dass es nur ganz selten Rückwärtskompatibilität gibt. Nicht nur zwischen Bibliotheken, sondern auch in der Sprache selbst. Daher muss immer alles was man braucht auf einem gemeinsamen Stand sein, und wehe wenn man von irgendetwas abhängt, das langsam hinterher klüngelt. Dann ist man leider oft gezwungen, mit Updates zu warten, bis alle Macher nachgezogen haben. Und die Macher selbst haben wahrscheinlich selber das gleiche Problem, dass sie erst auf ihre Abhängigkeiten warten müssen, bis sie damit beginnen können, ihr Produkt auf eine neue Sprachversion anzuheben.
Bei C++ habe ich solche Probleme äußerst selten bis gar nie. Die meisten Schnittstellen sind sehr stabil, da sie auf C-Primitiven beruhen, und Sprachversion ist nur insofern ein Problem, dass der Compiler die neueste Sprachversion unterstützten muss, die irgendeine Abhängigkeit benötigt. Wenn man die Abhängigkeiten nicht selber compiliert, noch nicht einmal das.
Aber sonst will ich nix gegen Python gesagt haben, gute Sprache sonst.
Ist aber auch wirklich selten ein Problem, wenn man "bekannte" libraries nimmt. So als guideline sollte man eine halbwegs aktuelle Python Version nutzen, aber NIE die allerneuste. Und dann funktioniert eigentlich immer alles. Hatte in vielen Jahren eigentlich noch nie ein Problem mit pandas, numpy, tqdm etc.
Aber sobald ich Projekt X von irgendeinem PHD Researcher brauche, der noch ne requirements.txt nutzt, alle dependencies auf eine fixe Version gesetzt und zuletzt vor 5 Jahren angefasst hat, bricht alles instant.
Also aus meiner Sicht wirklich nur ein Problem, wenn man mal von dem recht bekannten Tensorflow Beispiel absieht, wenn man sehr spezialisierte Libraries braucht oder irgendwas, was nicht mehr maintained ist etc.
Nur im fairen Vergleich mit C++ muss man ja sagen, dass es gar nicht um spezialisierte Libraries geht, sondern um so Standard Kram, den man gerne haben möchte. Meistens sogar so Standard, dass man in Python oft gar keine Lib braucht (siehe fmt, siehe json lib). Also bei allen Problemen mit Python Dependencies (und ich hatte sehr viele bereits), das battle zwischen C++ und Python hat trotzdem einen relativ klaren Sieger, wenn es um die einfache Benutzung von Libs geht.
Noch als Zusatz: Auch in Python kann ich ein Projekt klonen und die setup.py oder pyproject.toml anpassen. Das ist zwar auch ein bisschen komplexer dann, aber insgesamt immer noch einfacher als das Standard C++ CMake Skript. Bei beidem habe ich schon üble Sachen gesehen, bei letzterem allerdings fast immer.