On Aug 12, 2005, at 10:05 AM, Jonathan Ellis wrote:
On Fri, 12 Aug 2005 09:51:04 -0600, "Hans Fugal" <[EMAIL PROTECTED]>
said:
Leverage your language/API design such that things are so easy it
seems
like magic. Perl 6 looks like a good language.
Have you actually read the Apocalypses?
Perl5 has conclusively demonstrated that TMTOWTDI is a horrible
principle to design a language around, but Larry & co don't seem to
have
picked up on that.
Perl is optimized for single developers, and maybe small, tight-knit
groups. It lets a lone programmer produce code that does complex
things very quickly and easily. Thus, it's an ideal tool for system
administrators. It's also incredibly flexible, which is definitely a
plus in a growing and changing discipline. When a new programming
practice or paradigm is introduced, flexible languages are more
easily able to adopt it than others.
TMTOWTDI is part of the single-developer bias of perl. This does
not, however, make it automatically bad for large group projects. It
does, however, require that discipline external to the language is
imposed on the group and documented/enforced. This is similar in
some ways to the difference between statically and dynamically typed
languages. Static typing is a discipline imposed by the language,
but a similar discipline must be eventually followed by users of a
dynamically-typed language, it just has to be enforced by other means.
C++ has something of the TMTOWTDI philosophy as well. You want
polymorphism? Well, you can get it through the object oriented
subsystem. You can also get it through the generic programming
mechanism (templates). This creates issues for C++ development in
groups, but it can be worked around by imposing style guides upon a
project.
Despite all this, I don't really like Perl that much. But that
doesn't mean TMTOWTDI is horrible; it's just a design principle with
tradeoffs, like any other.
--Levi
.-----------------------------------.
| This has been a P.L.U.G. mailing. |
| Don't Fear the Penguin. |
| IRC: #utah at irc.freenode.net |
`-----------------------------------'