We all know that Crystal is “fast as C and slick as Ruby”, but I wanted to get a conversation going on what the core principles behind the language are, and what we as the community actually want in a language.
To explain what I mean, let’s take a look at a few other languages:
Ruby - focus on developer happiness. Matz said it wasn’t designed for machines, it was designed for developers. So the goal was never to be the fastest language, or the most memory efficient. It’s goal was to make programming fun, and easy while still being a real language (as opposed to a toy language)
Rust - WASM as a first class citizen. I’ve never used Rust, but I know anytime you look up doing anything WebAssembly related, Rust is right there at the top. They’ve already taken the lead as the go-to language to do WASM stuff.
Elm - I haven’t used Elm either, but it was brought up to me that they had a principle of error messages and stack traces being at the core of everything they implement. I guess they really focus hard on making sure their errors are clear, concise, and easy to understand making debugging super painless.
Python - When ever you see anything that mentions “Machine Learning”, Python always shows up. Can you do machine learning in other languages? Yup. But Python seems to be the first go to.
When it comes to Crystal, I could see maybe the neat C DSL being at the forefront of the language. This is something you don’t really see in other languages, and it’s a unique feature for Crystal. But when it comes to this, it’s not really well documented on how to use it. If you don’t know C or maybe C++, then it still looks sort of foreign. But maybe that’s not it…
We also don’t have WASM support at all, and our error message, though pretty decent, still need tons of work. ref. We’re not really associated with anything other than “it’s like a faster ruby”. And anyone that’s written Crystal for a bit knows that that statement is a bit “cringy” .
This leads me back to the original question here. What is it that we want to be at the forefront of our language? What is that core principle or that one thing that when people google for it, Crystal is always at the top and is known for doing that?
I get that this isn’t an easy one word answer, and it may get lots of different answers as everyone has their own vision and such, but what ever that thing is, I’d like to see it put on to the website. It should be stated clear in a “Why choose crystal?” or possibly on a page that talks about people that want to contribute to crystal what things they need to keep in mind as they submit PRs.
Anyway, this is just to get the conversation started. Let me know what you think! Happy crystalling