My Opinions on Some Programming Languages
- Programming
- Web Development
- Competitive Programming
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.
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.
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.
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.
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.
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.