As the future of technology becomes a reality, programming is becoming a key part of IT skills and is gaining prominence. This book explains the process of programming based on the basic concepts of computers and programs, emphasizing that programming is not a one-size-fits-all, but a tool for analyzing situations and solving problems. As technology advances, programming is becoming an essential part of education, and we look forward to a future where everyone has some understanding of programming.
When you were a kid, did you ever fantasize about the future? We’ve all thought about the so-called “futuristic technology” that allows us to watch TV while walking around, have real-time conversations or meetings with people far away on a screen, and control our appliances from our smartphones while we’re away from home. Once the stuff of science fiction movies, these technologies are fast-forwarding to the 21st century and becoming a reality, one by one, in the name of technology. In fact, smartphones, smart home systems, artificial intelligence assistants, and many other technologies have already infiltrated our daily lives. Furthermore, people are using virtual reality (VR) and augmented reality (AR) technologies to create new experiences that blur the lines between online and offline. With so many companies focusing on IT technology, it’s no wonder that we’re now a society that favors those who are skilled with IT technology, especially programming, over those who simply work with their hands. Moreover, programming is recognized as a “dream job” because it is possible to earn a high income remotely, regardless of location, if you are good at it. So, what is this suddenly emerging skill called “programming”?
To fully understand programming, it’s worth taking a quick look at what computers and programs are. The word computer originally came from a simple calculator and the person who operated it. Modern computers aren’t much different. It’s simply a machine that performs calculations in a set sequence and doesn’t do anything on its own. However, computers are characterized by the ability to perform different calculations depending on their state. Just as the state of a light switch determines whether it turns on or off, a computer’s next calculation depends on the results of its previous calculation. However, since computers don’t inherently do anything, but simply follow the commands they are given, they must have a “program,” a set of commands. You can think of a program as a kind of manual, a sequence of actions to be performed in a specific situation. The process of writing a program like this is called programming.
The process of programming is quite similar to writing. Just as you write in a specific language, such as Korean or English, programs are written in different languages. Programming languages include C, Java, Python, and many others, each with their own philosophy and features. Programmers choose the right language to write in depending on the nature of the problem they are trying to solve. For example, a language like Python might be better suited for analyzing and processing large amounts of data, while C might be better suited for maximizing the performance of a system. The language you use is a reflection of your personality and the problem you’re trying to solve.
Once you’ve decided on a language, you need to design the structure and logic of your program. Just like when you write, you choose the right words for your topic and place them in context to organize the flow of your writing, it’s important to choose and organize your data structures and algorithms in programming. A data structure is the way you decide how to store and manipulate data, and an algorithm is a procedure or method for processing data and solving problems. The choice of data structures and algorithms largely determines the performance of your program, so designing them carefully is an important factor in determining the quality of your program.
Finally, compilation is the process of translating the program into a form that the computer can understand. Since programming languages are designed to be easily understood by humans, it is essential to translate them into machine language that can be interpreted by computers. The compilation process creates a program in machine language that the computer can understand, and it functions as software that we can actually use.
Nowadays, programming is often presented on the internet and in various media as if it were a universal tool. We use programming to control robots, operate smartphones, and even build artificial intelligence. It’s clear that these skills are powerful tools for turning our imaginations into reality. However, programming is not a “magic bullet” that solves everything. As mentioned earlier, programs work according to a strictly pre-written manual, and they can’t achieve the desired functionality without sophisticated analysis and design. For example, if you want to create a robot that walks like a human, you need to analyze the exact structure and movement of human legs. Without analyzing which direction a person’s muscles should move at any given moment, how they should be compensated for balance, and so on, it is difficult to even implement a simple gait. Programming is only a basic tool and manual for solving problems, and it loses its meaning if it is not backed by accurate understanding and analysis.
Since ancient times, people have had the desire to make their lives more convenient, and over time, this desire has evolved into tools, machines, and computers, and now, with the addition of artificial intelligence and programming skills, they are replacing or complementing the role of humans in more and more areas. In the 21st century, programming is becoming more than just a skill, it’s becoming an essential life skill, and most universities require programming in a variety of academic disciplines, not just computer-related majors. In addition, programming fundamentals are being included in primary and secondary education curricula, so it is expected that many people will understand basic programming languages in the future. In the future, it is hoped that everyone will be able to understand and use programming to some extent.