To func, or not to func: that is the question.
Pim Brouwers Sep 14 Updated on Dec 05, 2018
UPDATE: I elected to learn F#.
What follows is me talking out loud, whilst also seeking advice, in an attempt to resolve what my next learning path will be.
Over the past several months I've been toying with several different environments, trying to determine which "thing" I'd like to learn next. I've dabbled in python, f# and go. Establishing beginner level status in all 3 languages.
Currently I sit at a crossroads, undecided which I'd like to put some real horsepower behind. Whichever language I choose needs to fit the needs of data engineering (i.e. interoping with databases, http requests, json parsing) and web programming.
The majority of my current experience is with the .NET family of products, which I've used at the enterprise level for roughly 5 years. This is naturally why the first destination was f#. I've looped back on it several times, each iteration getting a little further. I still find the syntax and concepts very esoteric, and doubt I could produce anything of substance today. I'm also starting to think, that I'm really not cut out for the functional line of thinking, and I'm kind of okay with that.
My next stop was Python, as I've used it in the past a little. Not far into my learning, it became clear that learning it in 2018 might be of little point now that Go has solidified itself. Turning my sights to Go was refreshing. It's simple (like I am) and fast as f***. Perfectly suited for a simple-minded performance junkie. I've already developed a sense of being able to make something with it, even after only a short amount of time using it. I can't shake the feeling though that I'm writing code from the 70s, needing to keep track of values vs. pointers.
Case for f#:
- Pro: familiarity with .NET
- Pro: functional programming is so hot right now
- Pro: functional programming is well suited for both web and data work
- Con: syntax & design is esoteric for an imperative programmer
- Con: somewhat tepid following on GitHub ~1.8k stars (as of writing)
Case for go:
- Pro: the new hotness
- Pro: dead-simple syntax
- Pro: extremely fast and portable (compiles to single exe)
- Pro: huge, cult-like following ~46k starts on GitHub (as of writing)
- Con: a bit obtuse compare to a fully managed language like c#
- Con: language is still somewhat in it's infancy, with major feature still being developed (like generics)
- Con: once programs get complex, you end up repeating yourself, a lot
Case for python:
- [does it make sense to learn python in 2018?]
Case for x:
- [insert your advice here]
So dev.to, what do you think?! Where should Pim go next?
Thanks for your help, love and support!