Op dinsdag 14 juni 2011 22:17:42 UTC+2 schreef phil swenson het volgende:
>
> so what do you think would trigger the next language to become
> ubiquitous (a successful java.next)?
>
>
>
Well, that's the million dollar question, isn't it?
I'm fairly sure that java.next needs to have something compelling. A
relatively small evolutionary step is not going to do the trick. If the C to
java exodus is any indication, we should NOT actually be looking at language
features / syntax, interestingly enough. What java had to offer at the
language level was virtually nothing. It was explicitly designed to be like
C, warts and all (that's the only explanation for postfix array brackets and
the switch statement), but it did offer things C just couldn't offer at the
time: Garbage Collection, a far more complete (and far more standard)
standard library, write once run anywhere, and the promise of sandboxing
(which I admit never quite panned out, but the promise was there). None of
these things are language syntax related.
So then the question becomes: What features are compelling that java does
not have? It also suggests that java.next may not actually run on the JVM,
as many of the limitations in this 'features, not syntax' dimension are
caused by the VM and not java-the-language, but what's left. I can't think
of all that many things:
- Modularization (in all dimensions), built right into the language. A mix
of OSGi (runtime modularization) and ivy/maven (build-time modularization),
coupled with *NO* standard library (everything is a module available on the
web, including the core libraries), and a central (per machine) distributed
module management system, the upshot of which is: Type "import
com.google.guava.*;" into any source file and your IDE / compiler / whatever
tool you're using will 'just work', because is offloads the duty of figuring
out what that means and what must be downloaded to make it work to that
central module management system. This could be pretty compelling. Comparing
such a thing to kludging it together with maven and OSGi in vanilla java is
like java's GC vs. ref-counting kludges in C.
- A fully pluggable compiler. A regex library would simply ship at least a
syntax checker + compile-time path builder, and perhaps even, if the idea of
a n IDE is fully embraced, a regex editing widget, in addition to the code
used at runtime to actually execute the regex. This is an alternate and IMO
far more powerful take on the 'scalable language' concept of scala, which
tries to accomplish this by effectively letting a library author make just
about any stream of characters one can write technically legal scala.
- Some sort of built-from-the-ground-up-for-massively-multicore model which
looks almost nothing like java. However, this feature is highly unlikely to
work well with a java/C-esque syntax (I guess you could have loops
parallel-by-default, but that's not all that interesting), and I'm not sure
this is actually all that compelling. Even on a 128-core machine, getting
more than a real-life ~20x speedup by having your app 'magically' be
multicore ready is highly unlikely (memory reads cross-core slow down any
attempt at fine-grained parallelism, most apps run so fast that they feel
instant anyway, 20x speedup or no, and the majority of speed-sensitive apps
are trivially parallelised in the large, such as a web server. There may
also be other bottlenecks such as a lock on a db table). I very much doubt a
potential future java.next can bank on this one. Maybe by inflating this
issue they could run a decent PR campaign but it would be a bad reason for
the programming world to switch.
- Yes, no doubt this new language will have some form of code blocks
('closures') and perhaps other nice-to-haves such as list comprehensions, as
a second generation that goes 'lets introduce new features and keep the
syntax near 100% equal to java/C' is a bit much, but I doubt this part is
what will compel a massive switch. It'll mostly serve to shut down
naysayers.
That's a relatively small list, much smaller than what java had to offer.
--
You received this message because you are subscribed to the Google Groups "The
Java Posse" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/javaposse/-/2DkMRLdMLHUJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en.