Authored by: Anonymous on Wednesday, April 18 2012 @ 08:28 PM EDT |
How about a non-trivial example?
Say, computer game. iD Software's Megatexture technology
woudl be a good example.
Problem statement:(simplified and quite possible plain
wrong):
"Need to have detailed environment textures at any LOD
without separation, and that would be fast to load from IO
storage"
Creative solution: single enormous texture that is loaded
and cached in chunks.
Creative solution API:
create_megatexture(size,...) # allocates a texture with
specified size etc
megatexture_preload(...) # preloads the megatexture from io
storage
...
-----
As you can see, the API clearly gives out the creative idea,
whether it includes implementation or not. In fact, to
conceal the creative part, the programmer would have to
inline all the creative solutions, unable to abstract from
them.
If anyone would be able to just get the (possibly
documented) list of functions of the megatexture technology,
and legally distribute an independently created
implementation based on those function specifications, there
wouldn't be any need to license the technology, would there?
Defining functions,classes or structures IS creating API.
You cannot program nontrivial projects without defining
functions.[ Reply to This | Parent | # ]
|
|
Authored by: Anonymous on Wednesday, April 18 2012 @ 08:31 PM EDT |
See, I don't *have* to put average in the Math class. I can put it in the
Network class! See? Creativity!
</sarcasm>
One could assert that the "least creative", the better when it comes
to API design.
So you're designing an API for Java. It *has* to be object-based, because this
is Java. No choice there.
The math functions are going to go into the Math class. Creative? Not really,
no.
We're going to specify a reasonable set of math operations. Is that creative?
Well (not consulting the Java documentation here), a reasonable set would have
square root, log (perhaps log10, log2, and/or log to a given base),
exponentiation, sin, cosine, tangent, probably the inverse of all three,
ceiling, floor, absolute value, min, max, and round. Probably constants: e, pi,
maybe gamma, pi/2 and pi*2. That's about four minutes of thought. How close
did I come to Java's Math API?
So: In Java's case, no creativity in the decision to make libraries object
oriented. No creativity in putting the math functions in a math class (no pun
intended). Very little creativity in the choice of operations. (I mean, one
could look at the math operations defined by C's standard library, and find
probably 90% of what's in Java's math library. There's fair agreement on what a
normal set of operations are.)
MSS2[ Reply to This | Parent | # ]
|
|
Authored by: Anonymous on Thursday, April 19 2012 @ 12:28 AM EDT |
I suppose there is very little creativity, but there is some. Your decision to
reduce
mathematics to math and average to avg is a little creative. Does it have to be
unique to be creative? How creative does it need to be to get copyright
protection?[ Reply to This | Parent | # ]
|
|
Authored by: Anonymous on Thursday, April 19 2012 @ 03:21 AM EDT |
There, one API specification. Written in 2 minutes flat, using
standard class
nomenclature.
And in doing so (in 2 minutes) you've
overlooked a mathematical average - the Modal Average which does not
necessarily have to have numerical data: there is a modal average (and it
is the only average available) for the data {red, yellow, green, red,
pink, green, blue, blue, black, green, yellow} which was a survey of asking
everyone in a class their favourite colour and shows that the average favourite
colour of the class was "green".
Also, how do I specify with your API
which one of the mathematical averages (Mean, Median or Mode) I will get back
from your non-specific "average" function? Mathematically speaking, an
unqualified average can be understood as any of Mean average, Median
average or Mode average; it is only in "layman's" terms that an unqualified
"average" is understood to mean the "Mean average" (and when there is a
significant difference, especially between the Mean and Median averages, there
is every good reason for a spin doctor not to tell you which average has been
used - see (read a copy of) How to lie with statistics by
Darrell Huff for more details1).
Perhaps writing an API
isn't quite so 2 minutes easy.
1The second link contains a
useful comment that is in the book about thinking carefully about "who-says-so"
that not only applies to a statistic by can apply to anything, in which you need
to consider if the conclusion is justified, and even if the information actually
makes sense.[ Reply to This | Parent | # ]
|
|
Authored by: Anonymous on Thursday, April 19 2012 @ 04:22 AM EDT |
Its creative if you call your average function "FU Bar"
Oh, never mind[ Reply to This | Parent | # ]
|
- Bad, Bad pun. - Authored by: Anonymous on Thursday, April 19 2012 @ 07:53 AM EDT
|
|
|