5 ms·
I started out doing a few years of C++ and ended up fairly disenchanted with programming. I had started when I was 14 and by 19 I was sure I didn't really want
by 59nadir 10y ago
I started out doing a few years of C++ and ended up fairly disenchanted with programming. I had started when I was 14 and by 19 I was sure I didn't really want to sit down and program every day, because it just wasn't exciting enough anymore.
I found Python around 21-22 and it completely changed everything. I could sit down and just flash through the whole process of idea to actual execution in one day and I didn't have to micromanage everything. Programming became exciting again.
A few years later I was having a hard time with some personal issues and I ended up trying to distract myself with SICP. SICP just lifted a whole layer of fog for me and while in the process of reading it I found Racket. So I went into the rabbit hole that is Racket and found myself just unmasking programming languages in general, making all of them so much simpler and easy to learn. When I was done I just had a new appreciation for language features and how to build them.
Not all that long ago I looked at Elixir and started playing with it. While doing so I realized that there is no stack that can make playing with processes as easy as the BEAM and what that means for the apps you're making. The BEAM changed the way I looked at multi-threading and concurrency and it's the platform I'd use for all forms of control systems, with the branches in those systems either running entirely on the BEAM or just communicating to external nodes in other languages when needed.
After about 4-5 months of Elixir I landed a job using Erlang at a game studio and I'm extremely happy to be using the BEAM professionally. We're allowed to create fairly amazing things and the things we build, even though I don't agree with the reason they're being built all of the time, are made possible only because of the BEAM (running interop with Lua, etc., running all communication through the BEAM).
Lately everything's finally clicked for me with Haskell and I find myself not having issues with the things I had issues with previously. I don't know how, exactly, but I think I let my brain finally absorb "Real World Haskell" (the best book, in my opinion: If you're only going to read one, don't let it be "Learn you a Haskell". LYAH is nice as a reference, but I don't think the demonstrations in it are very good, relevant and exciting) and so I was able to _not_ worry about monads and simply use them, letting the idea of them just emerge in my head because of familiarity with them from usage, instead of forcing monad tutorials on myself.
When I started to appreciate Haskell as just another language is when I finally understood why it was so great. It's amazingly practical and I've redone some of my older Python projects in Haskell only to find that I've got about the same LoC count even with types, which means that I've got more safety, more robustness and I can add things faster and with less headaches.
With these languages, there aren't many things that are impossible, and I feel like they've all changed something in me in terms of how I look at programming.