Java > Scala

bearophile bearophileHUGS at lycos.com
Tue Nov 29 17:34:51 PST 2011


A recently written report from a firm that has switched back from Scala to Java:

https://raw.github.com/gist/1406238/72ade1a89004a9a7d705b00cfd14b90b2b6a26bd/gistfile1.txt

Some people say that programmers often show a religious-like attachment to their preferred languages, but I suspect that often the truth is just that new languages are not good enough for practical work. Even languages like Scala that seem very carefully designed by geniuses, a language that is also easily integrated with Java code, that is one of the most successful and used languages of the world, risk to be a failure for a good number of people. Designing a good enough new language is hard, maybe 99% of the newly designed languages fail, and creating a language that is also usable in daily work is much harder.

Regarding D2, I think in the last year it is coming out of a phase of its development: I no longer find a new compiler bug every time I write 20 lines of D2 code. It happens still, but it's now an uncommon thing.

I don't have a wide experience about designing new languages, so it's not easy to give good suggestions. But now I suggest to keep some focus about removing important/basic design bugs/faults of D, like the recent removal of covariance -related array problem. Example: D2 foreach is currently broken in two different ways. On the other hand there are examples of successful languages that contain several basic design faults, like PHP and JavaScript. So I don't know.

----------------

>From that text:

>5. Avoid closures. [...] At some point, we stopped seeing lambdas as free and started seeing them as syntactic sugar on top of anonymous classes and thus acquired the same distaste for them as we did anonymous classes.<

D2 closures are probably better, they aren't syntactic sugar on top of anonymous classes. On the other hand invisible sources of low performance are a bad thing in a language as D2. This is why I have suggested to add a compiler switch that lists all the closures of a module (or other related ideas about no heap activity tests or enforcement).

Bye,
bearophile


More information about the Digitalmars-d mailing list