Skip to content

How Computers Understand Us?

Recently, I attended an online session with Computer Masters students, most of them had years of experience in top IT companies. The presenter started to have an interactive session with all attendees to discuss fundamentals like how the computer understands human language. To my surprise, most of the attendees failed to explain how this encoding works, which inspired me to write my next article on Basic Web, which you are reading now. I have titled this article, “how computers understand us?”

Get ready for an exciting ride, because we are going back to basics, and we will be discussing low-level language, high-level language, compilers, interpreters, number systems, encoding and everything else you need to know to understand how computers understand us humans. If you know this already high-five, you are smarter than some of the university-level master students of computer science with years of experience, if you, don’t know yet, don’t worry because that is going to change in next few minutes… all you have to do is keep reading! Let’s start.

The Foundation

The journey of how computers understand us begins with the very foundation of computing: binary language. At the most basic level, computers do not understand English, Hindi, or any other human language. Instead, they communicate using just two symbols: 0 and 1, also known as binary code. This is the language that lies at the heart of every computer operation. But how does this simple combination of zeros and ones translate into something meaningful? To answer that, we need to dig deeper into the concept of encoding.

When we type a letter or word on our keyboard, that input is immediately converted into a series of numbers. Every character, whether it’s a letter, number, or symbol, is assigned a unique numeric value. One of the most common encoding systems is called ASCII (American Standard Code for Information Interchange). For example, when you press the letter “A,” the computer recognizes it as the number 65 in ASCII. But these numbers, too, are ultimately transformed into binary—so the “A” is stored and processed as 01000001. Through encoding systems like ASCII or Unicode, which supports a wider range of characters, the computer can understand and manipulate the input we provide.

Low-Level vs. High-Level Languages

At this point, you might be wondering, if computers speak binary, how do we, as programmers, communicate with them? This is where the concept of low-level and high-level programming languages comes in. Low-level languages, such as Assembly or Machine Language, are very close to binary and provide minimal abstraction from the computer’s hardware. Writing in these languages is like giving direct instructions to the machine using binary or something very close to it.

But for most of us, writing in binary would be extremely time-consuming and prone to errors. That’s why we use high-level languages like Python, Java, or C++, which are closer to human language and much easier to write and understand. When we write code in these languages, something magical happens: the code is translated into low-level instructions that the computer can process. This is done by tools known as compilers and interpreters.

Compilers and Interpreters

A compiler takes the entire high-level code and converts it into machine language (binary code) all at once, creating an executable file. This means that after the code is compiled, the computer can run it directly without further translation. This is how languages like C and C++ work. On the other hand, an interpreter translates the code line by line, executing it immediately. This is the case with languages like Python or JavaScript, where the code is interpreted as you run it.

Both compilers and interpreters bridge the gap between human-friendly code and machine-understandable instructions. They essentially act as translators, enabling us to communicate effectively with the computer without having to deal with binary ourselves.

The Role of Number Systems

But how do computers perform calculations or store numbers? Here’s where we dive into the world of number systems. While we, humans, are familiar with the decimal system (base 10), computers primarily use the binary system (base 2). Aside from binary, computers also use octal (base 8) and hexadecimal (base 16) systems for specific tasks, such as simplifying long binary numbers or addressing memory locations efficiently.

For example, hexadecimal is often used in programming and debugging because it’s more compact and easier to read than long strings of binary. In hexadecimal, the number 10 is represented as “A,” and the number 15 is “F.” This system allows us to express large numbers more succinctly, making tasks like memory management much easier for programmers.

Conclusion

So, how does a computer understand us? It’s a layered process involving encoding, translation, and execution. From turning our text into binary code through encoding systems like ASCII to using high-level languages that are converted into low-level instructions by compilers and interpreters, computers follow a structured, logical process to interpret and execute our commands. As we continue to evolve with technology, understanding these basics gives us insight into the incredible efficiency and power of the machines we use every day.

By grasping the fundamentals of how computers process information, we gain a better appreciation for the complexity and beauty of technology. And if you’re still with me, congratulations! You now know more than many experienced professionals who may have overlooked these basic yet crucial concepts.

Keep exploring, keep learning, and high-five again for diving deep into the world of computing!

If you want me to dig deeper and explain these concepts in detail, please let me know in the comments and I will write a detailed post on all the topics I have briefly discussed here.


Don’t forget to sign up for the newsletter

Leave a Reply

Your email address will not be published. Required fields are marked *