This document discusses interface design principles and provides examples of interface signatures in different programming languages.
The key principles discussed are that interfaces should be concise, consistent, and conventional. They should follow established conventions and idioms of the given language to be intuitive for developers.
Examples are given of interface signatures for a sorting function in C, C++ and Java. While the core functionality is the same, the signatures differ based on language idioms and features. Defining interfaces properly considers the language conventions rather than just technical correctness.