I've been thinking about this at a meta level and I can't get to reach any conclusion.<p>Think of a simple instruction: draw a line from (a,b) to (c,d).<p>How many ways can it be "encoded as an API"? we already have a gazillion forms of drawing: SVG, OpenGL, Postscript, Asymptote, PGF/Tikz, Canvas, and so on. Why?<p>Forget about existing line-drawing APIs. Which of these would you choose?<p>- line(a,b,c,d)<p>- Line (a,b) to (c,d)<p>- draw-line (a,b) (c,d)<p>- drawline<p>- make-a-line<p>- line-from-to<p>- ...<p>- ...<p>Not to mention placement of parentheses (C vs s-expression), curly braces or angle bracket. The list goes on.<p>I started reading Bertrand Russell's 'On Denoting' but I'm not really sure it'll help me out (although I haven't finished reading it yet).<p>At another level: once you've converted your vector graphics primitive to "pixel maps", that itself is no less of a language. So at a more fundamental level, it's really information represenation, not language.<p>I'm not sure where the problem is, language vs computable-form vs information-representation.<p>Not to mention metalinguistics. Because API is not just one layer on top of your program. You build an API/language layer as a scaffolding, to use it to build a higher level API/language layer. And apparently its turtles all the way up and all the way down.<p>It's all very confusing