본문 바로가기

1:1 개발 공부

Do it 첫 코딩 기초 공부 1 : 비트, 아스키 코드, 유니코드, 컴파일러, 스크립트 언

참고하기 좋은 영상 : https://programmers.co.kr/learn/courses/5/lessons/141

 

1) 약속된 비트 => 코드, 비트 8개 => 1바이트

- 비트는 0 또는 1 중 하나의 정보를 가지는 아주 조금한 정보 단위입니다. 예를 들어 우리가 쓰고 있는 "예", "아니오", 가 컴퓨터에서는 01, 010 으로 구분하여 받아들이는 것입니다. 그런데 각 개발자마다 누구는 "예"를 01, 누구는 001 로 표현한다면, 소통이 쉽지 않겠죠? 그래서, 각기 다른 비트의 조합이 의미하는 것들을 "약속"하였고, 약속된 0, 1로 만들어진 부호를 코드라고 합니다. 

- 개발자들은 사람의 언어와 컴퓨터 언어를 연결하기 위해, 알파벳과 숫자, 특수문자 개수를 일일이 세어보았습니다. 그러면서 비트를 8개 정도 연결하면 충분한 약속이 만들어진다는 것을 알게 되었고, 비트 8개가 묶여 1바이트가 되었습니다.


2) 아스키 코드와 유니코드

- 아스키 코드란 8비트 단위로, 유니코드는 16비트 단위로 약속을 정한 코드입니다. 만약, 전달할 때는 아스키 코드로, 해석할 때는 유니코드로 한다면 둘의 약속이 다름으로 정보가 잘못 전달되겠죠? 이러한 상황을 디코딩 오류라고 합니다. 사람의 언어를 컴퓨터 언어로 바꾸는 과정을 인코딩, 그 반대의 과정을 디코딩이라고 합니다.


3) "프로그래밍 언어"를 비트 형태로 편집하는 과정 => 컴파일러

- 컴퓨터의 언어인 0과 1로 나열된 걸 사람이 봐야한다면 아마 우리는 컴퓨터를 이용 못할지도 모릅니다. 따라서 사람이 "예"라고 작성하기 위해 컴퓨터에 "char x = 예;" 라고 프로그래밍 언어로 작성하고, 프로그래밍 언어로 작성된 부분을 컴퓨터가 읽을 수 있는 01과 같이 비트 형태로 편집해주는 도구를 '컴파일러'라고 합니다.

 

+플러스 알아보기

-어셈블리어는 무엇일까요? 0,1로 조합으로 이루어진 기계어를 알파벳 문자로 변환하여 사람도 그나마 알 수 있도록 기호화한 언어입니다. 1011(기계어) = MOV(어셈블리어), MOV가 바로 어셈블리어입니다. MOV를 보며 유추할 수 있나요? '이동시키다'라는 뜻을 갖고 있습니다. 어셈블리어나 기계어를 알아둘 필요가 있냐고 한다면 그렇습니다. 비유를 들어, 제가 영어를 잘한다고 가정할 때, 외국인과 제 사이에서 번역가가 번역을 해주는 것보단, 제가 직접 외국인과 소통하는게 훨씬 좋겠죠? 정밀한 계산을 요구하는 (ex 인공위성) 과 같은 경우는 기계어로 코딩합니다.


4) 스크립트 언어 (자바스크립트), 마크업 언어

- 스크립트 언어는 한 꺼번에 기계어로 번역하지 않고, 실행할 때마다 번역하는 언어입니다. 코드도 짧고 간단합니다. 스크립트 언어에서 이런 방식으로 번역하는 도구를 '컴파일러'라고 부르지 않고 '인터프리터'라고 부릅니다.