If you're just sitting at home most nights, wondering what the hell you should be doing, rejoice! I've got a list of 10 of the hottest, coolest programming languages you can stuff in a single sack (or...blog post).
This one's a no-brainer. Python's becoming ever more popular with the machine learning crowd, it's ubiquitous in data science, and people are even using it to write web-based microservices again with libraries like Flask. It's the winner of the past couple years of Stack Overflow surveys for most popular langauge, it's in pretty much every job listing out there...you really cannot go wrong learning this interesting little language (and it comes with "batteries included" to boot!).
At this point, you're probably like "ok, this dude's just listing popular langauges". To an extent, yes, but worry not! I'll get to the more esoteric, interesting languages after this. But you have to know Javascript these days. It's like Latin, or Koine Greek, or modern French -- it's useful in so many contexts that it would be foolish not to understand the fundamentals. At least, until the next "language" aka ABI aka "assembly" language gains traction...
The language that isn't a language is probably the hottest option on this list, mainly because you can write code that simply was not possible before WebAssembly. Not to mention, you can write code in a langauge like C/C++ or Java or something, compile to WebAssembly, and it should just do what it says on the tin. Unity has had great success using this to "port" games to a web environment without a plugin.
It was a toss-up between this and Go, but let's be honest -- no it wasn't. Go didn't even crack the top ten, because Rust is the superior language. Not trying to get into a flame war, but this is the systems language of the future. Its approach to memory management is novel yet approachable, its "trait" system is a breath of fresh air compared to trying to implement shared behaviors...overall, coming from a web environment, Rust is a type-safe, mostly-memory-safe jolt of new life. I'd highly recommend it -- it's easily my favorite on this list.
Speaking of systems programming, if you're looking to expand beyond the web, this is the lingua franca for the rest of the programming world (sure, C is still in use, but C++ is far more popular for modern apps, except in exceptional cases). I mean, it's how the V8 engine and Chrome are implemented. Are you too good for the language that powers Chrome? More so, it's the language to learn when you want to peek under the hood and you start to learn, oh, this is why Javascript uses an event loop, or this is why that decision was made. It's eye opening, truly.
I just started learning Swift, as part of my weekend iOS explorations, and it's well worth a look. It borrows some concepts from Rust, as far as deterministic non-manual memory management goes. However, it seems much more approachable in terms of its difficulty curve. But this is beside the point -- if you ever want to expand into mobile development, this is the way.
Enough of these mainstream languages! Let's dive into the esoteric...
Assembly language? What is it, 1984? No, but you can code like it is! Using emulators, modern tools, you can program old machines from the comfort of your Macbook. Personally, I'm learning Z80 assembly so I can make a Game Boy Color game.
Even if you don't plan on actually using assembly, it's worthwhile in the same way that Lisp-like langauges are worthwhile -- they change the way you think about data and programming. And in the case of assembly language, it teaches you how a computer really operates, on the bare metal.
I haven't used Elm yet, but I want to, which is why it's on this list. In particular, there are a lot of libraries that are modeling their data flow after Elm's architecture, and even if I don't end up using it in production, it might be able to teach me something about data flows and state management.
A Lisp? In this day in age? Surely, you're joking, Mr. Pocus!
I joke not! The difference between this Lisp and most Lisps is that this one comes with batteries included, with an absolute ton of tools to actually accomplish cool stuff. Plus, it's tailor-made for making...
Seriously! You can use Racket, you can use JS, you can use whatever the hell language you want (even assembly), but the point is, you can create your own language. Lisp-like languages are the easiest to implement, but you can also implement your own drawing language, a scripting language, it can be interpreted or compiled, it can be dynamically or statically typed, but the point is, you can make it yours.
Compilers and interpreters aren't that hard. The "dragon book" and years of GCC cruft will make you think "oh I could never write a compiler!" but I truly believe you can (if I can, you can). There are projects like make-a-lisp that make this not easy, exactly, but approachable. Like climbing a mountain, you can do it one step at a time. And of course, from the Lisp interpreter taught here, you can expand to C-like languages (or more esoteric syntaxes!).
Which programming language are you learning during the pandemic? Are you learning another skill altogether?