2023. 3. 9. 07:26

8086 출시 될 떄 쓰이던 언어는 뭐야?

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

"그러나, 초기에는 어셈블러가 직접 기계어로 작성되었습니다."

여기서 기계어는 직접 opcode를 encoding 해서 집어 넣는 hex를 의미 하는것 같아서 다시 질의 합니다.

 즉 어셈블러가 이전의 프로그래밍을 대체 해서 더 쉬워진 진보된 언어이던 시절이 있습니다.

0과 1로 작성 하던 시기가 아마 펀칭기? 라고 불리던걸로 인식하던 시절이 아닌가 싶습니다.

결국 8086 이전에도 펀칭기를 통해서 컴퓨팅을 하는 컴퓨터란게 있었고, IBM이 x86 설계를 기반으로 8086 이란 CPU를 발표 하고 나서 부터 프로그래밍이 기계 중심에서 인간이 읽을수 있는 형태로 변화한것 같습니다.

참고로 x86 관련 내용입니다.

즉, 펀칭기 시절에서 부터 구멍난것과 그렇지 않은걸 0/1로 구분하여서 프로그래밍을 했고,

이 후 8086 출시 후 이뤄진 프로그램들은 직접 x86 opcode를 이용하긴 했는데, 그걸 구현하는 방식은 종이에 적든 기름을 그리던 node를 따라서 연결하는 설계란 작업을 하고 해당 내용을 직접 0과1로 표현했을꺼고, 그 bit의 조합을 1 byte Hex로 Encoding 해서 실행되는 파일로 만들었을꺼봅니다.

이 후 생산성의 문제로 인해 Mov ax, 0x12345678 같은 어셈블러가 등장하였는데, 이 어셈블러 역시 최초에는 기계어로 작성되었을 확률이 높습니다.

.. 최초의 쇠 망치는 , 청동기 시절 망치로 모양을 조금씩 만들어 가면서, 적당한 수준 모양의 쇠 망치가 만들어지면, 그 쇠망치를 이용해서 본격적으로 쇠 망치를 만들었을 과정과 비슷합니다.

어셈블러 등장으로 기계어 Encoding 에서 해방된 프로그래머들은 B 언어란걸 만들어 내고, 이 B 언어의 hello world는 아래와 같습니다.

위의 B 언어 문법은 C언어의 문법과 비슷한데, 본격적으로 B 언어같은 문법은 인간이 간단한 작문 형태로 프로그램이 가능하게 만든게 아닌가 싶습니다.

이후 C 언어 문법을 정립하고, 초기 버전의 C 컴파일러는 B 언어로 조금씩 완성하다, C 컴파일러가 최초 몇가지 문법을 컴파일 할수 있는 수준에 도달하면서 C 언어가 C 언어 문법을 컴파일하면서 점점 C 컴파일러는 C로 컴파일이 되기 시작한것 같습니다.

이후 나오는 컴파일러 역시 C 언어로 모두 컴파일이 가능하며, 기계어->어셈블러->고급언어의 진화는 끝을 맺게 된것 같습니다.

대신 이제 컴파일러 기능과 성능 개선에 촛점을 맞추기 시작한게 아닌가 싶습니다.

감사 합니다.

오랜시간 막연히 궁금하던걸 정리하니 속이 시원하네요.