
이 강좌는 널널한 개발자님의 강의를 기반으로 작성한 글입니다.
우리가 프로그래밍을 작성하는 것은 실행을 위한 것이며 실행은 곧 연산하는 것과 같다. 연산은 CPU가 하며 CPU는 기계이다. 그리고 우리는 기계에 명령을 내려서 설정을 할 수가 있다. 그런 CPU가 인식할 수 있는 명령 코드 체계가 있는데 그 코드체계가 기계어라고 할 수 있다.

기계어는 우리 인간이 알아보기 힘든 코드이다.
기계어 코드를 또 다른 심볼 즉, 알아보기 쉬운 글자로 바꾸는 것이 어셈블리 코드이다.


High Level의 언어를 Low Level 언어로 번역하는 것을 컴파일이라고 한다. 그리고 컴파일을 해주는 S/W가 컴파일러다. 컴파일 과정은 High Level의 코드들을 한번에 전체 번역을 한다.
Native Code는 운영체제와 H/W에 의존적으로 운영체제가 변경될 시, 작동이 되질 않는다. 대표적으로 C언어가 있다.
Native Code와 반대로 플랫폼에 종속적이고 운영체제에 독립적인 코드를 의미하며 대표적으로 java가 있다.
우리는 CPU를 machine 즉, 기계라고 불렀다. 또한 S/W는 logical 또는 virtual이라고 불렀다. 즉, S/W로 CPU를 만들 수 있는데 이것을 Virtual Machine이라고 부른다.
즉, 컴파일러 방식 코드는 고급언어를 기계어로 번역 후 실행을 한다.