Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I like how most of the sentences in this comment try to present some questionable claims as facts, with the usual comparison with C++ casually thrown in.


I'm not a fan of rigor; I prefer to communicate in a short, simple way and let people fill in the blanks. But here's some better argumentation:

There are non-obviousnesses in the Scala syntax: Watch this talk from Scala Days: http://www.parleys.com/play/53a7d2c7e4b0543940d9e551/chapter...

A language with backwards syntax compatibility will have either constant or deteriorating syntax over time: This requires a cost function for language and library syntax. I define this as being a combination of syntax size, syntax consistency and syntax readability (as measured by learning curve for new developers). Syntax here includes the syntax and interface to features in libraries, not just the core language. Obviously, already existing syntax cannot be improved upon without breaking compatibility. This is bad as long as the existing syntax is not perfect, which is (almost) always. One can add better, additional syntax to mitigate but size and inconsistency will grow and new developers will have to understand the old syntax anyway, so you cannot fix existing bad syntax by adding new replacements. Any new syntax will either adhere to old, bad rules or break consistency with the old, neither of which are optimal. Conclusion: Backwards compatibility means you're fucked.

C++'s syntax is bad: This is straddling the line between subjective and objective. I can't imagine any measure by which this is not true. If you want to claim otherwise please remember that extraordinary claims require extraordinary evidence.


I object to you claim of Scala developers "not taking backward compatibility so seriously" and the "lax attitude".

Just compare Oracle's approach–of letting an employee announce on Twitter that they are changing Generics in Swing, and that people should download a JDK9 build, compile their code and see whether things break–with Scala's approach of automatically and continuously building ~1.000.000 lines of publicly available code against Scala to detect breakages before they happen.

Or compare the tools Java/Scala gives you for managing deprecations, both in the library (@deprecated) and external tooling (migration manager).

Scala developers go the great lengths to improve and evolve the language while they try to minimize the work needed to move between language versions. See the recent improvements in Eclipse for an example.

I also find the comparison with C++ pointless, boring and–to be honest–ridiculous, as well as the remark about "less bad" syntax.


Oh, yeah, I exaggerate sometimes. Not really planning to stop, honestly. I think Java never breaks compatibility in the core language or standard library, right?


They started to do that recently.


How exactly? You can still -target 1.4 and there hasn't been any removed APIs.


Incompatible changes:

  - Ongoing changes to method selection within major and minor releases
  - Various breakages when generics where introduced
  - Various breakages when Swing was generified in Java 5, 7 and 9
  - Change of visibility or removal of methods caused by security issues
  - Deprecation and upcoming removal of various methods due to modularization plans


> ... letting an employee announce on Twitter that they are changing Generics in Swing

I hadn't heard that - could you point me to a reference please?



The #1 item on Aida specifically mentions breaking backward compatibility is an option.

The #1 item on Don Giovanni is "clean up syntax".




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: