2026년 02월 23일

💻 프로그래밍이란 무엇인가?

Java Spring Boot
Cover Image

💻 프로그래밍이란 무엇인가?

— 코드를 넘어 본질을 이해하다

핵심 요약: 프로그래밍은 단순히 코드를 타이핑하는 일이 아니다.
현실의 문제를 논리로 분해하고, 컴퓨터가 이해할 수 있는 언어로 번역하는 소통과 사고의 과정이다.


1️⃣ 프로그래밍의 정의

프로그래밍(Programming) 이란 컴퓨터에게 특정 작업을 수행하도록 논리적인 명령어의 집합(프로그램)을 설계하고 작성하는 과정이다.

인간의 아이디어
      │
      ▼
 논리적 사고로 분해
      │
      ▼
 프로그래밍 언어로 표현
      │
      ▼
 컴파일러/인터프리터가 번역
      │
      ▼
 0과 1(기계어)로 변환 → 컴퓨터 실행

2️⃣ 프로그래밍의 3단계

코드를 작성하는 것은 프로그래밍의 일부일 뿐이다.

단계이름하는 일
1설계 (Thinking)문제를 정의하고 해결 순서(알고리즘)를 논리적으로 구성
2구현 (Coding)설계한 알고리즘을 프로그래밍 언어 문법으로 작성
3실행 (Execution)코드를 기계어로 변환해 하드웨어에서 동작시킴

💡 현업에서 많은 시간이 걸리는 것은 1단계 설계다.
좋은 설계 없이 빠르게 작성한 코드는 기술 부채(Technical Debt)가 된다.


3️⃣ 프로그래밍 언어 — 인간과 컴퓨터의 통역사

컴퓨터는 하드웨어 수준에서 0과 1(비트) 만 이해한다.
인간이 0과 1로 직접 복잡한 프로그램을 짜는 것은 사실상 불가능하다.
그래서 프로그래밍 언어라는 중간 다리가 필요하다.

언어의 수준별 분류

구분종류특징
저급 언어기계어, 어셈블리어하드웨어에 가까움, 실행 빠름, 작성 어려움
고급 언어Java, Python, C++인간 언어에 가까움, 작성 쉬움, 번역 과정 필요

번역 방식: 컴파일러 vs 인터프리터

구분컴파일러 (Compiler)인터프리터 (Interpreter)
번역 시점실행 전 전체 번역실행 중 한 줄씩 번역
실행 속도빠름상대적으로 느림
대표 언어Java (JVM 바이트코드), C, C++Python, JavaScript

💡 Java는 두 단계를 거친다:
소스코드(.java)javac(컴파일러)바이트코드(.class)JVM(인터프리터/JIT) → 기계어 실행


4️⃣ 프로그래밍 = 추상화하는 능력

문법을 외우는 것은 프로그래밍의 시작일 뿐이다.
진정한 프로그래밍 실력은 현실의 복잡한 문제를 어떻게 논리로 분해하느냐에 달려 있다.

현실 문제: "쇼핑몰에서 재고가 없으면 주문을 막아야 한다"
      │
      ▼ 추상화
if (stock <= 0) {
    throw new OutOfStockException("재고 부족");
}

프로그래밍의 핵심 사고 능력

능력의미예시
추상화복잡한 현실을 단순하게 모델링현실의 "사람"을 Person 클래스로 표현
분해큰 문제를 작은 단위로 쪼갬주문 기능을 검증 → 결제 → 재고차감으로 분리
알고리즘문제를 해결하는 최적의 절차정렬, 탐색, 최단 경로 등
패턴 인식반복되는 구조를 발견하고 재사용디자인 패턴, 공통 모듈화

5️⃣ 왜 메모리와 컴퓨터 구조를 배우는가?

메모리 계층 구조, 가상 메모리, 캐시, 레지스터 같은 지식들은
결국 하나의 본질적인 질문에 답하기 위한 기초다.

"어떻게 하면 더 빠르고, 안정적이며, 유지보수하기 쉬운 프로그램을 만들 것인가?"

메모리 구조 이해
    → Heap/Stack 올바른 사용
    → 메모리 누수(Memory Leak) 방지
    → GC 튜닝으로 성능 최적화

캐시 원리 이해
    → 캐시 친화적 데이터 구조 선택
    → 불필요한 RAM 접근 최소화
    → 대용량 처리 성능 향상

가상 메모리 이해
    → JVM 메모리 옵션(-Xmx) 올바른 설정
    → Swap 발생 방지
    → 안정적인 서비스 운영

6️⃣ 핵심 정리

프로그래밍 = 설계(Thinking) + 구현(Coding) + 실행(Execution)
           = 문제를 논리로 분해하고 컴퓨터에게 전달하는 소통
개념한 줄 요약
프로그래밍문제를 논리로 분해해 컴퓨터가 실행할 명령어로 만드는 과정
프로그래밍 언어인간과 컴퓨터 사이의 통역사
컴파일러소스코드 전체를 기계어로 번역 (Java, C)
인터프리터소스코드를 한 줄씩 실행 (Python, JS)
핵심 역량문법 암기가 아닌, 문제를 추상화하고 논리로 분해하는 사고력
← 목록으로 돌아가기