decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
Interfaces were old even then | 314 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Interfaces were old even then
Authored by: bprice on Monday, May 07 2012 @ 06:02 AM EDT
Dunno just where interface concept arose. But someone else mentioned Objective C, which pre-dates both Java and Windows95 by ten years.
I dunno either, but I will present a bit of personal history. I find my part interesting, even if no one else does: I have no idea whether anything I'm about to relate has any bearing on the question, or whether it's a dead end of the red herring persuasion.

tl;dr version: the words interface, implementation, and contract, as used in Java and denoting the Java concepts, date to 1976 at the latest.

In the 1970's, Burroughs Medium Systems gang had developed a modularity scheme for BPL, their new programming language for systems software. The BPL folks, and management, were dismayed that it did not have the desired property of allowing the modules to remain separated — a change to any module propagated into nearly all, if not all, the other modules, triggering a compilation cascade.

I took on the task of understanding why, and proposing a cure. It was required that any solution be a language-based one that could be enforced by the compiling system — an unenforceable, informal mechanism, like the c-users' convention of .h and .c files would not be acceptable.

With full awareness of prof Dijkstra's lessons on separation of concerns, it became apparent after very little study that the problem arose from merging the private stuff with the published stuff. There was no distinction made between these two radically different ideas, 'stuff you can't see' and 'stuff you can mess with.' Without that distinction, it was not possible to distinguish a change that affected downstream from those that did not. Every change had to be propagated.

To make communication possible, I settled on terminology: 'interface' for the 'stuff you can use', 'implementation' for 'stuff you can't use, or even know about', and 'contract' for the relationship across an interface. The choice of terminology was obvious. At 35 years remove, I can't say whether any prior CS usage had made this terminology so obvious, or whether it was obvious just from everyday meanings.

I soon lost touch with them: I don't think they ever fixed their problem.


In 1978 or '79, there was a conference at UC San Diego over (informal) standards for Pascal extensions. By then, I had moved on from Burroughs to Tektronix Computer Research Labs. At the conference, I presented work I had done on modularity extensions for Pascal, using the lessons I had learned in Pasadena. There was some interest expressed, primarily by the folks from Apple. The language features of my proposals eventually showed up with modification in Apple's Pascal. (I always preferred uses over import and provides over export

. Still do.)


In those years, modularity was the subject of concern by a lot of folks. I was never academically minded — I published precious little, and was able to read little more. I worked in largely proprietary environments, where we were always too busy 'doing stuff' to take the time to write it up for publication.

I therefore knew little of work others were doing, and couldn't share much with them — the UCSD conference and later Pascal standardisation work were about it. The ISO Extended Pascal features were, in part, my contribution; but nobody seems to have picked it up from there.

It's nice to conjecture that I have contributed outside my immediate environment, but I'm not competent to evaluate whether I ever made any difference in the state of the art. I hope I did. In any case, the words interface, implementation, and contract, as used in Java, date to, at the latest, 1976.

---
--Bill. NAL: question the answers, especially mine.

[ Reply to This | Parent | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )