Hacker News new | ask | show | jobs
by arjunnarayan 3551 days ago
> what's that one talk that changed the way you think and you feel everyone needs to see?

Growing a Language by Guy Steele.

https://www.youtube.com/watch?v=_ahvzDzKdB0

3 comments

Thanks for posting this; it's my favourite talk too :)

BTW, does somebody know of (or have) a better quality version of this talk? The one on YouTube has some annoying audio cuts. There used to be a copy on Google Video[1], which i don't remember having the same issues.

[1] https://news.ycombinator.com/item?id=2359174

https://www.cs.virginia.edu/~evans/cs655/readings/steele.pdf

A write-up of the same talk. Fantastic read and watch.

This is a great talk, but what he was advocating never came to pass. He wanted to add 3 things to Java:

    - operator overloading
    - small value types on the stack (for vectors, rationals, etc.)
    - generic types
Generic types are the only feature that made it (not without some controversy).

C++ has all three features. I suppose there is some success in games and graphics using overloaded operators on vector types. But otherwise it doesn't seem like a huge win, or something that is critical for the design of a language.

Python has operator overloading. I never really use it, but I guess it did allow NumPy and Pandas to exist. And TensorFlow uses it.

Perhaps it boils down to the fact that Java is more of a business language, and C++ and Python have more mathematical applications, which require richer algebraic expressions of many types. But I suppose if Java had gotten operator overloading, it may have been used more for scientific computing.

Perl 6 and Racket seem to be the languages that really allow creating your own language. But actually I heard Larry Wall say that they want to provide so many little languages within Perl 6 that users don't need to invent their own. Because this often makes it harder for others to read your program.

Value types is coming to Java 10, and Guy Steele is one of guys making it happen.

http://cr.openjdk.java.net/~jrose/values/values-0.html