banner project

Polyglot of Programming language


the enchanting world of computer programming – a realm of Geeks meet with lines of code, weave intricate digital possibilites, and unlocking new digital opportunity. A Languages that translate lines of words to bits of instruction for computer, fueled by endless cups of coffee.

Type of languages: Direct Execution Vs Interpreted

In the vast landscape of programming languages, two main categories based on how it run: direct execution and interpreted. Direct execution (compiled) languages compile code directly into machine-readable binary, offering unparalleled speed and efficiency. such as C, C++, Golang, Rust etc. On the other hand, interpreted languages (like Python, JavaScript, Ruby, Lua, Java etc) are executed line by line by another programs/vitual machine, making them highly versatile and accessible for rapid prototyping and development.

My Interpreted Language:

Python

As an experienced programmer deeply immersed in the world of AI, Python holds a special place in my heart. Its simplicity, readability, and extensive library ecosystem make it my go-to choice for quick prototypes, whether it's scripting, CLI tools, or database scripts. However, when projects scale up, Python's dynamically typed nature can become a double-edged sword. The lack of strict typing often leads to tangled data structures in larger projects, causing headaches for developers trying to maintain and debug complex codebases. So if my project is big enough, i would and should choose strictly data typed languange such as Rust.

Typescript

Everything in the web landscape, TypeScript has become my primary of choice. Why no Javascript?. Well, it's all about those pesky JavaScript quirks. With its dynamic typing, JavaScript can be like a wild rollercoaster ride, leaving you guessing at every turn The same problem with python, dyanamic Typed. TypeScript brings clarity and confidence to web development. So, when it comes to crafting sleek and robust web applications or quick prototype MVP, you'll find me embracing TypeScript with open arms – because in this dynamic world, a little type safety goes a long way!

My Compiled Language:

Golang

Since I learned programming the hard way – starting with C++ – I've always struggled with managing memory. So, when I'm in the workspace, I turn to Java. However, in mid-2019, I heard the hype about Java Without JVM. Enter Golang, the new kid on the block at that moment. I learned the simplicity and productivity of Golang in a week. The speed of compilation and execution amazed me. It compiles like an interpreted language but runs like a compiled language. At that moment, Golang became my primary language for backend programming.

Until I found myself struggling with the simplicity of Golang's design. Before generics were introduced in Golang, I repeatedly found myself creating the same function with different types. I often found myself writing if err != nil. The Golang channel system provided a strict use of concurrency, which is great for simple concurrency. However, when things get complex, you'll find yourself hacking it together.

Rust

From Golang to Rust. I heard about Rust from the Stack Overflow survey, where it won six consecutive years as the most loved programming language. There must be something special about Rust, so I decided to learn it over the weekend and was amazed. The famous concepts of borrowing and lifetimes, concepts I had never encountered before, fascinated me. However, curses and desperation occurred to me while writing Rust. Google became my teacher as I learned the language.

After some time, it became a mindset: "This variable is going out of scope after this; I need to borrow it; I need to transfer ownership of this variable." When this mindset clicked, everything started to make sense.

Rust's error handling can be more complex or simpler than in Golang. If you want it advanced, you can create your own. For prototypes, you could use ? or .unwrap(). You can use third-party libraries such as tokio async for advanced multithreading or tokio channel for Go-like channels. It's up to you.

After writing two programs in Rust, it became my go-to programming language for backend development. Yes, it's slow to write, but once it compiles, I don't encounter memory leak problems like the ones I encountered when writing Golang.

What to learn?

It's up to you to decide your favorite programming language, but you should give yourself a chance to learn a new language. As technology advances, languages themselves evolve. So, by learning a new programming language, you evolve with the technology.

Special Mention

Solidity

Blockchain is the new technology on the rise. The de facto language for blockchain is Solidity. I found myself hating writing a blockchain contract in Solidity. Solidity is too simple and strict for creativity. I'll wait and hope for WebAssembly (WASM) to become the main language for blockchain.

Compiling