Hacker News new | ask | show | jobs
by Skinney 1865 days ago
Rust was inspired by Elm, if I’m not much mistaken.
4 comments

People around here give Elm way too much credit for inventing things it didn't invent or wasn't even the first to ship useable versions of, but I think its fair to give Elm full credit for elevating the quality of error messages one can expect from a language or framework.
Rust was started in 2010, and Elm in 2012.

https://en.wikipedia.org/wiki/Rust_(programming_language)

https://en.wikipedia.org/wiki/Elm_(programming_language)

That said, the concepts in question are all much older. If you're ever bored, check out the "Influenced by" sections of the Wikipedia pages on programming languages. It's amazing how old so many of the "new" ideas really are.

> Rust was started in 2010, and Elm in 2012.

That doesn’t preclude learning from younger langages in any way.

The trend of providing really helpful and valuable error messages (especially compilation) really started with Evan’s “compilers as assistants” and “compiler errors for humans” from 2015, although there had been forays into improvements to e.g. error localisation from clang.

And Rust’s improvements absolutely come from there, as acknowledged by Jonathan Turner’s 2016 “shape of errors to come”: https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-com... as well as his “new error format” proposal / rfc which eventually lead to the change: https://github.com/jonathandturner/rust_proposals/blob/maste...

I remember Ada always having very precise and helpful error messages like this one:

literal_string.adb:5:33: warning: wrong length for array of subtype of "Standard.String" defined at line 5 literal_string.adb:5:33: warning: "Constraint_Error" will be raised at run time

then when you run the app it behaves as advertised

$ ./test

raised CONSTRAINT_ERROR : literal_string.adb:5 length check failed

There are many others and when I saw llvm improving error messages for C and C++ (which I saw happening before Rust was a thing) I always thought it was inspired by Ada and it's helpful messages like:

expected private type "<type name>" defined at ...; found type "<type name>" defined at ...

"<name>" is undefined (more references follow); possible misspelling of "<name>"

and the many others that were just there when I first tried Ada around 2008/2009.

According to this:

https://en.wikipedia.org/wiki/Graydon_Hoare

Rust was started in 2006.

clang also played that game around that time (these are the two I had in mind when thinking of this)
True, Evan actually mentions Clang (noting that he’d met people who’d switched from gcc to clang due to the error messages) in “compiler errors for humans”.
I love it how good ideas just spread everywhere in open source. Everyone's life improves and usually people aren't obnoxious about it, which tends to happen in more politically charged topics (i.e. when there is a company pushing a narrative such as google,apple or microsoft)