My Opinions on Some Programming Languages

  • Programming
  • Web Development
  • Competitive Programming
Published on Sun Sep 05 2021. Views
My opinions on the programming languages I've had experience with.

Intro

There are tons of programming languages out there for different purposes, I used to search for the best languages to learn every day when I first started out. Ones like Rust, Python, JavaScript, Ruby, Golang, and Java appeared the most. But then after trying some of the languages, I realized they are just not my type, or in other words, they are not suitable for my purposes. On the other hand, I quite liked some other ones and I decided to just stick to them. In this blog, I'm going to be walking through some of my experiences learning and using different programming languages.

Python

For example, I took a web development course(which brought me into the software industry first, so thank you) in Python with Django. To be honest, I think python is a nice language for beginners because you don't need to worry about memory management, types(mostly), pointers, and other things since Python does that for you underneath the hood. At first I was pretty happy having this "freedom", but then after the codebase scales, it's just a nightmare to refactor and clean up the code.

JS/TS

I tried JavaScript with React afterward and completed a few simple projects, and I decided to really dive into React or frontend web development in general because I liked it a lot. JavaScript was actually OK for me at that time, it's robust and applicable almost everywhere.

Somewhere along the line, I was introduced to the language 'TypeScript - JavaScript that Scale', which is currently my favorite language, so, I decided to give TypeScript React a shot.

Initially, I struggled a lot with stuff like generics, and weird-looking type annotations, and I found the static typing part very constraining because I don't have that "freedom" I used to have with Python and JavaScript.

As I got better at it and used to it, it's becoming harder for me to go back to dynamic typing languages to build something serious and complex.

C++

In the same month, C++ came into my way and I was like, why not try it out. I learned some of the syntax and fundamental concepts and it was quite easy for me since I have some prior experience using C, then I stumbled upon algorithm-styled questions. I first started doing some of the easy ones on LeetCode with C++, and it was definitely a disaster, I couldn't even solve an easy problem like two sum, without exceeding the time limit because I didn't even know data structures and algorithms well. So, I went all the way back to learn some data structures like stack, queue, unordered_map and unordered_set with C++.

Not gonna lie, I actually thought of switching to Python or TypeScript because 40% of the time I was just dealing with address boundary errors and other subtle mistakes. Then, things started to get better as I completed more questions and got more familiar with data structures and algorithms, and then I was dedicated to stick to C++ for this sort of programming, partially because it is the choice of most programmers.

Now, I'm doing algorithms-styled questions on a daily basis on LeetCode and other websites, you can find the challenge here.

The Real Journey

I then went full-stack(Next.js, Apollo GraphQL, TypeOrm, Express, etc) and started to build some serious projects with the technologies I learned, and all in TypeScript of course.

That's when I genuinely started to benefit from TypeScript. As the project scales(1.1k commits currently), a reliable and smart typing system comes in very handy, and along with some other tools like type-graphql and graphql-code-generator, I was able to get consistent type definitions on the client-side when querying the server.

Conclusion

I went through the languages that really had a great impact on me and thus skipped some of the other ones like Swift and C since they didn't act as an essential role in my career. But in general, it's been a nice experience trying out various programming languages.