Muss ein Programmierer Speicherverwaltung können?



  • Muss ein Programmierer heute noch Speicherverwaltung können? Also mit malloc oder ähnlichem Speicher besorgen und später wieder freigeben. Oder muss man nicht mehr wissen wie sowas gemacht wird, weil es sowieso Frameworks und GCs gibt die sowas für einen machen?



  • Wenn du eine Sprache verwendest die den Speicher selbst verwaltet kannst du
    deren Vorteil geniessen:
    "du MUSST keinen Speicher mehr allokieren und freigeben",
    und kannst dich um andere Sachen kümmern.
    Wenn du eine Sprache verwendest die den Speicher nicht selbst verwaltet kannst
    du deren Vorteil geniessen:
    "du KANSST den Speicher selbst allokieren und freigeben"
    wie es dir notwendig und angemessen, bzw. optimal scheint.
    😉 😉



  • Wissen was dahinter steckt, welche verschiedenen Speicherbereiche es gibt, wo Daten in welchen Fällen landen etc., sollte imo jeder Programmierer, völlig unabhängig von der Sprache wissen.

    Das man je nach Sprache mehr oder weniger händisch machen muss ist klar. Aber nen GC und automatische Speicherverwaltung hilft dir wenig wenn du versuchst zig MB aufn Stack zu allokieren weil du vielleicht Call by Value statt Call By Referenze verwendet hast für nen Array als Funktionsparameter. Deshalb ist es wichtig zu wissen was wann verwendet wird, selbst wenn man nur im Hintergrund damit konfrontiert wird.



  • aeiou schrieb:

    Muss ein Programmierer heute noch Speicherverwaltung können? Also mit malloc oder ähnlichem Speicher besorgen und später wieder freigeben. Oder muss man nicht mehr wissen wie sowas gemacht wird, weil es sowieso Frameworks und GCs gibt die sowas für einen machen?

    GCs verstecken eine Menge der Arbeit vor dem Programmierer, aber man muss dennoch gewisse Informationen haben um den GC nicht ins schwitzen zu bringen.

    zB ist immer ein array zu nehmen wenn man eigentlich eine liste will ziemlich dämlich 😉



  • Shade Of Mine schrieb:

    zB ist immer ein array zu nehmen wenn man eigentlich eine liste will ziemlich dämlich 😉

    zB ein Array mit Pointern ? *g*



  • Shade Of Mine schrieb:

    aeiou schrieb:

    Muss ein Programmierer heute noch Speicherverwaltung können? Also mit malloc oder ähnlichem Speicher besorgen und später wieder freigeben. Oder muss man nicht mehr wissen wie sowas gemacht wird, weil es sowieso Frameworks und GCs gibt die sowas für einen machen?

    GCs verstecken eine Menge der Arbeit vor dem Programmierer, aber man muss dennoch gewisse Informationen haben um den GC nicht ins schwitzen zu bringen.

    zB ist immer ein array zu nehmen wenn man eigentlich eine liste will ziemlich dämlich 😉

    Mann muss doch für ne Liste nichts von Speicherverwaltung wissen, dass machen doch fertige Listen schon für einen.



  • Hallo

    Das stimmt natürlich, shade geht es ja auch um den konzeptionellen Unterschied zwischen Array und Liste. Die Elemente eines Arrays sind immer aufeinanderfolgend. Die Elemente einer Liste nicht, diese haben jeweils einen Pointer auf das nächste Element. Dadurch ergeben sich für beide Varianten verschiedene Vor- und Nachteile. Wer diese nicht berücksichtigt wird unter Umständen ineffizienten Code schreiben, egal ob GC oder nicht.

    bis bald
    akari



  • Hallo

    Läuft das dann nicht eher unter Mikrooptimierungen?

    chrische



  • Nein, das fällt unter Wahl des richtigen Algorithmus' (und hat mit Speicherverwaltung IMHO nicht besonders viel zu tun.)



  • es kann viel geschwindigkeit bringen wenn man weiss wie die container im speicher liegen und sich nicht nur auf theoretische O-werte fuer die sie verlaesst. zudem ist der speicherverbrauch der container sehr unterschiedlich, was auch ein grosser unterschied ist.



  • Ich denke man sollte es können, da dieselben Konzepte für andere Ressourcen (für die es auch keinen GC gibt) gelten. Da wäre ja offene Dateien, Netzwerkverbindungen und ähnliche Dinge zu verwalten.



  • Und irgendwann fragen wir uns hier sicher noch, ob ein Programmierer überhaupt programmieren können muss. 😉


Log in to reply