안녕하세요!!! 숯 같은 개발자 엄탱입니다!!
오랜만에 또 포스팅을 하게 되었습니다.
오늘은 제가 JavaScript의 호이스팅이라는 개념을 포스팅하기 전에 필요한 용어를 공부하다 또 그 안에 필요한 용어를 공부하다 기계어, 어셈블리어, 고급 언어, 저급 언어까지 오게 되었습니다.
오늘도 화이팅 하시고 힘찬 하루 보내세요.
오늘은 그림이 별로 없어 읽기 힘드실 수 있을 것 같아 걱정이 됩니다. 그래도 읽어 주시면 감사하겠습니다. 혹여나 잘 못 된 내용이 있다면 댓글로 남겨주시면 더더욱 감사하겠습니다.
바로 시작하겠습니다.
기계어와 어셈블리어
기계어
기계어는 쉽게 말해 컴퓨터의 언어입니다.
더 자세히 설명하자면 CPU가 별 다른 컴파일 없이 직접 해독하고 실행할 수 있는 0과 1로만 이루어진 비트 단위의 언어입니다.
나무위키에 따르면 기계어의 0과 1은 엄밀히 따지면 숫자(데이터)는 아니고 있다, 없다 그리고 양극과 음극 정도의 개념일 뿐이며, 인간이 '개념'을 받아들이기 위해서는 문자든 음성신호든 개념을 이해시킬 수단이 필요하기 때문에 그냥 직관적으로 0, 1로 표현한 것뿐이라고 합니다.
기계어는 CPU가 해독할 수 있는 유일한 언어이기 때문에 모든 프로그래밍 언어는 결국 기계어로 번역이 되어 CPU에게 전달됩니다.
1101 1001 1001 1111
1111 1100 1010 1100
위와 같은 기계어는 가독성이 현저히 떨어져 보통의 사람들에게는 단순히 0과 1의 반복된 난해한 언어로만 보입니다. 따라서 기계어로 프로그래밍을 짜는 사람은 없을 것입니다. 있을 수도 있고…
나무위키를 읽다가 재밌는 문장이 있어서 퍼왔습니다. (참고로 저만 재밌는 것일 수 있습니다.)
성능을 위해 기계어로 된 프로그램을 최적화하는 거나 어셈블리어로 된 프로그램을 최적화하는 거나 결국 똑같다는 얘기입니다.
때문에 최적화를 위해 어셈블리어로 코딩하는 일은 간혹 있지만 최적화를 위해 기계어를 쓰는 사람은 이 세상에 존재하지 않습니다.
존 폰 노이만은 기계어로 코드 짜고 어셈블리어 따위를 왜 만드냐고 했는데? 물론 그도 이제 존재하지 않는다
그래서 어셈블리어는 무엇일까요?
어셈블리
어셈블리어 또는 어셈블러 언어는 기계어와 1:1 대응이 되는 컴퓨터 프로그래밍의 저급 언어입니다.
어셈블리어는 복잡하고도 난해한 0과 1의 나열된 언어인 기계어를 알파벳으로 변환한 것입니다.
그렇기 때문에 어셈블리어는 기계어보다 더 가독성이 뛰어나기 때문에 어셈블리어로 프로그래밍을 하게 되면 기계어로 프로그래밍하는 것보다는 더 생산성 좋은 개발을 할 수 있게 됩니다.
예를 들어 전자레인지, 세탁기, 등등 임베디드 개발에는 어셈블리 언어가 사용되어집니다.
참고!!!
컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다.
고급 언어와 저급 언어
고급언어와 저급 언어에서 고급과 저급은 언어 간의 급을 나누고 누가 더 좋고 안 좋고를 따지는 것이 아니라 사람의 언어에 가까운지 기계어에 가까운지에 대한 표현입니다.
고급 언어
사람의 언어에 가까운 언어입니다.
예를 들어 C, C++, Java, JavaScript 등등 일반적으로 알고 있는 프로그래밍 언어를 말합니다.
고급언어는 저급 언어보다 가독성이 좋습니다.
저급 언어
기계어에 가까운 언어입니다.
예를 들어 위에서 설명드렸던, 어셈블리어가 저급 언어에 속합니다.
저급 언어가 기계어에 가까운 언어이고 컴파일과 같은 번역이 필요하지 않아 고급 언어로 작성한 프로그램보다 빠른 편입니다.
저급 언어와 고급언어의 특징 차이
저급 언어에 비해 고급 언어가 갖는 주요 장점은 프로그램을 작성하거나, 작성된 프로그램을 이해하고, 유지 보수하기가 쉽다는 것입니다. 그러나 단점으로는, 고급언어로 작성된 프로그램들이 실행되려면 반드시 컴파일러나 인터프리터 등을 이용하여 기계어로 번역되어야 한다는 것입니다.
'컴퓨터 과학(CS) > 프로그래밍 언어' 카테고리의 다른 글
[컴퓨터 과학] 컴파일러와 인터프리터 - 고급 언어 번역기 (용어 설명) (2) | 2023.11.11 |
---|