우리는 어떻게 컴퓨터에게 명령을 내리는가.

2020. 9. 1. 22:39데일리/오늘

@machine language

흔히 기계어라고 불리우는 이 언어는 우리가 아는 binary number를 이용한다.

(1010111011...) 이렇게 두가지 숫자 (1과 0)만을 이용하는 이유는 전기적 신호와 관계가 있다.

신호에는 신호를 주는것 on과 off 이 둘이 가장 명확하고, 이외에는 적은신호, 강한신호 등등이 있을 수 있다.

하지만 전기적으로 작은신호와 강한신호는 결국 얼만큼 작고 얼만큼 큰가? 라는 불명확성을 만들어

컴퓨터의 오차를 만들어낸다. 따라서 오차를 가장 줄이는 방법인 이진수가 컴퓨터 언어로써 사용되는것이라 생각할 수 있다.

 

따라서, 삼진수나 더 큰 수를 이용할수록 연산은 빨라지나, 오차가 커질것이라고 생각 할 수 있다.

 

@컴퓨터는 machine language밖에 알아듣지 못한다.

사람과 컴퓨터가 소통하는것에 있어서 먼저 컴퓨터입장도 들어볼 필요가 있다.

컴퓨터는 그 어떤 언어도 알아들을 수 없다. 컴퓨터야 물좀떠줘라고 말해도 절대 못알아 듣고,

"Hey computer, give me some water" 는 물론이다. 컴퓨터는 오직 machine lanuguage밖에 알아듣지 못한다.

따라서 Hey computer, give me some water를 machine language로 변환해줄 친구가 필요하다.

(Hey computer,give me some water -> 1010110101011...(물좀떠다줘))

이러한 일을 컴파일러가 수행한다.

 

@컴파일러

컴파일러(compiler), 즉 compile해주는것이다. compile의 뜻은 엮다. 라는 의미이다.

따라서 엮어주는것이다.

무엇을 엮을까? 위에 말했듯이 사람이 사용하는 언어와 기계어를 엮어준다.

따라서 다음과 같은 관계를 지닌다.

Hey computer, give me some water -> compiler -> 1010111010111..

이게 전부이다.

 

@Hey computer, give me some water

세상이 그리 쉽지만은 않다.

우리가 hey computer, give me some water라고 작성하는것 또한 컴퓨터에서 작성해야한다.

이러한 일을 대신 수행하는것을 editor라고 한다.

어려운가? editor의 예시는 바로 메모장이다. 메모장에다가 hey computer,give me some water라고 치는것이

바로 당신이 editor를 사용한것이다.

 

@그렇다면 파이썬,자바,c++ 등등은 뭐야?

이 들은 "프로그래밍 언어"이다.

python문법이나 자바문법 등등 모두 메모장에다가 적을 수 있다. 그저 내가 아랍어, 프랑스어를 배운다고 생각하면 된다. 요새 중국어가 핫하다고 하던데? 는 동시에 요새 파이썬이 핫하다고 하던데? 와 같은 뜻이다.

예를들어 영어를 C++, 한국어를 파이썬이라고 하자.

 

컴퓨터야 물좀 떠다줘를 메모장에 적고 이를 컴파일하여 기계어로 엮었다.

= 파이썬언어로 작성된 "물좀떠달라는 의미"를 에디터에 작성하고 이를 컴파일하여 기계어로 엮었다와 같은 의미이다.

 

다시말해,

 

Hey computer, give me some water를 메모장에 적고 이를 컴파일하여 기계어로 엮었다.

= C++언어로 작성된 "물좀떠달라는 의미"를 에디터에 작성하고 이를 컴파일하여 기계어로 엮었다와 같은 의미이다.

 

@그렇다면 Visual studio, Android studio등등은 뭐야?

누구든지 귀찮은것을 싫어한다. 사람은 귀찮기에 발전하니까.

따라서 사람들은 이 editor와 compiler를 통합했다. 이를 곧 IDE 라고한다 (Integrated(통합하다) development environment) 즉 통합개발환경이다.

이 IDE로 널리 배포된것 중 하나가 Visual studio, android studio이다.

 

따라서 다시 말해보자.

 

컴퓨터야 물좀 떠다줘를 A라는 IDE로 기계어로 엮었다.

=파이썬 언어로 작성된 "물좀떠달라는 의미"를 Visual studio에 작성하고 컴파일했다.

 

@당연히 컴파일만 해주는 프로그램이 있고, editor의 역할만 하는 것도 있다.

하지만 대부분의 경우 편집과 컴파일을 같은 환경에서 수행하는것이 편하기에 그런 프로그램(Visual studio)을 쓰곤한다.