Choosing a programming language
If you are reading this chapter first, or you're starting from this chapter without any prior experience in programming, it is important that you have a firm grasp of the preliminary concepts found in modules 1 - 7.
Otherwise, I would like to congratulate you for getting past the preliminary concepts section. You are now ready for the actual learning.
In this section, our focus would be on programming! It's been quite interesting exploring the preliminary concepts, and we're finally here. Let's being!
tip
Before you begin programming, note that, some things might take time to stick, and that's not your fault, I'll be using mostly video contents going on to make it easier, there's also a Discord server where you can find me .
What you should know
In a sense, choosing your first programming language can be a bit like choosing your first car. Typically, you want something comfortable and not overpriced. Here are some key things you should know before choosing a language (or your first car 😃 )
- 1. The end goal
- That's the domain you want to programming in, is it building mobile apps, building servers(backend), or working with AI?
- 2. Community strength and support
- When you build applications or software, you'd run into issues and you'd be in need of help, it's great to choose a language adopted for the domain, for instance,using Golang for embedded software might be wrong because you may not get a lot of support, at least as of the time of this writing, when compared to the use and adoption of C/C++
- 3. Learning curve
- While this isn't exactly a problem when you have moderate study time or a good schedule, a steep learning curve mean you need to do more groundwork to understand some concepts
Now, let's try to review those keynotes and how this resource helps you,
- The end goal: The end goal of this book is to teach you core programming concepts and make you a backend engineer.
- Adoption: I have carefully selected 2 programming languages used for building backend applications, that's Javascript and Rust, the choice is mostly influenced by what I use as a backend engineer myself. There are other great alternatives Go, Java, Python, to name a few, but they won't be covered in this book, or at least not yet.
- Learning curve: The 2 available languages have different learning curves discussed below;
Learning Curves
When we discussed the classification of programming languages, I mentioned 2 classes; compiled languages and interpreted languages, remember?. Allow me to extend it further to include, statically typed languages and dynamically typed languages.
Statically typed languages
In statically typed languages, the programmer is often required to indicate the type of a variable. This mean you must state if your variable is a number or letters (string), an array or something else, an example of such in this book is the Rust programming language.
Dynamically typed languages
In dynamically typed language like JavaScript, it is relatively easy to get to speed, compared to statically typed languages. However, down the lane the learning becomes hard to quantify and it seems as if learning is standstill.
Broadly, statically typed languages are longer to be established in and master but they make it easier to learn other statically typed languages and the dynamically typed ones rather quickly.
Which language should you choose?
The short answer is anyone is fine.
Long answer, I've used Rust and JavaScript in and out of work environment and I can say for a fact that It's always best to know both, personally, I prefer statically typed language for medium to large-size projects, while I use JavaScript for small size applications, scripting and prototyping.
The good news is that it is relatively easy to learn other languages when you are already familiar with one. One thing you must not doing when starting out is learning two or more programming languages concurrently, it's usually difficult, frustrating and non-productive.
In the next module, I'll talk more about the 2 programming language — Rust and JavaScript, I encourage you to carefully go through each and choose one that catches your interest and stick it to the end of the material for effective learning.
Happy hacking!