<p>Development of ML began circa 1973, but I can't find a published description of it earlier than <a href="http://www-public.imtbs-tsp.eu/%7Egibson/Teaching/CSC4504/ReadingMaterial/GordonMMNW78.pdf" rel="nofollow noreferrer">POPL'78</a>. As far as I can tell, it didn't have modules at that time. It did have <code>abstype</code>, which it likens to &quot;SIMULA classes, CLU clusters, and ALPHARD forms&quot;, which &quot;are by now well-known&quot;.</p>
<p>CLU wasn't the first language to have any form of data abstraction, but it's possible that it's the first one that meets Liskov's stringent criteria. In particular, she requires enforced access controls, and I think that rules out Simula.</p>

CC BY-SA 4.0
2021-09-18T06:51:05.317Z
2021-09-18T06:51:05.317Z
benrg
<p>According to <a href="https://dl.acm.org/doi/10.1145/234286.1057826" rel="nofollow noreferrer">this paper</a> by Barbara Liskov, CLU was &quot;The first implemented programming language to provide direct linguistic support for data abstraction&quot;.</p>
<p>She then defines &quot;data abstraction&quot; as &quot;A set of objects and operations&quot;, and gives as an example a &quot;set of integers&quot; with an associate's set of operations.</p>
<p>Without digging terribly deeply into the dates, according to Wikipedia, CLU &quot;first appeared&quot; in 1975, whereas ML &quot;first appeared&quot; in 1973. Furthermore, ML modules seem to fit Liskov's definition of &quot;data abstraction&quot; perfectly.</p>
<p>Thus, isn't this claim at least a little inaccurate, if not disingenuous? (Liskov notes later that she is aware of at least of some of the work done with ML, though was not made aware of it until the late 70's).</p>
<p>It seems to me that it would be better to say that CLU was <em>among the first</em> languages to support data abstraction. Or am I missing something here either with the exact dates, or exactly what Liskov means by &quot;data abstraction&quot;?</p>

CC BY-SA 4.0
2021-09-18T03:26:19.260Z
I don't know for sure, but it's possible that Liskov was not aware of ML. ML was originally the "meta-language" of a logical framework, and it wasn't until later that they saw the potential for general purpose programming. Even if Liskov was aware of ML, she may not have considered it to be a "programming language".
Joey Eremondi
<pl.programming-languages><ho.history-overview>
Is Barbara Liskov's claim that CLU was the first implemented language to provide linguistic support for data abstraction accurate?
Nathan BeDell
# Is Barbara Liskov's claim that CLU was the first implemented language to provide linguistic support for data abstraction accurate?

(Asked by: username_0 on 2021-09-18)

According to [this paper](https://dl.acm.org/doi/10.1145/234286.1057826) by Barbara Liskov, CLU was "The first implemented programming language to provide direct linguistic support for data abstraction".

She then defines "data abstraction" as "A set of objects and operations", and gives as an example a "set of integers" with an associate's set of operations.

Without digging terribly deeply into the dates, according to Wikipedia, CLU "first appeared" in 1975, whereas ML "first appeared" in 1973. Furthermore, ML modules seem to fit Liskov's definition of "data abstraction" perfectly.

Thus, isn't this claim at least a little inaccurate, if not disingenuous? (Liskov notes later that she is aware of at least of some of the work done with ML, though was not made aware of it until the late 70's).

It seems to me that it would be better to say that CLU was *among the first* languages to support data abstraction. Or am I missing something here either with the exact dates, or exactly what Liskov means by "data abstraction"?

**Tags:** pl.programming-languages, ho.history-overview
> **Comments:**
> **username_1**: I don't know for sure, but it's possible that Liskov was not aware of ML. ML was originally the "meta-language" of a logical framework, and it wasn't until later that they saw the potential for general purpose programming. Even if Liskov was aware of ML, she may not have considered it to be a "programming language".  

---

## 1 answers

### Answer by username_2 on 2021-09-18. Score: 4 | Accepted answer

Development of ML began circa 1973, but I can't find a published description of it earlier than [POPL'78](http://www-public.imtbs-tsp.eu/%7Egibson/Teaching/CSC4504/ReadingMaterial/GordonMMNW78.pdf). As far as I can tell, it didn't have modules at that time. It did have `abstype`, which it likens to "SIMULA classes, CLU clusters, and ALPHARD forms", which "are by now well-known".

CLU wasn't the first language to have any form of data abstraction, but it's possible that it's the first one that meets Liskov's stringent criteria. In particular, she requires enforced access controls, and I think that rules out Simula.


---

