My journey with Rust in 2017 — The good, the bad, the weird
I often dream about doing what the author is currently doing: Tooling around, writing software in a language I want to learn full-time. If I could get a patreon going...<p>ANYWHO, I didn&#x27;t come here to malign the author. I came here to ask a question.<p>( For clarity, I&#x27;m an experience dev, computer science degree, been a developer full time for 6 years out of college and two years while in college )<p>I see a lot of discussion in here about developing GUIs in Rust. Writing native GUIs with Rust sounds awesome to me, and I&#x27;m drawn to it for the obvious benefits.<p>One of the things I want to do in 2018 is learn a new programming language. Last year I learned groovy, which is terrible, and Elixir, which is great and I highly recommend it.<p>I&#x27;m currently tore between three languages: Rust, Reasonml, and Scala<p>They have the following requirements:<p>- EXCELLENT type system
- Functional
- Productive
- Portable<p>My goal is to write GUI applications that help me design my board games.<p>* Scala<p>Scala has a nice type system, runs on the JVM so we get all of that sweet sweet Java interop, is functional with a mutable escape hatch, and is a &quot;boring&quot; language that is used extensively.<p>Additionally, the story for writing GUI applications for Java isn&#x27;t as slick as web technologies.<p>Listen, I&#x27;m a millennial. We don&#x27;t believe in anything. I don&#x27;t mind opening up a web browser to interact with a graphical user interface, so languages with a better web technologies story is more attractive to me.<p>Scala is not much of a departure from my previous languages, so I fear I wouldn&#x27;t learn much.<p>I already have Elixir for writing restful APIs and GoLang&#x2F;Hugo for static sites, so Scala over-laps with these use cases making it less productive.<p>* Reasonml<p>Reasonml is a newer language from Facebook that compiles to the OCaml syntax tree, and then uses the OCaml compiler to produce the machine code.<p>Currently, Reason&#x27;s only target is Javascript, but the community has already written a bunch of back-ends to have reason output to other formats.<p>There is a Facebook-developed React library called ReactReason, so targeting web technologies is Reasons JAM. A lot of Messenger.com has already been re-written using reason.<p>Reason has a language server implementation that hooks up to my Emacs config quite nicely, so I&#x27;m efficient in my development environment.<p>Reason uses OCaml&#x27;s type system, which has 25 years of development and is extremely effective.<p>Reason has a compiler. After working with dynamic languages for so long, I have learned to love my compiler.<p>Reason is designed for productive Javascript interop, so I have access to the gigantic nodejs ecosystem.<p>The humans who are d<p>Reason ticks a LOT of my boxes, but it has some warts:<p>- Not a perfect story for async programming.
- Does not have a swagger-codegen back-end for stubbing out types based on my API docs.
- Special little snowflake language with a small community
- Really only good for front-end development
- Is the type system and other language primitives THAT MUCH BETTER than Typescript + ImmutableJS?<p>* Rust<p>Rust is the language I WANT to learn and use, but I am hesitant for a number of reasons.<p>I want to learn rust because:<p>- Aside from a teeny bit of C &#x2F; C++ usage in college, I&#x27;ve not written in a low level language that requires me to think about garbage collection and I think it would be a useful exercise.
- It&#x27;s extremely fast.
- It has some excellent concepts, like the borrow checker, that will expose me to new ways of programming.
- Will be nice to have a low-level language in my tool belt.
- Quickly growing community, a good opportunity to contribute FOSS.<p>I&#x27;m hesitant because:<p>- I&#x27;m concerned it doesn&#x27;t fit my use case of writing GUIs.
- I want it to be a PRODUCTIVE langauge, and MAKE STUFF, not writing glue to get the stuff I want to work.