What is the difference between "objects" and "abstract data types"? When do you use this?

Context

This essay describes in detail "objects" and "abstract data types" (ADTs) (and here is an older explanation by the same author)

Here is an excerpt:

Despite 25 years of research, there is widespread confusion regarding the two forms of data abstraction, abstract data types and objects. This essay attempts to explain the differences, as well as why the differences matter.

A typical answer is the option "objects are a kind of abstract data type." This answer matches most programming languages ​​tutorials. [... But] the textbooks are wrong! Objects and abstract data types do not match, and none of them is a variation of the other. They are fundamentally different and largely complementary, in that the strengths of one are the disadvantages of the other. Problems are hidden due to the fact that most modern language programs support both objects and abstract data types, often mixing them into one syntactic form. But syntactic mixing does not erase fundamental semantic differences that affect flexibility, extensibility, security, and program execution. Therefore, to use modern programming of languages, one should understand the fundamental difference between objects and abstract data types.

Question

Is there a brief explanation using modern non-academic language examples? (If not, it would be great if someone provided it here, or I can write my own answer when I have time)

Of particular interest are the definitions and differences between objects and ADT, and the practical implications of writing code (or developing a language).

Caveat

I highly recommend looking at the related essay before commenting or responding.

Here is an example of the type of understanding I'm looking for, also excerpts from the essay:

Abstract data types define operations that bring together the behavior for a given action. Objects organize the matrix in a different way, collecting all the actions associated with this view. It’s easier to add new operations to ADT and new representations using objects. [...] Object-oriented programs can use inheritance to add new operations.

Please note that, at least with respect to the essay, as of January 3, 2014 Wikipedia is erroneous (or at least incomplete) and , therefore, most textbooks , the Essay was written by a professor of computer science, noting the lack of understanding of these concepts, even among his academic peers.

+5
source share

Source: https://habr.com/ru/post/1210342/


All Articles