In this blog post, we explore whether programming is truly a dream technology that makes anything possible, or a tool that requires thorough analysis and design.
Did you ever imagine the future when you were young? You probably imagined so-called ‘future technologies’ like watching TV while walking, having real-time conversations or meetings with distant people through screens, or controlling home appliances via smartphone while away from home. Technologies that once seemed possible only in old sci-fi movies are now, in the 21st century, becoming reality one by one under the name of IT. Indeed, various technologies like smartphones, smart home systems, and AI assistants have already deeply permeated our daily lives. Furthermore, people are creating new experiences by breaking down the boundaries between online and offline through virtual reality (VR) and augmented reality (AR) technologies. As countless companies focus on IT technology in this era, society now favors experts skilled in IT, particularly those proficient in programming, over workers who simply labor with their bodies. Moreover, programming is recognized as a ‘dream job’ because, with sufficient skill, one can earn high income remotely, unconstrained by location. So, one can’t help but wonder what exactly this suddenly emerged technology called ‘programming’ is.
To truly understand programming, we first need to briefly examine what computers and programs are. The term ‘computer’ originally came from words meaning a simple calculator or the person operating that calculator. Modern computers are not fundamentally different. They are simply machines that perform given calculations in a predetermined sequence and do not initiate any activities on their own. However, computers possess the characteristic of performing calculations differently based on their current state. Just as whether a light turns on or off depends on whether the switch is pressed, a computer’s next calculation depends on the result of its previous calculation. However, since computers inherently perform no actions on their own and merely follow given commands, a ‘program’—a set of these commands—is absolutely necessary. This program can be thought of as a kind of manual, listing the tasks to be performed in a specific situation in sequential order. The series of steps involved in writing such a program is called ‘programming’.
The process of programming is quite similar to writing. Just as writing is done in specific languages like Korean or English, programs are written in various languages. Programming languages include C, Java, Python, and others, each possessing its own distinct philosophy and characteristics. Programmers select the appropriate language based on the characteristics of the problem they aim to solve. For instance, languages like Python may be suitable for tasks involving large-scale data analysis and processing, while C might be preferable when maximizing system performance is essential. Thus, the language chosen often reflects the programmer’s inclinations or the direction of the problem being solved.
After deciding on a language, the process of designing the program’s structure and logic is necessary. Just as writing involves selecting words appropriate to the topic and arranging them contextually to form the flow of the text, programming requires the selection and arrangement of data structures and algorithms. Data structures determine how data is stored and handled, while algorithms represent the procedures or methods for processing data and solving problems. Since the choice of data structures and algorithms significantly impacts program performance, carefully designing these elements is a crucial factor determining the quality of the program.
Finally, the process of translating the program into a form the computer can understand—compilation—is necessary. Programming languages are inherently designed for human readability, making the conversion to machine code interpretable by computers essential. After compilation, a program in machine code format, recognizable by the computer, is created, enabling it to function as the software we actually use.
Today, programming is often presented through the internet and various media as if it were a universal tool. Indeed, programming controls robots, operates smartphones, and even builds artificial intelligence. These technologies are undoubtedly powerful tools that turn our imagination into reality. However, programming is not a ‘magic’ solution for everything. As mentioned earlier, programs operate strictly according to pre-written manuals. Without meticulous analysis and design, desired functions cannot be implemented. For instance, to create a robot that walks like a human, precise analysis of human leg structure and movement is essential. Without analyzing when and in which direction human muscles must move, or how to compensate for balance, even implementing basic gait becomes difficult. Therefore, programming is merely a fundamental tool and manual for solving problems; without accurate understanding and analysis, it loses its meaning.
Since ancient times, people have harbored a desire to live more conveniently. This desire has evolved over time into tools, machines, and computers. Now, with the addition of artificial intelligence and programming technology, we live in a world where these technologies increasingly replace or supplement human roles across more and more domains. In the 21st century, programming is evolving beyond a mere skill into an essential life skill. Most universities now require programming education not only in computer-related majors but across various academic fields. Moreover, with programming fundamentals increasingly included in elementary and secondary school curricula, it is anticipated that future societies will see many people understanding basic programming languages. Ultimately, we can look forward to a future where everyone understands programming to some degree and can utilize it.