기계어
기계어란 컴퓨터가 알아들을 수 있는 유일한 언어를 말한다.
원리
현재 모든 종류의 컴퓨터는 어떤 신호가 켜지거나 꺼지는 이분법적 데이터만을 수용할 수 있다. 이것을 비트(bit)라고 하고 켜진 상태를 1(또는 Set), 꺼진 상태를 0(또는 Clear)로 미리 정한다. 그럼 이 비트들을 모아서 한꺼번에 Set/Clear를 하면 특정한 장치들을 제어할 수 있다.
초기의 컴퓨터들, 즉 계산기 개념을 직접적으로 갖고 있던 시절의 컴퓨터들은 비트에 대응되는 스위치를 직접 조작해서 장치 제어 및 계산을 해냈다. 그러다 폰 노이만이 일련의 비트를 모아 순차적으로 제어하는 '프로그램'을 기계 내부의 데이터 저장소에 내장하는 '폰 노이만 구조'를 발명해낸 이후, 컴퓨터들은 이 프로그램을 따라 제어를 받게 되었다. 이 프로그램을 구성하는 유일한 언어가 바로 기계어인 것이다. 그래서 기계어에는 단 두개의 알파벳: 0과1만이 있는 것이다.
기계어와 어셈블러
그러나 폰 노이만을 제외하면 아무도 프로그램을 쉽게 기계어를 써서 변화시킬 수 없었다. 그래서 사람들은 프로그램의 기계어에 1:1 대응되는 어셈블리어와 대응을 해주는 프로그램인 어셈블러라는 것을 만들었다. 그러자 기계어의 가독성이 높아졌다.
C같은 고수준 프로그래밍 언어들은 컴파일이라는 단계를 거칠 때 이 어셈블리어로 변환이 된다. 그럼 어셈블러가 기계어로 당신이 만든 프로그램을 컴퓨터가 읽을 수 있도록 번역해줄 것이다.
결론
당신이 폰 노이만 같은 천재가 아닌 이상 그냥 기계어와 어셈블러는 이 정도만 알고 넘어가도 된다.