|
James McCartney writes:
>> Wolfgang Ziller <wziller@math.upenn.edu> writes:
>> >
>> > Ok, but clearly Java wasn't designed for the scope of
>> > applications that Dylan can handle. I don't see Java as
>> > a suitable replacement for Dylan.
>>
>> That isn't at all clear to me. Could you explain Java's limitations
>> as a general purpose language compared to Dylan and other
>> widely-used languages such as C++?
>
> The Java paper describes it as an interpreted language. Is it always to
> be this way? It doesn't seem precluded from being this way, though if
> only interpreted implementations exist then that certainly puts a lot of
>applications out of the scope of Java
There's nothing in Java's design that precludes it from being compiled,
either on the fly or batch.
> Java lacks multiple inheritance, multiple dispatch, and
>(I think) closures.
Yes, Java lacks closures, as does C, C++, and most other languages.
Still, closures are quite useful for modularizing code and avoiding
globals. The lack of multiple-inheritance is somewhat obviated by the
use of "interface" classes. So, a class can implement several interfaces
and be used much like a class that inherits several protocols. There is
definitely no multiple-dispatch.
Some strikes against Dylan:
> Most programmers don't understand what they need Dylan's
> features for.
> I've found that an astounding number of programmers don't
> know what a closure is.
> Or 'let' binding, or multiple dispatch.
> Much less how they would use these features.
This is more of a condemnation of the state of Computer Science
education (see the recent discussions of this on comp.lang.scheme)
than a strike against Dylan. I try to show people what closures can be
used for, and they usually get it pretty fast. Then they go back C++ and
use objects for much the same purpose.
> People want languages on the level of Visual Basic.
> Java is about this simple with a bit more power but less than
> even C++.
Java is a bit more complex/powerful than Visual Basic. Java is more of
a cleaned up C++ that leaves behind many of C++'s problems.
Languages like Dylan and Java should promote the creation of much
more robust software, since the problems inherent in manual memory
management are removed, and pointers to arbitrary memory locations
can't just be cooked up with casting.
In fact, Java might be a good incremental step for the software industry.
Rather than threatening Dylan, I think Java just might help to spread the
good news about dynamic languages, and eventually give people a
good reason to take another look at Dylan. I choose to remain positive.
|