Seite 1 von 1

Speicherverwaltung

Verfasst: Freitag 28. Oktober 2016, 13:18
von PythonJungspund
Hallo

Ich bin neu in diesem Forum. Einen wirklichen "Programmier-backgrounnd" habe ich nicht. Seit etwa einem Jahr bin ich aus beruflichen Gründen am erlernen der Sprache C++. Nun muss ich Python lernen. Ich habe mir ein paar Bücher gekauft und angefangen zu lernen. Darin bin ich auf folgenden Satz gestoßen, der sich mit allem beißt was ich bis dato über Programmierung gelernt habe:

"PyTables supports out-of-memory operations, which makes it possible to implement array-based computations that do not fit into the memory"

Wenn ich mir überlege wie viele Stunden ich schon mit Debuggern verbringen musste um memory leaks zu finden,.... so schockiert mich obiger Satz doch sehr...

Zudem sehe ich darin die Gefahr, dass schlimme Bugs entstehen könnten. Ein segmentation error entsteht ja nicht grundlos. Damit meine ich nicht sich bei einer Schleife zu verzählen, sondern unter Umständen elementare Fehler in der Programmlogik.

Ich würde gerne wissen wie erfahrene Python user das sehen?

Grüße
PythonJungspund

Re: Speicherverwaltung

Verfasst: Freitag 28. Oktober 2016, 14:07
von Sirius3
@PythonJungspund: Du verstehst den Satz, glaube ich, falsch. Um Rechnungen durchführen zu können, müssen die Werte dafür im Arbeitsspeicher des Rechners liegen. Bei Array-Operationen müssen aber nicht zwangsläufig alle Werte im Speicher sein, sondern nur ein Teil. Der Rest kann auf einer Festplatte liegen und bei Bedarf nachgeladen werden. PyTables unterstützt den Programmierer dabei, dass das Nachladen möglichst transparent erfolgt. Hier finden also keine Operationen auf Speicher statt, auf dem man das nicht darf. Da ein Python-Programmierer keinen Einfluß auf die Speicherverwaltung hat, kann es auch keine Segmentation Faults geben und somit tritt diese Gruppe an Bugs, mit der sich ein C++-Programmierer herumschlagen muß, gar nicht auf.

Re: Speicherverwaltung

Verfasst: Freitag 28. Oktober 2016, 16:26
von DasIch
Ein Segmentation Error entsteht durchaus grundlos, zumindest insofern als dass es keinen guten Grund dafür gibt dass er zur Laufzeit in einer modernen Programmiersprache auftauchen kann.