한국어
PART 0 — AI Coding Agent와 Codex 이해
Course ID: 0-1
프로그래밍과 Software Development는 무엇인가
Lesson Summary
우리가 사용하는 Software에서 출발해 Program, Source Code, Programming Language와 Execution의 관계를 이해하고, Coding보다 넓은 Software Development의 기본 흐름을 배운다.
작성일:
검증일:
이번 Lesson에서 배우는 것
- Program과 Software가 어떤 관계인지 설명한다.
- Code와 Source Code, Programming Language가 필요한 이유를 이해한다.
- 작성한 Source Code가 실제 동작으로 이어지는 큰 흐름을 이해한다.
- Coding, Programming, Software Development의 초점 차이를 구분한다.
- AI Coding Agent의 결과를 판단하기 전에 이 개념이 필요한 이유를 이해한다.
우리는 매일 수많은 Software를 사용한다. Software는 컴퓨터나 스마트폰 같은 디지털 장치가 특정 목적의 일을 하도록 만드는 Program과 관련 요소를 아우르는 표현이다. 우리는 웹사이트에서 정보를 찾고, 스마트폰 앱으로 메시지를 보내고, 회사 업무 프로그램에 데이터를 입력하며, 게임 속 캐릭터를 움직인다. 화면에서 보이는 모습은 서로 다르지만, 이 모든 Software의 안쪽에서는 컴퓨터가 정해진 동작을 수행하고 있다.
그렇다면 컴퓨터는 우리가 원하는 일을 어떻게 알까? 사람이 작성한 Code가 어떤 과정을 거쳐 실제 동작이 될까? 그리고 Code를 작성하는 것과 Software를 개발하는 것은 같은 일일까?
이번 Lesson에서는 개발 작업을 지원하는 AI 도구인 AI Coding Agent를 사용하기 전에 알아야 할 가장 기본적인 관계를 살펴본다. AI Coding Agent의 구체적인 개념과 기능은 후속 Lesson에서 다룬다.
1. 우리가 사용하는 것은 Software다
Software는 컴퓨터, 스마트폰 또는 다른 디지털 장치가 특정 목적의 일을 하도록 만드는 프로그램과 관련 데이터, 설정 등의 묶음을 가리키는 넓은 표현이다.
예를 들어 메시지 앱은 글을 입력받고, 상대방에게 전송하고, 도착한 메시지를 화면에 보여 준다. 회사의 업무 프로그램은 사용자가 입력한 정보를 저장하고, 계산하고, 필요한 결과를 보여 준다. 게임은 사용자의 조작을 받아 캐릭터를 움직이고 규칙에 따라 점수와 상태를 바꾼다.
이러한 Software 안에는 컴퓨터가 수행해야 할 동작을 표현한 Program이 있다. 일상에서는 Program과 Software를 비슷한 뜻으로 사용하기도 하지만 언제나 완전히 같은 범위를 뜻하는 것은 아니다. Program은 실행할 명령과 논리에 초점을 두는 경우가 많고, Software는 그 Program을 포함해 사용자가 실제로 사용하는 더 넓은 제품이나 시스템을 가리킬 수 있다.
2. Program은 무엇인가?
Program은 컴퓨터가 어떤 일을 수행할 수 있도록 구성된 명령과 논리의 집합이다. 사람은 그 내용을 Code로 표현하며, 실제 실행 단계에서는 언어 구현과 실행 환경이 처리할 수 있는 형태로 사용된다.
예를 들어 간단한 계산기 Program이라면 다음과 같은 흐름이 필요할 수 있다.
- 사용자가 입력한 숫자를 받는다.
- 더하기, 빼기와 같은 선택을 확인한다.
- 선택한 계산을 수행한다.
- 결과를 화면에 보여 준다.
컴퓨터는 “적당히 계산해 줘”처럼 모호한 의도를 스스로 정확히 실행할 수 없다. 어떤 값을 받고, 어떤 규칙을 적용하고, 어떤 결과를 내보낼지 컴퓨터가 처리할 수 있는 형태로 표현해야 한다.
Program은 단순히 명령을 길게 나열한 문서만을 뜻하지 않는다. 입력에 따라 다른 동작을 선택하고, 데이터를 저장하거나 불러오며, 문제가 생겼을 때 어떻게 처리할지 정하는 논리도 포함할 수 있다.
3. Code와 Source Code는 무엇인가?
개발에서 Code는 Programming Language의 규칙에 따라 표현된 명령과 논리를 가리킨다. Code는 사람이 직접 작성할 수도 있고 도구가 생성할 수도 있다. 그중 개발자가 읽고 수정하거나 언어 구현에 입력으로 제공하는 형태를 흔히 Source Code라고 한다.
아주 짧은 Python 예시를 보면 다음과 같다.
print("Hello")
이 한 줄은 화면에 Hello라는 글자를 표시하라는 의도를 Python 문법으로 표현한다. 여기서 중요한 것은 문법을 외우는 것이 아니라, 사람이 원하는 동작을 Programming Language의 규칙에 맞춰 Source Code로 적는다는 점이다.
Source Code는 사람에게 비교적 읽기 쉬운 형태다. 개발자는 Source Code를 읽으며 Program이 무엇을 하도록 작성됐는지 이해하고, 잘못된 부분을 고치며, 새로운 동작을 추가한다.
4. Programming Language는 왜 필요한가?
컴퓨터의 Processor는 최종적으로 매우 낮은 수준의 명령을 처리한다. 하지만 사람이 그 형식만으로 큰 Software의 모든 동작을 직접 작성하고 관리하기는 매우 어렵다.
Programming Language는 사람이 문제와 해결 방법을 더 이해하기 쉬운 규칙으로 표현하도록 돕는다. Python, C#, JavaScript 같은 이름은 서로 다른 Programming Language의 예다. 각각 문법과 사용 환경이 다르지만, 이 Lesson에서는 언어를 비교하지 않는다.
Programming Language에는 사용할 수 있는 단어와 기호, 그리고 그것을 조합하는 규칙이 있다. 자연어에도 문법이 있듯이 Programming Language에도 Code를 해석할 수 있게 하는 문법이 있다. 개발자는 이 규칙을 사용해 다음과 같은 내용을 표현한다.
- 어떤 값을 입력받을지
- 어떤 계산이나 판단을 할지
- 어떤 순서로 동작할지
- 결과를 어디에 보여 주거나 저장할지
- 예상하지 못한 문제가 생기면 어떻게 처리할지
Programming Language는 사람의 생각을 그대로 이해하는 마법의 언어가 아니다. 사람이 해결하려는 문제를 더 정확한 명령과 논리로 바꾸어 표현할 수 있게 해 주는 도구다.
5. 작성한 Code는 어떻게 실행되는가?
Source Code는 사람이 읽고 수정하기 좋은 표현이지만, 컴퓨터가 그 텍스트를 보는 즉시 모든 의미를 그대로 실행하는 것은 아니다. 해당 Programming Language의 구현과 필요한 실행 환경·도구가 Source Code를 해석하거나 다른 형태로 변환하고 실제 실행을 지원한다.
입문 수준에서는 다음 관계로 이해할 수 있다.
Source Code
→ Programming Language의 구현과 필요한 Toolchain·Runtime
→ 컴퓨터에서 나타나는 실행 동작
여기서 Toolchain은 Code를 검사하거나 변환하고 실행 준비를 돕는 관련 도구와 처리 과정의 묶음을 뜻한다. 언어와 구현 환경에 따라 필요한 도구와 과정은 달라질 수 있다.
Interpreter는 입력된 명령이나 Script를 읽고 실행하는 방식의 구현을 설명할 때 자주 사용하는 용어다. Python 공식 문서에서도 Python Interpreter가 명령을 대화식으로 받거나 Script를 읽어 실행하는 사용 방식을 설명한다. 다만 이것만으로 모든 Programming Language의 전체 실행 과정을 설명할 수 있는 것은 아니다. [Source Reference: 0-1-SRC02]
Compiler는 Source Code를 다른 형태로 변환하는 도구를 설명할 때 자주 사용하는 용어다. 변환 결과는 기계가 직접 처리할 수 있는 Code일 수도 있고, 다른 실행 환경이 처리하는 중간 형태일 수도 있다. 실제 실행 과정에는 Compiler와 Runtime, 가상 실행 환경, Library 등 여러 요소가 함께 관여할 수 있다.
Runtime은 Program이 실제로 동작하는 동안 필요한 실행 환경이나 동작 지원 체계를 가리키는 표현이다. 정확한 구성은 언어와 구현 환경에 따라 달라진다.
따라서 “어떤 언어는 무조건 Interpreter이고 다른 언어는 무조건 Compiler다”라고 단순하게 나누면 실제 모습을 놓칠 수 있다. Programming Language와 그 언어를 구현하고 실행하는 방식은 구분해서 이해해야 한다.
6. 실행됐다고 끝난 것은 아니다
Program이 실행된다는 것은 작성한 Code가 실제 동작으로 이어졌다는 뜻이다. 그러나 실행된다고 해서 반드시 올바르게 동작한다는 뜻은 아니다.
예를 들어 계산기 Program이 열리더라도 덧셈 결과를 잘못 보여 줄 수 있다. 메시지 앱이 실행되더라도 특정 상황에서 전송에 실패할 수 있다. 이렇게 의도하거나 기대한 것과 다른 잘못된 동작이나 결함을 흔히 Bug라고 부른다.
Test는 Program이나 Software가 기대한 대로 동작하는지 확인하는 활동이다. 단순히 “실행되는가?”만 보는 것이 아니라, 올바른 입력과 잘못된 입력, 예상하기 어려운 상황에서도 요구한 결과를 내는지 확인할 수 있다.
Software가 사용되기 시작한 뒤에도 환경과 요구는 바뀐다. 발견된 Bug를 수정하는 일뿐 아니라 보안 문제를 해결하고, 달라진 사용 환경에 적응시키며, 새로운 요구에 맞춰 기능을 개선하는 활동을 Maintenance, 즉 유지보수라고 한다.
7. Coding, Programming, Software Development는 어떻게 다른가?
세 표현은 실제 대화와 실무에서 서로 같은 뜻처럼 사용되기도 한다. 다음 구분은 절대적인 포함 관계나 엄격한 사전 정의가 아니라, 각 표현이 주로 어디에 초점을 두는지 이해하기 위한 기준이다.
Coding
Coding은 Programming Language의 문법을 사용해 Code를 작성하는 행위에 초점을 둔다. 이미 정해진 동작을 Code로 옮기거나 기존 Code를 수정하는 일이 대표적이다.
Programming
Programming은 Code를 입력하는 행위보다 넓다. 해결할 문제를 이해하고, 컴퓨터가 처리할 수 있는 논리로 나누고, 그 논리를 Program으로 구현하고, 동작을 확인하며 고치는 활동까지 포함할 수 있다.
Software Development
Software Development는 실제로 사용할 Software를 만들고 운영하고 개선하는 전체 활동을 더 넓게 가리킨다. Code 작성은 그 안의 중요한 일부지만 전부는 아니다.
| 표현 | 주된 초점 | 간단한 예 |
|---|---|---|
| Coding | Code 작성과 수정 | 계산 결과를 표시하는 Code 작성 |
| Programming | 문제를 논리와 Program으로 구현 | 입력, 계산, 예외 상황을 정하고 동작 확인 |
| Software Development | Software의 전체 수명주기 | 요구 이해부터 설계, 구현, Test, 운영과 개선까지 관리 |
이 구분은 누가 더 중요하다는 의미가 아니다. 하나의 Software를 완성하려면 Code 작성 능력과 함께 문제 이해, 설계, 검증, 운영에 관한 판단이 필요하다는 뜻이다.
8. Software Development의 기본 흐름
Software Development에서는 보통 다음과 같은 활동이 서로 연결된다.
- 요구사항 이해
누가 무엇을 필요로 하는지, Software가 어떤 문제를 해결해야 하는지 확인한다. - 설계
필요한 기능과 데이터, 화면, 구성 요소가 어떻게 함께 동작할지 결정한다. - 구현
설계를 실제 Code와 설정으로 만든다. Coding은 주로 이 활동 안에서 이루어진다. - Test와 검증
Software가 요구사항에 맞게 동작하는지 확인하고 Bug를 찾고 수정한다. - 배포와 운영
사용자가 Software를 사용할 수 있도록 전달하고, 실제 환경에서 안정적으로 동작하는지 관리한다. - 유지보수와 개선
발견된 문제를 고치고, 변화한 환경과 새로운 요구에 맞춰 Software를 계속 개선한다.
이 목록은 이해를 위한 기본 지도이지, 모든 프로젝트가 반드시 한 방향으로 한 번씩만 통과하는 고정 절차가 아니다. Test 중에 요구사항의 문제가 발견되어 다시 설계할 수 있고, 작은 기능을 먼저 배포한 뒤 사용자의 반응을 보며 개선할 수도 있다. 여러 활동이 반복되거나 일부가 동시에 진행될 수도 있다.
Software의 Life Cycle을 다루는 ISO/IEC/IEEE 12207도 Software 관련 활동을 개발 한 단계에만 제한하지 않고 획득, 공급, 개발, 운영, 유지보수와 폐기까지 포함하는 수명주기 관점으로 구성한다. 또한 그 Process를 특정 하나의 Life Cycle Model에만 묶지 않는다. [Source Reference: 0-1-SRC03]
9. 왜 AI Coding Agent보다 이 개념을 먼저 배울까?
AI Coding Agent는 개발 작업을 지원하는 AI 도구로, Code를 생성하거나 수정하는 데 도움을 줄 수 있다. OpenAI는 Codex를 실제 Engineering 작업을 수행하도록 만들어진 Coding Agent로 소개한다. [Source Reference: 0-1-SRC01]
하지만 Agent가 Code를 만들었다는 사실만으로 올바른 Software가 완성되는 것은 아니다. 사용자는 최소한 다음을 판단할 수 있어야 한다.
- 지금 만들려는 Program의 목적은 무엇인가?
- 생성된 Code는 어떤 역할을 하는가?
- 이 Code가 실제 동작하려면 어떤 실행 과정이 필요한가?
- 결과가 요구사항과 일치하는가?
- Bug가 있는지 어떤 방식으로 확인할 것인가?
- 배포한 뒤 무엇을 유지하고 개선해야 하는가?
이 기본 개념을 알면 AI Coding Agent가 내놓은 결과를 단순히 복사하는 데서 멈추지 않고, 무엇을 요청하고 무엇을 확인해야 하는지 생각할 수 있다.
핵심 정리
- Software는 사용자가 목적을 달성하도록 돕는 Program과 관련 요소를 포함하는 넓은 개념이다.
- Program은 컴퓨터가 어떤 일을 수행할 수 있도록 구성된 명령과 논리의 집합이다.
- Source Code는 사람이 읽고 수정하거나 언어 구현에 입력으로 제공하는 Code이며, 사람이 직접 작성할 수도 있고 도구가 생성할 수도 있다.
- Programming Language는 사람이 문제 해결 절차를 컴퓨터가 처리할 수 있는 규칙으로 표현하도록 돕는다.
- Source Code는 언어 구현과 필요한 Toolchain·Runtime의 지원을 통해 실제 실행 동작으로 이어진다.
- Interpreter와 Compiler는 중요한 개념이지만 모든 언어의 실행 방식을 둘 중 하나로만 나누면 지나치게 단순해진다.
- Coding은 Code 작성에, Programming은 문제를 Program으로 만드는 활동에, Software Development는 요구사항부터 운영과 개선까지의 더 넓은 활동에 초점을 둔다.
- Software Development 활동은 반복되거나 병렬로 진행될 수 있으며 하나의 고정된 선형 절차만을 뜻하지 않는다.
- AI Coding Agent를 잘 활용하려면 생성된 Code의 역할과 실행 결과, 전체 개발 흐름을 사람이 판단할 수 있어야 한다.
Official Sources
Verified Date:
- OpenAI — Codex
https://openai.com/codex/
Source ID:0-1-SRC01 - Python Documentation — Using the Python Interpreter
https://docs.python.org/3/tutorial/interpreter.html
Source ID:0-1-SRC02 - ISO/IEC/IEEE 12207:2026 — Software life cycle processes
https://www.iso.org/standard/90219.html
Source ID:0-1-SRC03
Course Navigation
| 위치 | Course ID | Lesson |
|---|---|---|
| Current | 0-1 | 프로그래밍과 Software Development는 무엇인가 |
| Next | 0-2 | 생성형 AI에서 AI Coding Agent까지 |
English
PART 0 — Understanding AI Coding Agents and Codex
Course ID: 0-1
What Are Programming and Software Development?
Lesson Summary
Starting with the software we use, this lesson explains the relationship among programs, source code, programming languages, and execution, and introduces the basic flow of software development, which has a broader focus than coding.
Authoring Date:
Verification Date:
What You Will Learn in This Lesson
- Explain the relationship between a program and software.
- Understand what code and source code are and why programming languages are needed.
- Understand the overall path from written source code to actual behavior.
- Distinguish the main focus of coding, programming, and software development.
- Understand why these concepts are needed before evaluating the results of an AI coding agent.
We use many kinds of software every day. Software is a broad term that includes programs and related elements that enable a digital device, such as a computer or smartphone, to perform tasks for a particular purpose. We search for information on websites, send messages through smartphone apps, enter data into workplace applications, and move characters in games. Although these experiences look different on the screen, a computer is performing defined actions inside all of this software.
How does a computer know what we want it to do? How does code written by a person go through a process and become actual behavior? And is writing code the same as developing software?
This lesson examines the most basic relationships you need to understand before using an AI coding agent, an AI tool that supports development work. The specific concepts and capabilities of AI coding agents will be covered in a later lesson.
1. What We Use Is Software
Software is a broad term for a collection that can include programs, related data, settings, and other elements that enable a computer, smartphone, or another digital device to perform tasks for a particular purpose.
For example, a messaging app accepts text, sends it to another person, and displays received messages on the screen. A workplace application stores information entered by a user, performs calculations, and shows the required results. A game responds to a user's controls, moves characters, and changes scores and states according to its rules.
Inside such software is a program that expresses the actions a computer needs to perform. In everyday use, the words program and software are sometimes used in similar ways, but they do not always refer to exactly the same scope. A program often focuses on the instructions and logic to be executed, while software can refer to a broader product or system that a user actually uses, including that program.
2. What Is a Program?
A program is a set of instructions and logic organized so that a computer can perform a task. People express that content as code, and during actual execution it is used in a form that the language implementation and execution environment can process.
For example, a simple calculator program might need the following flow:
- Receive numbers entered by the user.
- Check the selected operation, such as addition or subtraction.
- Perform the selected calculation.
- Display the result on the screen.
A computer cannot accurately carry out a vague intention such as “calculate it somehow” by itself. What values to receive, what rules to apply, and what result to produce must be expressed in a form the computer can process.
A program is not simply a document containing a long list of instructions. It can also include logic that selects different actions depending on input, stores or retrieves data, and decides how to handle problems.
3. What Are Code and Source Code?
In development, code refers to instructions and logic expressed according to the rules of a programming language. Code can be written by a person or generated by a tool. The form that developers can read and modify, or that can be provided as input to a language implementation, is commonly called source code.
Here is a very short Python example:
print("Hello")
This line expresses the intention to display the word Hello on the screen using Python syntax. The important point is not to memorize the syntax. It is that a desired action is written as source code according to the rules of a programming language.
Source code is relatively readable by people. Developers read source code to understand what a program was written to do, correct problems, and add new behavior.
4. Why Do We Need Programming Languages?
A computer's processor ultimately handles very low-level instructions. However, it is extremely difficult for people to write and manage every behavior of large software directly using only that form.
Programming languages help people express problems and solutions with rules that are easier to understand. Python, C#, and JavaScript are examples of different programming languages. They have different syntax and usage environments, but this lesson does not compare the languages.
A programming language has words and symbols that can be used, along with rules for combining them. Just as natural languages have grammar, programming languages have syntax that makes code interpretable. Developers use these rules to express things such as:
- what values to receive as input
- what calculations or decisions to perform
- in what order actions should occur
- where to display or store results
- how to handle an unexpected problem
A programming language is not a magical language that understands a person's thoughts exactly as they are. It is a tool that helps a person turn a problem into more precise instructions and logic.
5. How Is Written Code Executed?
Source code is an expression designed to be read and modified by people, but a computer does not execute all of its meaning immediately just by seeing that text. An implementation of the relevant programming language, together with the required execution environment and tools, interprets the source code or transforms it into another form and supports its actual execution.
At an introductory level, you can understand the relationship like this:
Source Code
→ Programming Language Implementation and Required Toolchain·Runtime
→ Behavior Performed by the Computer
Here, a toolchain means a collection of related tools and processes that inspect or transform code and help prepare it for execution. The tools and processes required can vary by language and implementation environment.
Interpreter is a term commonly used to describe an implementation that reads and executes commands or scripts. The official Python documentation, for example, explains how the Python interpreter can receive commands interactively or read and execute a script. This example alone, however, does not explain the entire execution process of every programming language. [Source Reference: 0-1-SRC02]
Compiler is a term commonly used for a tool that transforms source code into another form. The result may be code that a machine can process directly, or it may be an intermediate form handled by another execution environment. In practice, several elements—including a compiler, a runtime, a virtual execution environment, and libraries—can participate in execution.
Runtime refers to the execution environment or supporting system needed while a program is actually running. Its exact components vary by language and implementation environment.
For this reason, dividing languages into simple categories such as “one language always uses an interpreter, while another always uses a compiler” can miss how they actually work. A programming language should be understood separately from the ways it is implemented and executed.
6. Execution Is Not the End
When a program executes, the written code has led to actual behavior. However, execution does not necessarily mean that the program works correctly.
For example, a calculator program might open but display the wrong result for addition. A messaging app might run but fail to send a message in a particular situation. An incorrect behavior or defect that differs from what was intended or expected is commonly called a bug.
Testing is the activity of checking whether a program or software behaves as expected. It can involve more than asking, “Does it run?” It can also check whether the required result is produced for valid input, invalid input, and difficult-to-predict situations.
Environments and requirements continue to change after software begins to be used. Maintenance includes not only fixing discovered bugs but also resolving security issues, adapting software to changed environments, and improving features to meet new requirements.
7. How Are Coding, Programming, and Software Development Different?
In everyday conversation and professional practice, these three terms are sometimes used as if they mean the same thing. The distinctions below are not an absolute hierarchy or strict dictionary definitions. They are a guide to understanding what each term mainly emphasizes.
Coding
Coding focuses on writing code using the syntax of a programming language. Typical examples include translating already defined behavior into code or modifying existing code.
Programming
Programming is broader than entering code. It can include understanding the problem to solve, dividing it into logic that a computer can process, implementing that logic as a program, checking its behavior, and correcting it.
Software Development
Software development is a broader term for the overall work of creating, operating, and improving software that people will actually use. Writing code is an important part of it, but not the whole activity.
| Term | Main Focus | Simple Example |
|---|---|---|
| Coding | Writing and modifying code | Writing code that displays a calculation result |
| Programming | Implementing a problem as logic and a program | Defining input, calculations, and exceptional situations, then checking behavior |
| Software Development | The full software life cycle | Managing work from understanding requirements through design, implementation, testing, operation, and improvement |
This distinction does not mean that one activity is more important than another. It means that completing software requires not only the ability to write code but also judgment about understanding problems, design, verification, and operation.
8. The Basic Flow of Software Development
In software development, activities such as the following are usually connected:
- Understand requirements
Identify who needs what and what problem the software must solve. - Design
Decide how the required features, data, screens, and components should work together. - Implement
Turn the design into actual code and configuration. Coding mainly takes place within this activity. - Test and verify
Check whether the software meets its requirements, find bugs, and correct them. - Deploy and operate
Deliver the software so that users can use it and manage its stable operation in the actual environment. - Maintain and improve
Correct discovered problems and continue improving the software for changed environments and new requirements.
This list is a basic map for understanding, not a fixed process that every project must follow once in a single direction. A problem with the requirements might be discovered during testing, leading the team back to design. A small feature might be deployed first and then improved in response to user feedback. Activities can be repeated, and some can take place at the same time.
ISO/IEC/IEEE 12207, which addresses the software life cycle, also takes a life-cycle perspective that is not limited to a single development activity. It covers acquisition, supply, development, operation, maintenance, and disposal, and it does not restrict these processes to one specific life-cycle model. [Source Reference: 0-1-SRC03]
9. Why Learn These Concepts Before Learning About AI Coding Agents?
An AI coding agent is an AI tool that supports development work and can help create or modify code. OpenAI describes Codex as a coding agent built to perform real engineering work. [Source Reference: 0-1-SRC01]
However, the fact that an agent has created code does not by itself mean that correct software is complete. At a minimum, users need to be able to judge the following:
- What is the purpose of the program being built?
- What role does the generated code play?
- What execution process is required for this code to produce actual behavior?
- Does the result meet the requirements?
- How will possible bugs be checked?
- What needs to be maintained and improved after deployment?
Understanding these basic concepts helps users move beyond simply copying the output of an AI coding agent and think about what to request and what to verify.
Key Takeaways
- Software is a broad concept that includes programs and related elements that help users accomplish a purpose.
- A program is a set of instructions and logic organized so that a computer can perform a task.
- Source code is code that people can read and modify or that can be provided as input to a language implementation; it can be written by a person or generated by a tool.
- A programming language helps people express a problem-solving procedure using rules that a computer can process.
- Source code leads to actual behavior with the support of a language implementation and the required toolchain and runtime.
- Interpreters and compilers are important concepts, but dividing every language's execution model into only one of the two is an oversimplification.
- Coding focuses on writing code, programming focuses on turning a problem into a program, and software development focuses on broader activities from requirements through operation and improvement.
- Software development activities can be iterative or parallel and do not refer to only one fixed linear process.
- Using an AI coding agent well requires people to evaluate the role of generated code, its execution results, and the overall development flow.
Official Sources
Verified Date:
- OpenAI — Codex
https://openai.com/codex/
Source ID:0-1-SRC01 - Python Documentation — Using the Python Interpreter
https://docs.python.org/3/tutorial/interpreter.html
Source ID:0-1-SRC02 - ISO/IEC/IEEE 12207:2026 — Software life cycle processes
https://www.iso.org/standard/90219.html
Source ID:0-1-SRC03
Course Navigation
| Position | Course ID | Lesson |
|---|---|---|
| Current | 0-1 | What Are Programming and Software Development? |
| Next | 0-2 | From Generative AI to AI Coding Agents |
Русский
PART 0 — Знакомство с ИИ-агентами для программирования и Codex
Course ID: 0-1
Что такое программирование и разработка программного обеспечения?
Краткое содержание урока
Начиная с программного обеспечения, которым мы пользуемся, мы разберём связь между программой, исходным кодом, языком программирования и выполнением, а также познакомимся с основным процессом разработки программного обеспечения, который шире простого написания кода.
Дата создания:
Дата проверки:
Что вы узнаете в этом уроке
- Сможете объяснить связь между программой и программным обеспечением.
- Поймёте, что такое код и исходный код и зачем нужны языки программирования.
- Поймёте общий путь от написанного исходного кода до реального действия.
- Научитесь различать основные акценты Coding, Programming и Software Development.
- Поймёте, почему эти понятия нужны до того, как оценивать результаты работы AI Coding Agent.
Каждый день мы пользуемся множеством видов программного обеспечения. Программное обеспечение (Software) — это широкое понятие, которое охватывает программы и связанные с ними элементы, позволяющие цифровому устройству, например компьютеру или смартфону, выполнять задачи для определённой цели. Мы ищем информацию на сайтах, отправляем сообщения через приложения на смартфоне, вводим данные в рабочие программы и управляем персонажами в играх. На экране всё это выглядит по-разному, но внутри каждого такого программного обеспечения компьютер выполняет заданные действия.
Как компьютер узнаёт, что именно мы хотим от него? Через какой процесс написанный человеком код превращается в реальное действие? И одно ли и то же — писать код и разрабатывать программное обеспечение?
В этом уроке мы рассмотрим самые основные связи, которые нужно понимать до использования AI Coding Agent — инструмента на основе искусственного интеллекта, помогающего в разработке. Конкретные понятия и возможности AI Coding Agent будут рассмотрены в последующем уроке.
1. То, чем мы пользуемся, — это программное обеспечение
Программное обеспечение — это широкое понятие, обозначающее совокупность программ, связанных данных, настроек и других элементов, которые позволяют компьютеру, смартфону или иному цифровому устройству выполнять задачи для определённой цели.
Например, приложение для обмена сообщениями принимает текст, отправляет его другому человеку и показывает полученные сообщения на экране. Рабочая программа сохраняет введённую пользователем информацию, выполняет вычисления и показывает необходимые результаты. Игра реагирует на действия пользователя, перемещает персонажа и изменяет очки и состояния в соответствии со своими правилами.
Внутри такого программного обеспечения находится программа (Program), которая выражает действия, необходимые компьютеру. В повседневной речи слова «программа» и «программное обеспечение» иногда используются как близкие по смыслу, но они не всегда обозначают один и тот же объём понятия. Программа чаще акцентирует внимание на выполняемых инструкциях и логике, тогда как программное обеспечение может обозначать более широкий продукт или систему, которыми реально пользуется пользователь и в которые входит эта программа.
2. Что такое программа?
Программа — это набор инструкций и логики, организованных так, чтобы компьютер мог выполнить определённую задачу. Человек выражает это содержание в виде кода, а на этапе выполнения оно используется в форме, которую могут обработать реализация языка и среда выполнения.
Например, простой калькулятор может работать по следующей схеме:
- Получить числа, введённые пользователем.
- Проверить выбранное действие, например сложение или вычитание.
- Выполнить выбранное вычисление.
- Показать результат на экране.
Компьютер не может сам точно выполнить такое неопределённое намерение, как «посчитай как-нибудь». Нужно выразить в доступной для обработки форме, какие значения получить, какие правила применить и какой результат вывести.
Программа — это не просто документ с длинным перечнем инструкций. Она также может включать логику, которая выбирает разные действия в зависимости от входных данных, сохраняет или загружает данные и определяет, как поступать при возникновении проблемы.
3. Что такое код и исходный код?
В разработке код (Code) — это инструкции и логика, выраженные по правилам языка программирования. Код может быть написан человеком или создан инструментом. Форму, которую разработчик может читать и изменять либо передавать на вход реализации языка, обычно называют исходным кодом (Source Code).
Рассмотрим очень короткий пример на Python:
print("Hello")
Эта строка выражает намерение вывести на экран слово Hello с помощью синтаксиса Python. Здесь важно не запомнить синтаксис, а понять, что желаемое действие записывается в виде исходного кода по правилам языка программирования.
Исходный код сравнительно удобен для чтения человеком. Разработчик читает исходный код, чтобы понять, какие действия должна выполнять программа, исправить ошибки и добавить новое поведение.
4. Зачем нужен язык программирования?
Процессор компьютера в конечном счёте обрабатывает инструкции очень низкого уровня. Однако человеку крайне сложно напрямую записывать и поддерживать все действия большого программного обеспечения, используя только такую форму.
Язык программирования помогает человеку выражать задачи и способы их решения с помощью более понятных правил. Python, C# и JavaScript — примеры разных языков программирования. У каждого из них свой синтаксис и среда применения, но в этом уроке мы не сравниваем языки.
В языке программирования есть допустимые слова и символы, а также правила их сочетания. Как в естественном языке существует грамматика, так и в языке программирования есть синтаксис, позволяющий интерпретировать код. Разработчик использует эти правила, чтобы выразить, например:
- какие значения получить на входе;
- какие вычисления или решения выполнить;
- в каком порядке выполнять действия;
- где показать или сохранить результат;
- как обработать неожиданную проблему.
Язык программирования — не волшебный язык, который понимает мысли человека в неизменном виде. Это инструмент, помогающий преобразовать решаемую задачу в более точные инструкции и логику.
5. Как выполняется написанный код?
Исходный код удобен для чтения и изменения человеком, но компьютер не выполняет весь его смысл сразу же, как только видит этот текст. Реализация соответствующего языка программирования вместе с необходимой средой выполнения и инструментами интерпретирует исходный код или преобразует его в другую форму и обеспечивает фактическое выполнение.
На вводном уровне эту связь можно представить так:
Source Code
→ Реализация Programming Language и необходимые Toolchain·Runtime
→ Выполняемое компьютером действие
Toolchain — это совокупность связанных инструментов и процессов, которые проверяют или преобразуют код и помогают подготовить его к выполнению. Необходимые инструменты и процессы могут различаться в зависимости от языка и среды его реализации.
Interpreter — термин, который часто используется при описании реализации, читающей и выполняющей введённые команды или скрипты. Например, официальная документация Python объясняет, как Python Interpreter может принимать команды в интерактивном режиме или читать и выполнять скрипт. Однако одного этого примера недостаточно, чтобы объяснить весь процесс выполнения каждого языка программирования. [Source Reference: 0-1-SRC02]
Compiler — термин, часто используемый для обозначения инструмента, преобразующего исходный код в другую форму. Результатом может быть код, который машина обрабатывает напрямую, или промежуточная форма, обрабатываемая другой средой выполнения. В реальном процессе выполнения могут совместно участвовать Compiler, Runtime, виртуальная среда выполнения, библиотеки и другие элементы.
Runtime — это среда выполнения или система поддержки, необходимая во время фактической работы программы. Её точный состав зависит от языка и среды реализации.
Поэтому простое деление на «язык, который всегда использует Interpreter» и «язык, который всегда использует Compiler» может не отражать реальную картину. Язык программирования следует отличать от способов его реализации и выполнения.
6. Выполнение — ещё не конец
Выполнение программы означает, что написанный код привёл к реальному действию. Однако сам факт выполнения не означает, что программа обязательно работает правильно.
Например, программа-калькулятор может открыться, но показывать неправильный результат сложения. Приложение для сообщений может запуститься, но в определённой ситуации не отправить сообщение. Такое неправильное поведение или дефект, отличающийся от задуманного или ожидаемого, обычно называют ошибкой (Bug).
Тестирование (Test) — это деятельность по проверке того, работает ли программа или программное обеспечение так, как ожидается. Проверка не ограничивается вопросом «запускается ли оно?»: можно также проверить, выдаёт ли оно требуемый результат при правильных и неправильных входных данных, а также в трудно предсказуемых ситуациях.
Среда и требования продолжают меняться и после того, как программное обеспечение начали использовать. Сопровождение (Maintenance) включает не только исправление обнаруженных ошибок, но и устранение проблем безопасности, адаптацию к изменившейся среде и улучшение функций в соответствии с новыми требованиями.
7. Чем отличаются Coding, Programming и Software Development?
В повседневной речи и профессиональной практике эти три выражения иногда используются как имеющие одинаковый смысл. Приведённое ниже различие — не абсолютная иерархия и не строгие словарные определения, а ориентир, помогающий понять, на чём в основном сосредоточено каждое выражение.
Coding
Coding сосредоточен на написании кода с использованием синтаксиса языка программирования. Типичные примеры — перенос уже определённого поведения в код или изменение существующего кода.
Programming
Programming шире самого ввода кода. Он может включать понимание решаемой задачи, разделение её на логику, которую способен обработать компьютер, реализацию этой логики в виде программы, проверку поведения и исправление проблем.
Software Development
Software Development — более широкое обозначение всей деятельности по созданию, эксплуатации и улучшению программного обеспечения, которым будут реально пользоваться. Написание кода — важная часть этой деятельности, но не вся деятельность целиком.
| Выражение | Основной акцент | Простой пример |
|---|---|---|
| Coding | Написание и изменение кода | Написание кода, показывающего результат вычисления |
| Programming | Реализация задачи в виде логики и программы | Определение ввода, вычислений и исключительных ситуаций с последующей проверкой поведения |
| Software Development | Весь жизненный цикл программного обеспечения | Управление работой от понимания требований до проектирования, реализации, тестирования, эксплуатации и улучшения |
Это различие не означает, что одна деятельность важнее другой. Оно означает, что для завершения программного обеспечения нужны не только навыки написания кода, но и суждения, связанные с пониманием задачи, проектированием, проверкой и эксплуатацией.
8. Основной процесс разработки программного обеспечения
В разработке программного обеспечения обычно связаны следующие виды деятельности:
- Понимание требований
Определить, кому и что нужно, а также какую задачу должно решать программное обеспечение. - Проектирование
Решить, как необходимые функции, данные, экраны и компоненты будут работать вместе. - Реализация
Превратить проект в реальный код и настройки. Coding в основном происходит в рамках этой деятельности. - Тестирование и проверка
Проверить, соответствует ли программное обеспечение требованиям, найти ошибки и исправить их. - Развёртывание и эксплуатация
Предоставить программное обеспечение пользователям и управлять его стабильной работой в реальной среде. - Сопровождение и улучшение
Исправлять обнаруженные проблемы и продолжать улучшать программное обеспечение в соответствии с изменившейся средой и новыми требованиями.
Этот список — базовая карта для понимания, а не фиксированная процедура, которую каждый проект обязан пройти один раз и только в одном направлении. Во время тестирования может обнаружиться проблема в требованиях, из-за чего придётся вернуться к проектированию. Можно сначала развернуть небольшую функцию, а затем улучшать её с учётом реакции пользователей. Некоторые действия могут повторяться или выполняться одновременно.
ISO/IEC/IEEE 12207, посвящённый жизненному циклу программного обеспечения, также рассматривает связанные с программным обеспечением действия с точки зрения всего жизненного цикла, не ограничивая их только одним этапом разработки. Стандарт охватывает приобретение, поставку, разработку, эксплуатацию, сопровождение и вывод из эксплуатации и не связывает эти процессы только с одной конкретной моделью жизненного цикла. [Source Reference: 0-1-SRC03]
9. Почему эти понятия нужно изучить до знакомства с AI Coding Agent?
AI Coding Agent — это инструмент на основе искусственного интеллекта, который помогает в разработке и может содействовать созданию или изменению кода. OpenAI описывает Codex как Coding Agent, созданного для выполнения реальных инженерных задач. [Source Reference: 0-1-SRC01]
Однако сам факт того, что Agent создал код, не означает, что правильное программное обеспечение уже завершено. Пользователь как минимум должен уметь оценить следующее:
- Какова цель создаваемой программы?
- Какую роль выполняет созданный код?
- Какой процесс выполнения нужен, чтобы этот код привёл к реальному действию?
- Соответствует ли результат требованиям?
- Каким способом проверить наличие ошибок?
- Что нужно сопровождать и улучшать после развёртывания?
Понимание этих основных понятий позволяет не останавливаться на простом копировании результата AI Coding Agent, а задумываться о том, что следует запросить и что необходимо проверить.
Ключевые выводы
- Программное обеспечение — широкое понятие, включающее программы и связанные элементы, которые помогают пользователю достичь своей цели.
- Программа — это набор инструкций и логики, организованных так, чтобы компьютер мог выполнить задачу.
- Исходный код — это код, который человек может читать и изменять или который можно передать на вход реализации языка; его может написать человек или создать инструмент.
- Язык программирования помогает человеку выразить процесс решения задачи с помощью правил, которые может обработать компьютер.
- Исходный код приводит к реальному действию при поддержке реализации языка и необходимых Toolchain и Runtime.
- Interpreter и Compiler — важные понятия, но деление способов выполнения всех языков только на один из этих двух вариантов является чрезмерным упрощением.
- Coding сосредоточен на написании кода, Programming — на превращении задачи в программу, а Software Development — на более широком круге действий от требований до эксплуатации и улучшения.
- Действия по разработке программного обеспечения могут повторяться или выполняться параллельно и не означают только один фиксированный линейный процесс.
- Чтобы эффективно использовать AI Coding Agent, человек должен уметь оценить роль созданного кода, результат его выполнения и общий процесс разработки.
Official Sources
Verified Date:
- OpenAI — Codex
https://openai.com/codex/
Source ID:0-1-SRC01 - Python Documentation — Using the Python Interpreter
https://docs.python.org/3/tutorial/interpreter.html
Source ID:0-1-SRC02 - ISO/IEC/IEEE 12207:2026 — Software life cycle processes
https://www.iso.org/standard/90219.html
Source ID:0-1-SRC03
Навигация по курсу
| Позиция | Course ID | Урок |
|---|---|---|
| Current | 0-1 | Что такое программирование и разработка программного обеспечения? |
| Next | 0-2 | От генеративного ИИ к AI Coding Agent |
'AI > Codex' 카테고리의 다른 글
| Codex and Claude Code: Similarities and Differences (0) | 2026.09.09 |
|---|---|
| What Does OpenAI Codex Do? (0) | 2026.09.07 |
| From Generative AI to AI Coding Agents (0) | 2026.09.06 |