Title: A brief, opinionated history of the API
Speaker: Joshua Bloch @joshbloch
See the table of contents for more blog posts from the conference.
In 2012, Josh testified in he Oracle vs Google lawsuit. He therefore studied APIs And this talk came from there
- First subroutine libraries – 1948 paper from Princeton. Showed ol yellowed paper with assembly language. However, woul have required manual changes each time.
- Wilkes won Turing award in 60’s for actually creating a reusable subroutine library. EDSAC. World’s first stored program computer. Kept simple to get it done so fast!
- Wilkes and Wheeler wrote boot loader (first 30 words) to make reusable so programmers didn’t have to deal with binary machine code. Instead, programmers use assembly language.
- In first program on first computer ”… realization came over me that a good part of the remainder of my life was going to be spent in finding the errors in my own programs” —— Maurice Wilkes. Subroutine library is a partial fix.
- Wilkes made his student Wheeler deal with that
- ”The wheeler jump” —— call function by jumping. Requires self modifying ocde which would be a security nightmare now.
- 1951 – “The Preparation of programs for digital computers”. Called WWG for last names of authors. World’s first text on computer programming and remained primary text until higher level languages arose. Introduced subroutines to the word.
- 1952 – Wheeler wrote about Concepts including higher order functions. Whole paper is only two pages long and covers so much. Doesn’t cover platform independence because only one machine architecture. Doesn’t cover legacy code because first program
- 1968 – first reference to word API. Josh submitted to add reference in dictionary
- 2006 – people still don’t know importance of good API design
What is an API
- subroutine definitions/protocols (Josh disagrees with tools being included)
- communicate with software and hardware
- If it provides operations defined by inputs/outputs and allows reimplementation without compromising user, it is an API. Can ammend definition to make programming language level
- glue that connects digital universe
- ex: Fortran standard library. 28 math functions
- ex: IBM instructon set [about half audience considers API]
- ex: C standard library
- ex: UNIX system calls – operating system kernels have APIs
- ex: DEC VT100 escape sequences – peripheral control interface. Smart terminals could blink or moe around on screen
- ex: IBM PC BIOS – control underlying hardware
- ex: MS DOS comand line interace – not exactly API, but serves as one if using scripting language.
- ex: Hayes modem AT command set – used to type manually. Been reimplemented any times since
- ex: Adobe PostScript – language and/or API
- ex: Perl regex – API within a language
- ex: Server Message Block – wire level protocols. Don’t program with it directly
- ex: Windows API
- ex: Java class libraries – core languages
- ex: REST API for web service
- Always had freedom to reimplement APIs.
- EDSAC was even reimplemented in Japan without any communication
- 2010 – Oracle sued Google over Java APIs in Android. Claimed patent and copyright infringement. Ruled no patent infringement and cannot copyrightable. Oracle appealed and won. Supreme Court declined to hear. Appeals court determined fair use. So right now, APIs are copyrightable and need permission to reimplement. Google currently petitionining to rehear. Many parties supported Google.
- Currently need author’s permission to reimplement API. Might have to pay. Author has monopoly on API. Copyright problem is worse than patents because lasts 95 years.
This was awesome! I’ve seen Josh do Java talks and I liked this topic as well