Re: Lack of extension
Posted: Feb 24, 2007 1:55 AM
>1. Message sends (true ecapsulation and polymorphism)
>> A little vague...
Nothing vague about this at all. Try listening to Alan Kay, he coined the terms: encapsulation, polymorphism and objects.. What you mean is that the C++/Java etc communities still do not get it over 30 years on!
>> SmallTalk (et. al.) forcing the usage of dynamic binding is no better than Java forcing the usage of static and polymorphic binding. I'm all for the invokedynamic bytecode in the JVM, but honestly I'd rather Java the language have dynamic binding. I'll use Groovy or Jython or something else for that.
You don't force dynamic binding on anyone. The web is dynamically bound (ever heard of anyone bringing down the entire web, editing, compiling and starting the whole thing up again, just to add a new web page?) - and I don't hear anyone complaining.
>> C++ style, Ruby style, or some unique Java style?
C++ does not have Mixins. The concept is language neutral, but late binding tends to help.
>> I think first-class functions, including lambdas (like Python), should come first. Closures can be useful, but they are also magical and dangerous.
One tends to go with the other...
>> Go program LISP. Making Java syntax more malleable would make it no longer be Java.
I am! And many others are moving to Lisp derived languages like Ruby and Phython. The issue is purpose. If I want late-bound components, DSLs, etc then Lisp is great. If I want Algol syntaxt aswell, then there is Ruby and Python.
>>It would break the conceptual integrity of the language. It's time for a new main stream JVM language. All these ideas are great by they're not Java, and all represent trades with significant downsides.
I agree. The biggest downside is backward compatibility. I agree what is needed is a different language. You choose not to mention my reference to Strongtalk and static type checking with a dynamic language. I think there is an IronPython in the making that does the same thing too.
Java was marketed at the C++ crowd. They see objects very differently from the Smalltalk/Lisp crowd. For C++ers compile-time type checking is a must. Well you can have this with a dynamic language! I'm not sure of the JVM as a platform though. What is required is a dynamic VM not a static one IMO. If you want to know why, try listening to Gilad Bracha of Sun.