티스토리 뷰
목차

안녕하세요! [1편]에서는 진공관이 오늘날의 손톱만 한 반도체 칩이 되기까지의 하드웨어 발전사를 살펴보았습니다.
그렇다면 아무리 뛰어난 반도체 장비가 있어도, 인간은 도대체 어떻게 저 단단한 실리콘 칩에게 명령을 내리는 걸까요? 이번 2편에서는 컴퓨터 언어와 소프트웨어의 진화 과정을 쉽게 풀어드립니다!
1. 0과 1의 비극: 기계어와 어셈블리어
컴퓨터 내부에는 전기가 "통한다(1)"와 "안 통한다(0)"라는 단 두 가지 상태만 존재합니다.
초창기 프로그래머들은 컴퓨터에 명령을 내리기 위해 01001100 11010010 같은 기계어를 일일이 구멍 뚫린 카드로 작성해야 했습니다. 실수 하나만 나면 전체를 새로 찍어야 하는 끔찍한 작업이었죠.
이후 01001100 대신 ADD(더하라) 같은 기호로 1:1 매칭한 '어셈블리어'가 만들어졌지만, 여전히 사람이 이해하기에는 너무나 고통스러웠습니다.
2. 구원자 그레이스 호퍼와 '컴파일러'의 탄생
1952년, 미국 해군의 그레이스 호퍼(Grace Hopper) 박사는 역사적인 아이디어를 냅니다.
"사람이 영어나 수학 기호로 코드를 작성하면, 그걸 컴퓨터가 알아서 0과 1로 번역해 주는 프로그램을 만들면 되지 않을까?"
당시 사람들은 "기계가 어떻게 사람 언어를 이해하냐"며 비웃었지만, 그녀는 최초의 번역 프로그램인 '컴파일러(Compiler)'를 만드는 데 성공합니다. 이 컴파일러의 등장 덕분에 비로소 사람이 이해할 수 있는 '고수준 프로그래밍 언어'의 시대가 열리게 되었습니다.
3. 시대를 뒤흔든 주요 프로그래밍 언어의 족보
컴파일러가 발명된 이후, 시대적 요구에 맞춰 수많은 언어들이 등장했습니다.
1세대: C 언어 (1972) — 모든 현대 언어의 뿌리
- 특징: 메모리를 직접 제어(포인터)할 수 있어 속도가 압도적으로 빠르고, 하드웨어 제어가 자유로움.
- 영향: 현대의 거의 모든 운영체제(Windows, Linux)와 다른 언어들의 기틀이 됨.
2세대: C++ & Java (1980~1990년대) — 객체지향과 가상머신
- C++: C 언어의 빠른 속도에 '객체지향(부품화)' 개념을 얹어 대규모 소프트웨어와 3D 게임 개발 시대를 열음.
- Java: "한 번 작성하면 어디서나 실행된다(JVM)"라는 슬로건으로, 운영체제가 달라져도 똑같이 작동하는 웹 서버의 표준이 됨.
3세대: Python & JavaScript — 극상의 생산성과 쉬운 문법
- Python: "삶은 짧으니 파이썬이 필요하다." 사람이 말하는 언어와 가장 유사한 문법을 가져, 현재 AI / 빅데이터 분야의 절대 강자로 등극.
- JavaScript: 단순 웹 브라우저용 스크립트로 시작했으나, 현재는 프론트엔드와 백엔드를 아우르는 필수 언어가 됨.
4. 최근 주목받는 차세대 언어들 (Rust, Go)
최근에는 하드웨어가 복잡해지면서(다중 코어 CPU, 클라우드 환경 등) 기존 언어들의 한계를 극복하기 위한 차세대 언어들이 대세로 떠오르고 있습니다.
- Rust (러스트): C++급의 최고 속도를 내면서도, 메모리 버그를 100% 가까이 사전 차단하는 완벽한 안전성의 언어.
- Go (골랭): 구글이 만든 언어로, 수만 개의 작업을 동시에 처리하는 클라우드/서버 시스템에 최적화된 언어.
📝 2편 요약 박스
- 컴퓨터는 오직 0과 1(이진법)의 전기 신호만 이해할 수 있다.
- 컴파일러의 발명으로 인간의 언어를 기계어로 자동 번역할 수 있게 되었다.
- C언어에서 시작된 프로그래밍 언어는 개발의 편의성, 메모리 안전성, 동시 처리 능력을 극대화하는 방향으로 발전하고 있다.
오늘 소개해 드린 하드웨어와 소프트웨어의 역사를 알고 나면, 지금 우리가 마우스 클릭 한번으로 인공지능을 쓰고 게임을 즐기는 모든 순간이 수많은 과학자들의 위대한 유산이라는 것을 느끼게 됩니다. 글이 도움이 되셨다면 공감과 구독 부탁드립니다!