Delphi -> Microsoft stack -> Rails/Ruby -> Scala -> Clojure -> Rust
The stuff I remember well starts from Ruby. Good things:
- Ah man code is like a book.
- Lots of people were writing Ruby back then, so lots of libraries.
Bad:
- Deployments in general, this was before Docker, but I prefer having single binary/jar deployments
- Slow
- Lots of runtime errors
- You need lots of tests
Scala, good:
- If using IntelliJ, the development experience is kind of slick
- Quite modern, JVM libs work
- You can go functional or OOP, whatever you wish
- Fast
- Type system helps you out, so no need for that many tests
Bad:
- IntelliJ, I need my Emacs
- SBT is not very nice in the end, making a huge jar file can cause trouble sometimes
- Not the biggest fan of implicits
Clojure, good:
- Lisps are SO MUCH FUN to write
- ...especially if writing pure functions, stuff like code generators
- Emacs is good here, Cider rocks!
- JVM libs are available
- Leiningen is definitely nicer than SBT
- Everything is pretty easy and straightforward
Bad:
- Concurrency and effects can cause trouble, especially if doing it through Java libraries
- Leiningen is nice, but slow. You must use Cider.
- Runtime errors, as with every dynamic language
- Again lots of tests, but at least they're fun to write
Rust, good:
- Concurrency, IO and so on. Just damn nice with Rust
- Refactoring without fear
- Cargo is the best dependency management / build tool ever
- Small binaries
- Total control of CPU/RAM, you can do pretty fast systems
- If it compiles, it usually works
- Type system is great, libraries are quite nice already
- Community feels like the good old Ruby days, but better
Bad:
- Borrow checker still sometimes hurts, hopefully non-lexical lifetimes land to stable soon
- Problems with the current 0.1 tokio and futures can be pretty daunting. It's not a good idea to do super complex stuff with them yet
- Write your own libraries, especially if you started two years ago. That was fun though
I think the next thing I must grasp well is Haskell, just for the fun of it.