Hacker News new | ask | show | jobs
by lultimouomo 3860 days ago
> Assembly and C are dead simple compared to Java. The C reference manual is about 200 pages, if I dropped the Java reference manual(s) from a building it would create a sizeable crater.

I don't think that's a fair assessment of Java. The full specification for version 8 is actually 788 pages, so 500 more than C, but you could reasonably argue that of those at least 100 are dedicated to specify what in C is simply undefined behavior and probably another 100 are dedicated to the memory model. The other 300 hundred would be a reasonable overhead for specifying classes and class loading.

You can say a lot of bad things about Java, but it could very well be the best specified language around; the spec is actually very readable, leaves no room for doubt and actually treats that thing called multithreading that still has no citizenship in the C language. You can't say that of a lot of languages.

EDIT:

I took the time of checking the C11 standard PDF (actually the latest available draft, as the ISO asserts copyright on the standard and you can't get it for free). It's 701 pages. But at least C11 has <threads.h>.

1 comments

I just picked up my fairly dog eared K&R for that reference it's 226 pages (first edition). Yes, the C spec grew over the years, but the Java docs were huge right when it started out. I remember buying the full set and it weighed more than I could easily lift up the stairs to my office. All in all it amounted to a few thousand pages. This included the docs on the VM and a bunch of other stuff that you might not need (but which I did need).

The C standard library was a relatively small affair reflective of the way UNIX was built, a couple of well thought out interfaces combined with a lot of freedom (and enough rope to hang yourself several times over).

The Java standard library was absolutely huge and extremely hard to make headway in because each and every part of it seemed to be designed by a committee rather than by an individual (or two).