This session is about the fundamentals of API design, both on
and off the Web. It will try to identify strategies and rules
that can help us create code libraries that are safe, effective,
and easy to use.
Most examples will be in Go, the language itself being a case study
of good API design, with clean and simple interfaces on top of a huge
complex implementation. There may also be a few examples in Java,
a language that has had more time to accumulate crud in the form of
superfluous and dysfunctional elements.
We will use the text https://github.com/yourbasic/api as a starting
point and we will look at the API design of some of these example libraries:
– https://github.com/yourbasic/fenwick is a tiny example
intended to illustrate the very basics of API design.
– https://github.com/yourbasic/bloom is a more intricate example,
with tricky semantics, performance and compatibility issues.
– https://github.com/yourbasic/graph is a full-scale library
with challenging design decisions leading to new interfaces,
complementary and auxiliary data structures, and subpackages.
Stora Stjärnrummet (11th floor)