Do you really need to learn Low-Level
Programming

Do you really need to learn Low-Level Programming

ยท

4 min read

Talking about Low-Level concepts, Most people find learning them not practical, challenging, or complex to learn, but, for me, I really like learning Low-Level concepts, and see how my software is actually working, seeing how I can fix some of the performance issues, reducing memory allocation, and most importantly showing off your Low-Level skills to your friends, by the way, I don't have any programmer friends, so, I do show off in Twitter like this

What are "Low-Level" concepts?

Nowadays, Programming languages like JavaScript and Python are the ones most people learn at first, but, I always recommend languages like C# to learn because they cover a lot of programming concepts that are a must know like Python runs the code line by line from just one command, but in C# your code first gets compiled to ASM, or Assembly Language, and then gets executed by the .NET Runtime, so, these concepts really helps you to clear the understanding of your code. But, this is not "Low-Level" yet, Low-Level means how it is actually running inside the hardware, like how a variable is being stored in the memory or how a built-in function really works under the hood. This is called "Low-Level". Let's now talk about Why you should learn Low-Level Programming.

Why you should learn "Low-Level" Programming?

Knowing the architecture of computing is what I would call a generally applicable skill. What I mean is that, regardless of the programming language you use, eventually, all that nice-looking code breaks down into Assembly which is then broken down into bits. It's never a bad thing to know how your code will look in Assembly. Gives you an idea of how your compiler works.

You can use your knowledge of Assembly to your advantage. If you decide to pry one a .asm file and look through it and realize a portion of the machine code could be optimized, you could do it! No harm no foul. Your programs could be much faster as a result.

How to learn Low-Level Programming?

Learning languages like C++

I don't know about you, but, I love C++ . It is one of the greatest programming languages ever made. It is maybe hard to learn, but once you learned it, it would make you feel like you are the greatest programmer of all time. And as I said you can also show off your C++ skills to your friends but I don't have any programmer friends, so, I go to Twitter.

Decoding your Code

You can use different tools to decode your code to see what's going on in your code after you compiled it, Eg. for C#, I use the SharpLab to decode my code in C# Decoded, IL, or JIT ASM as it's shown below.

C# To IL C# to IL

C# To Decoded C# C# to Decoded C#

C# To JIT ASM C# to JIT ASM

Looking into the Memory

Another way to learn about your Software is by looking into the memory by using a Hex Editor. It's a tool to display, decode and analyze binary data to reverse engineer their format and extract information or patch values in them.

ImHex is the Hex Editor that I use. What makes ImHex special is that it has many advanced features that can often only be found in paid applications. Such features are a completely custom binary template and pattern language to decode and highlight structures in the data, a graphical node-based data processor to pre-process values before they're displayed, a disassembler, diffing support, bookmarks, and much much more. At the same time, ImHex is completely free and open source under the GPLv2 language.

ImHex 1 ImHex 2

Conclusion

In the end, I wanna say that it depends on you, if you really enjoy learning them, then learn, if you don't, don't learn. But as for me I really enjoy learning "Low-Level" concepts and also teaching them to others by writing articles here on ProgrammingFire. You can read more of these articles. If you find these articles valuable please consider sponsoring me, also please make sure to follow me on Twitter

Did you find this article valuable?

Support ProgrammingFire ๐Ÿš€ Blog by becoming a sponsor. Any amount is appreciated!

ย