Skip to content

delete vs. remove

Mal wieder eine kleine Nomenklator-Diskussionrunde: Was versteht Ihr unter delete, was unter remove?

Ich bin auf die Meinungen und Erklärungen gespannt, insbesondere darauf, die man sich unter Linux dann "rm" erklärt ;-)

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

allo

Vorsicht, ein Löschen einer Datei unter Linux ist kein delete, sondern ein unlink.

Das ergibt insofern Sinn, als dass die Daten auf der Festplatte nicht gelöscht werden und vor allem eine Datei ja viele Hardlinks haben kann, bei denen ein unlink nur genau einen entfernt.

Gummipunkt

Ich erwarte das komplett gleiche/selbe Verhalten. Nämlich eine mehr oder weniger unwiderruflichen Löschaktion.

uwe

das kommt für mich komplett auf den Kontext an. in den meisten Fällen würde ich es analog gebrauchen aber unter Windows ist delete etwas 'weicher' weil es ja den Papierkorb gibt. bei einer MySQL DB wäre remove für mich eher 'auf jeden Fall von Server runter', es gibt aber eventuell noch ein Backup. delete wär für mich in dem Kontext wirklich weg weg inkl. Backups

Alex

Bei irgendeiner Entwicklungsumgebung hatte ich das mal, das "remove" nur eine Datei aus dem Projekt entfernt hat, "delete" stattdessen die Datei auch gelöscht hat.
Bei Webanwendungen hatte ich aber schon beides, mal hat remove nur eine Referenz entfernt und delete den Datensatz gelöscht, mal genau andersrum...

Sebastian

Meine ganz persönliche, völlig subjektive Antwort auf diese Frage: Ich verwende remove als Begriff für das Gegenteil von "add" und "delete" als Begriff für das Gegenteil von "create". Auf der Ebene halte ich es konsistent, d.h. wenn im UI an einer Stelle der Begriff "create" verwendet wird, wird entsprechend an anderer Stelle der Begriff "delete" verwendet.

Umgekehrt versuche ich in "create" vs. "add" bzw. "delete" vs. "remove" möglichst wenig hineinzuinterpretieren, wenn ich es irgendwo sehe. Nach meinem Verständnis implizieren "add" und "remove" das ein Objekt einer Sammlung hinzugefügt bzw. aus ihr entfernt wird, ohne notwendigerweise das eigentliche Objekt selbst zu erstellen bzw. zu zerstören. "create" und "delete" sind hingegen eher Begriffe die ich auf ein Objekt selbst beziehen würde. Allerdings sehe ich bei dieser Interpretation zwei Probleme:

Erstens kann ein "add" ein "create" als Nebenwirkung und ein "remove" ein "delete" als Nebenwirkung haben, wenn z.B. ein Objekt erst durch das hinzufügen zu einer Sammlung erzeugt wird. Wenn ich z.B. einen Datensatz in einer Datenbank hinzufüge (was in SQL mit "insert" bezeichnet wird, womit wir noch einen dritten Begriff hätten), kann man durchaus die Ansicht vertreten, dass das durch den Datensatz repräsentierte Objekt erst durch dieses Hinzufügen überhaupt erstellt wird. Umgekehrt entspricht das Entfernen dieses Datensatzes aus der Datenbank normalerweise dem Zerstören des entsprechenden Objekts.

Das andere Probleme ist die Frage der Objektidentität: Aus praktischen Gründen lässt sich die Objektidentität auf nicht-technischer Ebene eigentlich nur über die Äquivalenz der zugehörigen Daten definieren, d.h. ich betrachte zwei Objekte als identisch, wenn sie sich anhand ihrer Daten nicht unterscheiden lassen. Dann wird aber auch die Unterscheidung zwischen "remove" und "delete" weitgehend hinfällig, weil ein "remove" aus einer bestimmten Datensammlung einem "delete" einer bestimmten Objektinstanz entsprechen kann, während andere identische Objektinstanzen (und damit das Objekt als solches) weiterhin existieren.

Kurz gesagt: Solange es innerhalb einer Anwendung bzw. innerhalb eines Dokuments konsistent gehandhabt wird, ist mir relativ egal ob "add" / "remove" oder "create" / "delete" verwendet werden. Die Kombinationen "add" / "delete" oder "create" / "remove" mag ich nicht so sehr, weil sie eine gewisse sprachliche Inkonsistenz aufweisen. Hineininterpretieren würde ich sicherheitshalber in keinen der Begriffe etwas - die genauen Auswirkungen einer solchen Operation sollten immer aus der weiteren Dokumentation hervorgehen.

hoschi

Es haengt vom Kontext ab, zum Beispiel ist shall in einem RFC ein must und kein sollen (weil: rechtsenglisch). Also immer schoen das Handbuch, API, Glossar oder Beispiele genau ansehen!

Rein agnostisch betrachtet entfernt ein *remove*, eine delete dagegen loescht vernichtet also die Daten, fuer mich. Dazu passt dann das Verhalten von rm unter Linux und auch die Schilderung von Alex.

Dennis

wenn man Dateien mit rm entfernt, werden sie ja lediglich aus dem Dateisystem entfernt, während sie aber noch als bits auf der Magnetscheibe vorhanden sind.

Wenn man etwas löscht, dann ist es gar nicht mehr vorhanden. Zum Beispiel wenn ich ein Wort aus einer Textdatei lösche (und diese dann erneut speichere).

Andreas

Die Chance ist hoch dass dein Wort aus der Textdatei durchaus physisch noch da ist...

Zeddi

Ich finde die Begriffe kann man recht Synonym verwendet.

Im Linuxumfeld ist ein "rm" ein direktes Löschen/delinken, auf meinem Atari war "Delete" genau das gleiche ohne Papierkorb-Umweg.

Stefan

Das ist doch ganz einfach: delete löscht einen Pointer, remove/unlink eine Datei.

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
BBCode-Formatierung erlaubt
Formular-Optionen