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

"Others, like James Gosling, quietly change the world by building something (the core Java language and libraries) that make so much sense and are so elegant that you just smile when you use them."

I'm afraid everybody says this about whatever is new. Nowadays people would say this about Guido, Matz, etc.



Man, I'm sort of with you. In the last few years, I've spent time in a variety of languages --- Python, Ruby, JS, Java, and lately Go and Haskell --- and Java just seemed completely terrible: bureaucratic, staid, and just plain mediocre by many standards.

Then I started reading a lot of C++. And I mean no disrespect to the many brilliant people who use and enjoy C++, but it wasn't until then that I really got why Java exists.


> bureaucratic, staid, and just plain mediocre by many standards.

Josh Bloch called it a "blue collar" language: a language for building things, not for looking smart.


Yeah. And as above I'm kinda sorta with you. People tend to criticize Go along similar lines, that it's not particularly innovative, and my reaction is similar. It's not meant to make you look smart or blow your socks off or whatever; it's meant to help you be productive in no small part by being very, very straightforward.

As such, I'd actually criticize Java for not being simple enough. It's well and good to be staid, but excessive bureaucracy is problematic. Arrays are thoroughly un-idiomatic in Java. Exceptions play hell with attempts at control-flow analysis. Lack of type inference increases repetition. The language is embarrassingly devoid of literals. Pick your poison, really.

And people should feel free to disagree, but I don't think such as type inference, literals, or multiple return values are anything particularly flashy. If anything, they tend to make code simpler and/or cleaner.


Go read Project Oberon, including the code, and realize why Java makes many people sad.


Thanks for the recommendation! Anything particular section I ought to pay especially close attention to?

Also, let me stipulate that Java really does make me sad. It's just that in the realm of sad-making, I discovered new depths.


No particular section, it's the entirety of what the book shows that's remarkable: "This book presents the results of Project Oberon, namely an entire software environment for a modern workstation. The project was undertaken by the authors in the years 1986-89, and its primary goal was to design and implement an entire system from scratch, and to structure it in such a way that it can be described, explained, and understood as a whole. In order to become confronted with all aspects, problems, design decisions and details, the authors not only conceived but also programmed the entire system described in this book, and more."

Also, if you think that JVMs and JIT'ing compilers are cool, take a look at Michael Franz's PhD thesis at ETHZ: "Code-Generation On-the-Fly A technique for representing programs abstractly and independently of the eventual target architecture is presented that yields a file representation twice as compact as machine code for a CISC processor. It forms the basis of an implementation, in which the process of code generation is deferred until the time of loading. At that point, native code is created on-the-fly by a code-generating loader. The process of loading with dynamic code-generation is so fast that it requires little more time than the input of equivalent native code from a disk storage medium."

Talk about "roads not taken". :(


I think I see what you're saying. And that actually sounds right up my alley, truth be told. That characterization reminds me a little bit of Plan9.

I say it's up my alley because lately I've been paying particular attention to folks like Rob Pike and Rich Hickey. (I'm sure there are more.) I am not sure they'd agree with this characterization, but they're both part of a movement to simplify programming, especially by cutting out excess and complexity.

Go is an example of a more straightforward, modern C, complete with strong concurrency primitives, first class functions, duck-typed interfaces, abundant literals, etc. I'm still learning about Clojure but I started looking at it after watching Simple Made Easy and The Value of Values, both of which espouse a somewhat different form of simplicity. Still, I think it's animated by a similar line of thinking, that we as a profession are hurting ourselves unduly by building so many systems we struggle to understand and/or maintain, and one way in which we do it is through both the technology we use and the way in which we use it.

The JVM/JIT bit might go over my head, but I'll be sure to check that out, as well.


Yes! One string type! OMG. What a revelation!


Also, I'm not sure that of all of Gosling's achievements, I would point to Java-the-language (or the UTTERLY GODAWFUL initial libraries) as a particular exemplar of elegance. NeWS was much, much, much more interesting and forward-thinking, for one.


Perhaps I'm overstating Gosling's contributions to NeWS, or perhaps he was in fact an elegance sink, and the reason NeWS lost out to the unutterably execrable X-Windows was because he was on the project.


There's desperately few informations about NeWS (at least with my limited googling abilities)


http://en.wikipedia.org/wiki/NeWS

http://c2.com/cgi/wiki?NetworkExtensibleWindowSystem

I developed against NeWS (mostly using HyperNeWS) for a research project in the early 90s - was a huge amount of fun.


Those are the desperately few I was aware of. That said I never looked into the NeWS book. I'll keep digging


If you like NeWS then I can recommend trying to find out about Arthur van Hoff's HyperNeWS which was, as the name suggests, a HyperCard like system but written in NeWS.

http://www.art.net/~hopkins/Don/hyperlook/index.html


his phd thesis was pretty cool. It's one approach at a constraint solver built into a language. I can't, off the top of my head think of any direct application (maybe some prolog variant), but it's a neat way to model stuff.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

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

Search: