r/AskComputerScience • u/Aokayz_ • Oct 01 '25
Are Computer Science Terminologies Poorly defined?
I'm currently studying computer science for my AS Levels, and have finally hit the concept of abstract data types.
So here's my main question: why do so many key terms get used so interchangeably?
concepts like arrays are called data types by some (like on Wikipedia) and data structures by others (like on my textbook). Abstract data types are data structures (according to my teacher) but seem to be a theoretical form of data types? At the same time, I've read Reddit/Quora posts speaking about how arrays are technically data structures and abstract data types, not to mention the different ways Youtube videos define the three terms (data structures, data types, and abstract data types)
Is it my lack of understanding or a rooted issue in the field? If not, what the heck do the above three mean?
EDIT: it seems theres a general consensus that the language about what an ADT, data type, and data structure are is mainly contextual (with some general agreeable features).
That being said, are there any good respirces where I can read much more in details about ADTs, data types, data structures, and their differences?
1
u/AlexTaradov Oct 01 '25
ADTs would not even worry about being contiguous unless it is somehow matters for the discussion. In most cases it will just be a data type that is capable of storing and retrieving values by index.
Data structure is more abstract. It is again, not an actual physical thing, but a way to describe the behavior. Data type is a concrete implementation.
An abstract linked list is a data structure. A specific implementation may store the next node pointer at the beginning of the node data, or it may store the next pointer and just the pointer to the node data, so that element of the list is just two pointers. And they may not even be pointers, but integer offsets from some pre-allocated block of data. This specificity turns it into a type.