Is Scala Really the Next C++?
codecommit.com
codecommit.com
Erlang's distribution and multi-threading primitives are unbelievably well tested, and everyone could learn a thing or two from the OTP model.
I can't imagine why we'd ever consider Scala over Erlang.
Where did you run into pain trying to use Erlang outside of telcom apps? Just curious...
Erlang has a pretty good set of standard libraries, and whatever missing is relatively easy to build yourself, by comparison.
Granted, there are some very good OS Java libraries, but there's also an awful lot of drivel - one need only fire up their profiler to verify it.
I'd say you're being quite uncharitable to Erlang.
Primarily because you're forced to use the JVM by some executive degree or similar. Likewise, if you're in a .NET shop you'd want to consider F#.
All that aside - I'm a huge Erlang fan.
Or Scala. It also compiles to the CLR.
It's a very weird approach, but it's surprisingly effective.
1. How exactly would you setup the JVM? Will you need to wrap every Java class you want to use with some kind of communication mechanism? What about callbacks?
2. Can you subclass a Java class?
3. What is the overhead of calling Java methods from Erlang?
4. Has anyone demonstrated a bridge to a non-trivial Java library using a language not running on the JVM?
I feel interprocess communication might be ok for some apps but not all apps.
2. No. Erlang is not an OO langauge, although its concurrency model is the actor concurrency model, which sometimes feels like Smalltalk's object model.
3. The cost of communication. Having implemented a few systems that do this, I've found it to be fairly small, even using a slow glue layer like ruby. See https://github.com/KirinDave/fuzed/tree ... Powerset uses almost exactly this codebase to manage query analysis on its frontend before dispatching to our results retrieval layer. Thus far, it's been one of the most flexible and robust parts of our architecture.
I felt this way too, and it is the case in some very specific scenarios. But the truth of the matter is that Java itself is often the wrong tool in these cases, so it's somewhat of a red herring to say that.
4. http://erlang.org/documentation/doc-5.6.1/lib/jinterface-1.4...
An important lesson I've learned is that just because you've written a parallel program, doesn't mean you've written a good one.
Its support for editors and tools was pretty horrible. The Eclipse plugin outright sucked (bundled compiler lagging behind the language release, syntax highlighting which came and went unpredictably, weird compilation errors which didn't matter --- and when I submitted a bug report ticket, the Scala team took four months to respond). I tried the Emacs mode, but it had such flaky indentation that I didn't know what it was doing half the time. If I absolutely had to use Scala, I'm sure I'd fix the Emacs mode, but it just wasn't worthwhile back then.
In addition, the language changes rapidly in ways which break existing code (I ran into an incompatible change in the Actors library, but don't remember the details any more). Granted, that's actually a good thing, because it means that the developers do not want to be stuck with bad design decisions from the past, but I'd like to be able to write production code, too. Since it seems that Scala's authors use it as a testbed for their research in languages, I have my doubts that it'll stabilize quite enough. (Counterarguments welcome!)
it's definitely not bad. whether or not a language has first-class functions is a major point for me, and Scala has strong support for functional programming and even has some specialized sugar for it
the only thing i don't like about it is the type/object stuff, which always feels unnecessary
A much nicer language no one would have used. It is Stroustrup's opinion that if C++ had not been backwards-compatiable with C, it never would have become popular. I agree.
I also have difficulty with calling C++ a "failure."