Cuando los programadores hablan de "estructuras de datos", ¿a qué se refieren?

18

Cuando los programadores hablan de "estructuras de datos", ¿solo están hablando de tipos de datos abstractos como listas , árboles , hashes , gráficos , etc.?

¿O ese término incluye alguna estructura que contenga datos, como tipos compuestos (objetos de clase, estructuras, enumeraciones, etc.) y tipos primitivos (booleano, int, char, etc.)?

Solo he escuchado que los programadores usan el término para hacer referencia a estructuras de datos complejas o tipos de datos abstractos, sin embargo, el artículo de Wikipedia que proporciona una lista de estructuras de datos incluye tipos compuestos y tipos primitivos en la definición, que no es lo que esperaba (incluso aunque tiene sentido).

Cuando miro en línea, veo otros lugares que se refieren al término "estructura de datos" en el sentido de la programación como solo referencia a tipos de datos abstractos, como esta conferencia del Departamento de Ciencias de la Computación de la Universidad de Stony Brook que establece

Una estructura de datos es una implementación real de un tipo particular de datos abstractos.

o este wikibook en estructuras de datos , que usa el término en oraciones como esta:

Debido a que las estructuras de datos son abstracciones de nivel superior, nos presentan operaciones en grupos de datos, como agregar un elemento a una lista o buscar el elemento de mayor prioridad en una cola

Entonces, ¿por qué solo escucho a los programadores referirse a estructuras de datos complejas o tipos de datos abstractos cuando usan el término "estructura de datos"? ¿Los programadores tienen una definición diferente del término que la definición del diccionario?

Rachel
fuente
1
El término evolucionó con el tiempo. La multitud de CS normalmente usa el término para tipos genéricos de estructuras que pueden contener múltiples elementos de datos relacionados (listas vinculadas, árboles, etc.)
Finalizado
1
¿No es solo una cuestión de terminología? una cadena es en realidad un conjunto de caracteres, y es una estructura de datos que representa una secuencia de caracteres individuales
Mithir
3
¿No es "estructura de datos" un término autodefinido? ¡Es cualquier estructura para almacenar datos! Es un poco difícil tomar la pregunta en serio.
Michael K
1
@Rachel ¿Entonces su pregunta es si los tipos de datos primitivos son estructuras de datos o no? if programmers mean something different when they talk about data structuresSin embargo, todavía está buscando opiniones.
Yannis
2
"Primitivo" depende completamente del alcance. En el nivel binario no existe un int, por ejemplo. En un nivel aún más bajo, ni siquiera hay bits, solo polarización eléctrica. Nuevamente, este es un término autodefinido, no es una buena pregunta en absoluto.
Michael K

Respuestas:

20

La definición genérica de "estructura de datos" es cualquier cosa que pueda contener sus datos de manera estructurada, por lo que sí, esto incluiría tipos compuestos y tipos primitivos además de los tipos de datos abstractos. Por ejemplo, a stringes una estructura de datos, ya que puede contener una secuencia de caracteres de forma estructurada.

Sin embargo, el término también tiene otro significado para los programadores.

Dado que el término "estructuras de datos" es tan amplio, los desarrolladores usualmente usan un término más específico para identificar de qué están hablando, como classo data objecto primitive type, y el término específico utilizado para los tipos de datos más complejos o abstractos es "estructura de datos"

Esta es la razón por la que escucha que la "estructura de datos" se usa con mayor frecuencia para tipos de datos abstractos como matrices, listas, árboles y tablas hash, y no para cosas como tipos de datos primitivos

Alex
fuente
44
Creo que los gráficos también son muy comunes, pero rara vez se representan en bibliotecas estándar porque son muy difíciles de construir de una manera genérica y eficiente.
Klaim
Entonces, cuando los programadores hablan de "estructuras de datos", ¿generalmente hablan de tipos de datos abstractos ? Y aunque los tipos primitivos (como int, bool o char) y los tipos compuestos (como una clase, estructura o enumeración) todavía se consideran estructuras de datos por parte de los programadores, ¿generalmente se les conoce con términos diferentes?
Rachel
1
@Rachel técnicamente una estructura de datos podría ser una implementación casera utilizando punteros / clases ect también. Hice algunas "estructuras de datos" muy feas como las listas como parte de una tarea de C ++. Simplemente no llamamos estructuras de datos de clases con tanta frecuencia porque generalmente son algo más específico.
Ben Brocka
@BenBrocka Ahhh, entonces "estructura de datos" es un término muy amplio que cubre estos otros objetos, sin embargo, generalmente es mejor ser más específico cuando se habla de estructuras de datos y usar términos como "tipo de datos primitivo" u "objeto de datos" en lugar de "estructura de datos". Y el término específico usado comúnmente para objetos como Lists, Trees, Graphs, etc sólo pasa a ser "estructuras de datos"
Rachel
1
@Rachel sí, aunque todo es una estructura de datos (estrictamente hablando), el término 'estructura de datos' generalmente se refiere a esos tipos de datos abstractos. Diría que el término 'estructura de datos' desde la perspectiva de un desarrollador se refiere a cómo está almacenando los datos. Podría ser una lista en la memoria, un archivo en el disco o una estructura de datos personalizada que él mismo implementó.
Alex
5

El término se refiere a ambos, aunque cosas como intsy booleansgeneralmente se consideran tipos de datos primitivos (o estructuras de datos primitivas). El término en sí mismo simplemente se refiere a cualquier cosa que almacene datos de una manera específica. Ciertamente intcumple con esta definición tan bien como algo así como una tabla Hash, solo que es más simple.

Por lo general, cuando las personas usan la estructura de datos, se refieren a estructuras de datos más complejas, y no a las más simples, pero ambas cumplen con la definición.

Oleksi
fuente
2
No creo haber escuchado a alguien referirse a intuna "estructura de datos".
Qwertie
2
@Qwertie tampoco, pero eso sigue siendo lo que es. Se llama un "tipo de datos" con mayor frecuencia, pero eso significa más o menos lo mismo que "estructura de datos"
Oleksi
0

La definición más simple y muy básica, que he oído hablar de las estructuras de datos, es almacenar datos en la memoria de tal manera que las operaciones básicas como insertar, actualizar, eliminar, etc. puedan realizarse de manera eficiente en términos de tiempo y memoria.

Entonces, un tipo de datos indica el tipo de datos que hemos almacenado en él. Puede ser entero, decimal, carácter, cadena o un objeto. Pueden ser tipos compuestos o tipos primitivos además de los tipos de datos abstractos.

Pero, usamos estructuras de datos cuando queremos almacenar datos complejos en la memoria. Esta es la razón por la que escuchamos solo sobre tipos de datos como matrices, listas, árboles y tablas hash, y no para cosas como tipos de datos primitivos

Nishant sethi
fuente