Quando i programmatori parlano di "strutture di dati", a cosa si riferiscono?


18

Quando i programmatori parlano di "strutture di dati", parlano solo di tipi di dati astratti come elenchi , alberi , hash , grafici , ecc.?

O quel termine include una struttura che contiene dati, come tipi compositi (oggetti di classe, strutture, enum, ecc.) E tipi primitivi (booleano, int, char, ecc.)?

Ho sempre sentito i programmatori usare il termine per fare riferimento a strutture di dati complesse o tipi di dati astratti, tuttavia l' articolo di Wikipedia che fornisce un elenco di strutture di dati include sia i tipi compositi che i tipi primitivi nella definizione, che non è quello che mi aspettavo (anche anche se ha senso).

Quando mi guardo intorno online vedo altri luoghi che si riferiscono al termine "struttura dei dati" nel senso della programmazione come riferimento solo a tipi di dati astratti, come questa lezione del Dipartimento di Informatica della Stony Brook University che afferma

Una struttura di dati è un'implementazione effettiva di un particolare tipo di dati astratto.

o questo wiki sulle strutture di dati , che usa il termine in frasi come questa:

Poiché le strutture di dati sono astrazioni di livello superiore, ci presentano operazioni su gruppi di dati, come l'aggiunta di un elemento a un elenco o la ricerca dell'elemento con la priorità più alta in una coda

Quindi perché sento i programmatori che fanno riferimento a strutture di dati complesse o tipi di dati astratti solo quando usano il termine "struttura di dati"? I programmatori hanno una definizione diversa per il termine rispetto alla definizione del dizionario?


1
Il termine si è evoluto nel tempo. La folla CS normalmente usa il termine per tipi generici di strutture che possono contenere più elementi di dati correlati (elenchi collegati, alberi ecc ...)
Oded

1
non è solo una questione terminologica? una stringa è in realtà un array di caratteri, ed è una struttura di dati che rappresenta una sequenza di singoli caratteri
Mithir

3
"Struttura dei dati" non è un termine definito? È qualsiasi struttura per l'archiviazione dei dati! È un po 'difficile prendere sul serio la domanda.
Michael K,

1
@Rachel Quindi la tua domanda è in realtà se i tipi di dati primitivi sono o meno strutture di dati? if programmers mean something different when they talk about data structuressta ancora sondando opinioni.
yannis,

2
"Primitivo" dipende completamente dalla portata. A livello binario non esiste un int, ad esempio. A un livello ancora più basso non ci sono nemmeno bit - solo errori elettrici. Ancora una volta, questo è un termine che si definisce da sé - non è una buona domanda.
Michael K,

Risposte:


20

La definizione generica di "struttura dei dati" è tutto ciò che può contenere i tuoi dati in modo strutturato, quindi sì, questo includerebbe tipi compositi e tipi primitivi oltre a tipi di dati astratti. Ad esempio, a stringè una struttura di dati in quanto può contenere una sequenza di caratteri in modo strutturato.

Tuttavia, il termine ha anche un altro significato per i programmatori.

Poiché il termine "strutture di dati" è così ampio, gli sviluppatori di solito usano un termine più specifico per identificare ciò di cui stanno parlando, come classo data objecto primitive type, e il termine specifico utilizzato per i tipi di dati più complessi o astratti è "struttura di dati"

Questo è il motivo per cui si sente che la "struttura dei dati" viene utilizzata più frequentemente per tipi di dati astratti come array, elenchi, alberi e hashtable e non per cose come i tipi di dati primitivi


4
Penso che anche i grafici siano molto comuni, ma sono raramente rappresentati nelle librerie standard perché sono molto difficili da costruire in modo generico ed efficiente.
Klaim

Quindi quando i programmatori parlano di "strutture di dati", di solito parlano di tipi di dati astratti ? E sebbene i tipi primitivi (come int, bool o char) e i tipi compositi (come una classe, struct o enum) siano ancora considerati strutture di dati dai programmatori, di solito sono indicati con termini diversi?
Rachel,

1
@Rachel tecnicamente una struttura di dati potrebbe essere un'implementazione homebreven usando anche puntatori / classi ect. Ho creato delle brutte "strutture dati" simili alle liste come parte di un compito in C ++. Semplicemente non chiamiamo le strutture di dati delle classi così spesso perché di solito sono qualcosa di più specifico.
Ben Brocka,

@BenBrocka Ahhh, quindi "struttura dati" è un termine molto ampio che copre questi altri oggetti, tuttavia in genere è meglio essere più specifici quando si parla di strutture dati e utilizzare termini come "tipo di dati primitivo" o "oggetto dati" anziché "struttura dati". E il termine specifico comunemente usato per oggetti come Lists, Trees, Graphs, ecc succede solo a essere "strutture di dati"
Rachel

1
@ Rachel sì, anche se tutto è una struttura di dati (in senso stretto) il termine "struttura di dati" di solito si riferisce a quei tipi di dati astratti. Direi che il termine "struttura dei dati" dal punto di vista di uno sviluppatore si riferisce al modo in cui memorizza i dati. Potrebbe essere un elenco in memoria, un file nel disco o potrebbe essere una struttura di dati personalizzata che ha implementato da solo.
Alex

5

Il termine si riferisce a entrambi, anche se cose come intse booleanssono generalmente considerati tipi di dati primitivi (o strutture di dati primitivi). Il termine stesso si riferisce semplicemente a tutto ciò che memorizza i dati in un modo specifico. Sicuramente intsoddisfa questa definizione così come qualcosa come una tabella Hash, solo che è più semplice.

In genere, quando le persone utilizzano la struttura dei dati, si riferiscono a strutture di dati più complesse e non a quelle più semplici, ma soddisfano entrambe la definizione.


2
Non credo di aver mai sentito qualcuno riferirsi a intuna "struttura di dati".
Qwertie

2
@Qwertie me neanche, ma è ancora quello che è. Si chiama un "tipo di dati" più spesso, ma praticamente significa la stessa cosa della "struttura dei dati"
Oleksi,

0

La definizione più semplice e molto basilare, che io abbia mai sentito parlare di strutture di dati, è l'archiviazione dei dati nella memoria in modo tale che operazioni di base come l'inserimento, l'aggiornamento, l'eliminazione ecc. Possano essere eseguite in modo efficiente in termini di tempo e memoria.

Quindi, un tipo di dati dice il tipo di dati che abbiamo archiviato in esso. Può essere intero, decimale, carattere, stringa o un oggetto. Possono essere tipi compositi o tipi primitivi oltre a tipi di dati astratti.

Tuttavia, utilizziamo le strutture di dati quando vogliamo archiviare dati complessi nella memoria. Questo è il motivo per cui sentiamo solo tipi di dati come Array, Elenchi, Alberi e Hashtables, e non per cose come tipi di dati primitivi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.