Worauf beziehen sich Programmierer, wenn sie von „Datenstrukturen“ sprechen?

18

Wenn Programmierer von "Datenstrukturen" sprechen, sprechen sie nur von abstrakten Datentypen wie Listen , Bäumen , Hashes , Graphen usw.?

Oder umfasst dieser Begriff irgendeine Struktur, die Daten enthält, wie zusammengesetzte Typen (Klassenobjekte, Strukturen, Aufzählungen usw.) und primitive Typen (Boolesche Werte, Int-Werte, Zeichen usw.)?

Ich habe bisher nur gehört, dass Programmierer den Begriff für komplexe Datenstrukturen oder abstrakte Datentypen verwenden. Der Wikipedia - Artikel, der eine Liste von Datenstrukturen enthält, enthält jedoch sowohl zusammengesetzte Typen als auch primitive Typen in der Definition obwohl es Sinn macht).

Wenn ich mich online umschaue, sehe ich, dass andere Orte, die sich auf den Begriff "Datenstruktur" im Sinne der Programmierung beziehen, sich nur auf abstrakte Datentypen beziehen, wie diese Vorlesung vom Department of Computer Science der Stony Brook University, in der es heißt

Eine Datenstruktur ist eine tatsächliche Implementierung eines bestimmten abstrakten Datentyps.

oder dieses Wikibook über Datenstrukturen , das den Begriff in Sätzen wie diesem verwendet:

Da es sich bei Datenstrukturen um übergeordnete Abstraktionen handelt, bieten sie uns Operationen für Datengruppen, z. B. das Hinzufügen eines Elements zu einer Liste oder das Nachschlagen des Elements mit der höchsten Priorität in einer Warteschlange

Warum höre ich dann immer nur Programmierer, die sich auf komplexe Datenstrukturen oder abstrakte Datentypen beziehen, wenn sie den Begriff "Datenstruktur" verwenden? Haben Programmierer eine andere Definition für den Begriff als die Wörterbuchdefinition?

Rachel
quelle
1
Der Begriff entwickelte sich im Laufe der Zeit. Die CS Menge normalerweise verwendet den Begriff für generische Typen von Strukturen , die mehrere Artikel von verwandten Daten aufnehmen können (verkettete Listen, Bäume etc ...)
Oded
1
Ist es nicht nur eine Terminologiesache? Ein String ist eigentlich ein Array von Zeichen, und es ist eine Datenstruktur, die eine Folge von einzelnen Zeichen darstellt
Mithir
3
Ist "Datenstruktur" nicht ein selbst definierter Begriff? Es ist eine beliebige Struktur zum Speichern von Daten! Es ist schwierig, die Frage ernst zu nehmen.
Michael K
1
@Rachel Deine Frage ist also eigentlich, ob primitive Datentypen Datenstrukturen sind oder nicht? if programmers mean something different when they talk about data structuresfragt aber immer noch nach Meinungen.
Yannis
2
"Primitiv" hängt vollständig vom Umfang ab. Auf der binären Ebene gibt es zum Beispiel kein int. Auf einer noch niedrigeren Ebene gibt es nicht einmal Bits - nur eine elektrische Vorspannung. Auch dies ist ein selbstdefinierender Begriff - überhaupt keine gute Frage.
Michael K

Antworten:

20

Die generische Definition von "Datenstruktur" ist alles, was Ihre Daten strukturiert enthalten kann. Dies würde also zusammengesetzte Typen und primitive Typen zusätzlich zu abstrakten Datentypen umfassen. Beispielsweise ist a stringeine Datenstruktur, da sie eine Folge von Zeichen strukturiert enthalten kann.

Für Programmierer hat der Begriff jedoch auch eine andere Bedeutung.

Da der Begriff "Datenstrukturen" so weit gefasst ist, verwenden Entwickler normalerweise einen spezifischeren Begriff, um zu identifizieren, wovon sie sprechen, z. B. classoder data objectoder primitive type, und der spezifische Begriff, der für die komplexesten oder abstraktesten Datentypen verwendet wird, ist "Datenstruktur".

Aus diesem Grund hören Sie, dass "Datenstruktur" am häufigsten für abstrakte Datentypen wie Arrays, Listen, Bäume und Hashtables und nicht für Dinge wie primitive Datentypen verwendet wird

Alex
quelle
4
Ich denke, dass Diagramme auch sehr verbreitet sind, aber sie werden in Standardbibliotheken nur selten dargestellt, da es sehr schwierig ist, sie generisch und effizient zu erstellen.
Fordern Sie
Wenn also Programmierer von "Datenstrukturen" sprechen, sprechen sie normalerweise von abstrakten Datentypen ? Und obwohl primitive Typen (wie int, bool oder char) und zusammengesetzte Typen (wie eine Klasse, eine Struktur oder eine Aufzählung) von Programmierern immer noch als Datenstrukturen betrachtet werden, werden sie normalerweise mit unterschiedlichen Begriffen bezeichnet?
Rachel
1
@Rachel Technisch gesehen könnte eine Datenstruktur auch eine Homebrew-Implementierung sein, bei der Zeiger / Klassen usw. verwendet werden. Ich habe im Rahmen einer C ++ - Hausaufgabe einige sehr hässliche "Datenstrukturen" erstellt, die Listen ähneln. Wir nennen Klassen Datenstrukturen einfach nicht so oft, weil sie normalerweise etwas spezifischeres sind.
Ben Brocka
@BenBrocka Ahhh, "Datenstruktur" ist also ein sehr weiter Begriff, der diese anderen Objekte abdeckt. In der Regel ist es jedoch besser, spezifischer über Datenstrukturen zu sprechen und stattdessen Begriffe wie "primitiver Datentyp" oder "Datenobjekt" zu verwenden "Datenstruktur". Und das häufig verwendete spezifische Begriff für Objekte wie Lists, Trees, Graphsusw. passiert einfach „Datenstrukturen“ zu sein
Rachel
1
@Rachel ja, obwohl alles eine Datenstruktur ist (genau genommen), bezieht sich der Begriff "Datenstruktur" normalerweise auf diese abstrakten Datentypen. Ich würde sagen, der Begriff "Datenstruktur" aus der Sicht eines Entwicklers bezieht sich darauf, wie er die Daten speichert. Es kann sich um eine In-Memory-Liste, eine Datei auf der Festplatte oder eine benutzerdefinierte Datenstruktur handeln, die er selbst implementiert hat.
Alex
5

Der Begriff bezieht sich auf beides, obwohl Dinge wie intsund booleanstypischerweise als primitive Datentypen (oder primitive Datenstrukturen) betrachtet werden. Der Begriff selbst bezieht sich einfach auf alles, was Daten auf eine bestimmte Weise speichert. Erfüllt intdiese Definition mit Sicherheit genauso gut wie eine Hash-Tabelle, nur ist es einfacher.

Wenn Benutzer Datenstrukturen verwenden, beziehen sie sich in der Regel auf komplexere Datenstrukturen und nicht auf die einfacheren, sondern auf beide, die der Definition entsprechen.

Oleksi
quelle
2
Ich glaube, ich habe noch nie jemanden gehört, der sich auf inteine "Datenstruktur" bezieht .
Qwertie
2
@Qwertie mir auch nicht, aber das ist immer noch was es ist. Es wird häufiger als "Datentyp" bezeichnet, aber das bedeutet so ziemlich das Gleiche wie "Datenstruktur"
Oleksi
0

Die einfachste und grundlegendste Definition, die ich jemals von Datenstrukturen gehört habe, ist das Speichern von Daten im Speicher, sodass grundlegende Vorgänge wie Einfügen, Aktualisieren, Löschen usw. zeit- und speichereffizient ausgeführt werden können.

Ein Datentyp gibt also die Art der Daten an, die wir darin gespeichert haben. Dies kann eine Ganzzahl, eine Dezimalzahl, ein Zeichen, eine Zeichenfolge oder ein Objekt sein. Dies können neben abstrakten Datentypen auch zusammengesetzte Typen oder primitive Typen sein.

Wir verwenden jedoch Datenstrukturen, wenn wir komplexe Daten im Speicher ablegen möchten. Dies ist der Grund, warum wir nur von Datentypen wie Arrays, Listen, Bäumen und Hashtables hören und nicht von primitiven Datentypen

Nishant Sethi
quelle