On 2/15/07, Hans Fugal <[EMAIL PROTECTED]> wrote:
It's always important for the API to be understood. The advantage to a
dynamic (duck-typing) language is not that you don't have to understand
or make understood the API. The advantage to a dynamic language is that
you can pass a guy dressed in a duck suit to the library that was only
designed for ducks. The difference becomes you documenting "something
that behaves like a duck in this sense" vs. static type checking which
requires things that descend from Duck or _are_ Duck. It's not a matter

I see the value of what you're talking about, and I've had to deal
with the inconvenience of making an object conform to an interface so
that it would work with an API designed for said type.  This is why
you should design your API using interfaces rather than concrete
classes (in the case of Java).  However, not everyone does this so you
ofter have to deal with the short sightedness of another developer.
At least with duck typing I don't need to worry about this.  That's a
big win.  But, I'd also argue that subclassing or implementing an
interface isn't that much harder, and I know what I'm expected to
implement.  Using either straight inheritance or a combination of
inheritance and composition I can work around any API issue.

How do you know what duck-ish methods will be called off of an object
without access to the source code of the library or trial-and-error
with "method not found" exceptions?  Telling me that your routine
expects a duck doesn't tell me much about it.  Because a "duck" is a
vary fluid concept in a dynamic language.  I may think, "Oh, you
naturally want to call a 'quack' method."  When really the routine
wants a "waddle" method.  How am I to know?

I guess I'm just saying that with a statically typed language I can
look at the API and know how it is supposed to be used.  With a
dynamic language, there may be a fair amount of writing and running
code just to see what breaks as you discover the correct way to use
the API.  Seems like a time waster.

I'm sure as I use these languages, I'll find that my fears are
unwarranted.  I'm just describing the "flaw" in my opinion,
notwithstanding your explanation.

of power, it's a matter of expressiveness. People argue that static
languages are safer. I say we have enough of that with our government
treating us like babies. I don't need my compiler/interpreter to do it
too.

I'm completely on board with you when it comes to government ;-).
Thinking of that parallel will help me be more accepting of the
liberty a dynamic language gives me, rather than curse the lack of
static type safety.  Too much law and restriction is worse than not
enough, but I don't endorse anarchy either.

-Bryan

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to