들어가며
자바(Java)는 대표적인 고급 프로그래밍 언어이자 객체지향 언어입니다.
하지만 자바를 제대로 이해하기 위해서는 먼저 프로그래밍 언어란 무엇인가? 라는 본질적인 질문부터 짚고 넘어가야 합니다.
이번 글에서는 프로그래밍 언어의 근본 개념부터, 고급어와 저급어의 차이 그리고 CPU와 비트 연산의 관계까지 차근차근 살펴보겠습니다.
프로그래밍 언어란 무엇인가
컴퓨터는 사람의 말을 이해하지 못합니다.
우리가 “계산해”, “출력해”라고 말해도 컴퓨터는 오직 0과 1의 신호로만 이해합니다.
따라서 프로그래밍 언어는 사람이 이해할 수 있는 문장(고급어)을 기계가 이해할 수 있는 명령(저급어)로 변환하는 매개체 역할을 합니다.
이 변환을 수행하는 도구가 바로 컴파일러(Compiler) 또는 인터프리터(Interpreter)입니다.
고급어와 저급어
급어(Low Level Language)라는 표현이 다소 부정적으로 들릴 수 있지만 이는 단순히 하드웨어에 가까운 수준의 언어라는 의미입니다.
저급어의 이해
CPU는 수많은 트랜지스터와 논리 게이트(AND, OR, NOT 등)로 이루어져 있습니다.
이들은 전기 신호(전압이 흐르면 1, 흐르지 않으면 0)를 통해 동작하죠.
즉 CPU는 전기 신호의 패턴을 읽고 계산합니다.
이 0과 1의 조합이 바로 기계어(Machine Code)이며, CPU가 직접 이해하는 유일한 언어입니다.
비트 연산과 논리 게이트
AND 게이트 예시
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
이 간단한 게이트들을 조합하면 가산기(Adder)를 만들 수 있습니다.
가산기는 두 개의 비트를 더하는 회로이고, 이를 확장하면 사칙연산(+, -, ×, ÷)까지 구현할 수 있게 됩니다.
즉 우리가 사용하는 컴퓨터의 “계산 기능”은 이 단순한 논리 게이트들의 조합으로 만들어진 것입니다.
기계어 코드 예시
기계어는 보통 2진수로 구성되지만, 사람이 보기 불편하기 때문에 16진수(0x) 형태로 표기하기도 합니다.

예를 들어
이런 형태의 데이터가 CPU의 레지스터나 메모리 주소로 전달됩니다.
이걸 사람이 읽기 쉽게 만든 것이 바로 어셈블리어(Assembly)입니다.
자바의 위치 – 고급어와 저급어의 중간
자바는 사람이 읽기 쉬운 고급어 형태로 작성되지만실행 과정은 다음과 같습니다.
- Java Source Code (.java)
→ 사람이 작성한 코드 - Bytecode (.class)
→ javac 컴파일러가 변환한 중간 코드 - JVM (Java Virtual Machine)
→ 이 바이트코드를 해석하고 실제 CPU의 기계어로 변환 및 실행
즉, 자바는 “한 번 더 번역을 거치는 언어”입니다.
C나 C++은 직접 기계어로 컴파일되지만 자바는 JVM이라는 가상머신을 통해 실행되기 때문에 **이식성(Write Once, Run Anywhere)**은 높지만 실행 속도는 다소 느립니다.
자바의 장점과 한계
장점
- 운영체제에 관계없이 실행 가능 (Windows, macOS, Linux 등)
- 강력한 객체지향 구조 (재사용성, 유지보수성 우수)
- 풍부한 라이브러리와 커뮤니티 지원
단점
- 실제 CPU가 바로 실행하지 않기 때문에 성능 손실
- JVM이 제공하지 않는 기능은 직접 접근 불가
- 메모리 관리가 자동화되어 있어 세밀한 제어가 어렵다
마무리하며
프로그래밍 언어를 이해한다는 것은 단순히 문법을 배우는 것이 아니라
기계가 어떻게 사고하는지를 이해하는 과정입니다.
자바는 하드웨어와 인간 사이의 언어적 다리를 만들어주는 훌륭한 도구입니다.
하지만 그 기초에는 항상 0과 1, 그리고 수많은 논리 게이트가 존재한다는 사실을 기억해 두면 좋습니다.
'자바' 카테고리의 다른 글
| Java Class 하위에 변수를 몇개까지 선언할 수 있을까? (0) | 2025.11.11 |
|---|---|
| [JVM 완전정복 #1] JVM 구성요소 총정리: 가상 머신이 자바 코드를 실행하는 비밀 (0) | 2025.11.11 |
| 객체지향 프로그래밍(Object-Oriented Programming) (1) | 2025.10.28 |
| 프로그래밍이란 무엇일까? (0) | 2025.10.23 |
| 자바 메모리 구조(기초) — Stack / Heap / Method Area (2) | 2025.09.22 |