[꼼꼼한 개발자] 꼼코더
01. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - 기계어, 어셈블리어, 니모닉 본문
01. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - 기계어, 어셈블리어, 니모닉
꼼코더 2022. 12. 24. 02:03🎬 시작
스프링은 과거부터 현재까지 프로그래밍 발전사에서 그 정점에 있다고 해도 과언이 아니다.
스프링을 학습하기 전 과거에 어떤 기술들이 있었고 그 의미를 빠르게 학습해 보도록 하자.
🤖 기계어 - 0과 1의 행진 / 너무나 비인간적인 언어
기계어는 기계가 이해하는 유일한 언어이다.
2진 숫자인 0과 1로만 표현된다.
기계어 코드는 CPU에 따라 다르다.
(’ 에드삭 전용’ 기계어 ↔ ’ 유니박 전용’ 기계어 서로 간에 호환 불가)
에드삭(EDSAC) 전용 기계어 : 1 +3
01010101 00000001 00011001
유니박(UNIVAC) 전용 기계어 : 1 + 3
110111100 00011000 10011000
애드삭 : 모리스 월키스 제작, 2진법을 적용한 세계 최초의 프로그램 내장 방식 전자계산기
유니박 : 최초의 상업용 컴퓨터
👼🏻 어셈블리어 - 0과 1의 행진을 벗어나 인간 지향으로 / 기계어 니모닉
기계어는 컴퓨터가 이해하는 유일한 언어이지만 인간이 눈높이를 그 수준까지 낮추기에는 너무 낮다.
따라서 어느 날 한 천재가 다음과 같은 생각을 했다.
“기계어의 명령들을 일상 용어로 표현하고 이걸 기계가 알 수 있는 기계어로 번역하게 하면 어떨까?”
그리고 만들어진 것이 기계와 명령어와 일상 용어를 1대 1로 매칭하는 코드표였다. 이 매칭 코드표는 어셈불리라고 불렸다.
하지만 우리는 위에서 ‘기계어 코드는 CPU에 따라 다르다’라고 알고 있다.
따라서 CPU별로 각자의 어셈블리어 (Assembly Language)도 달랐다.
어셈블리어 → 기계어 번역해주는 소프트웨어를 어셈블러(Assembler)라고 한다
애드삭 게발자들은 이렇게 결의했을 것이다.
“더하기를 의미하는 기계어 ‘010101’에 어셈블리어 니모닉은 ADD라고 매칭하자”
유니박 개발자들도 이런 아이디어를 받아들이지만 자존심은 있었다.
“애드삭 쪽에 더하기에 ADD라는 니모닉을 줬대.. 음 우리는 PLUS라고 하자!”
이러한 모방과 창조는 프로그래머의 삶에 젖어있다.
- J 모 진영의 화면 출력 : System.out.println()
- M 모 진영의 화면 출력 : Console.WriteLine()
그렇다면 “모방 속의 창조” 이것이 진정한 교훈일까? 어셈블리어가 남긴 진정한 유산은
‘기계어를 벗어나 인간의 언어를 모방해 프로그램을 작성하는 것이 가능하다는 것’이다.
만약 내가 기계어 프로그래머 였는데 어느 날 어셈블리어를 만나게 됐다면 크나큰 감동을 받았을 것이다.
‘0과 1의 행렬에서 벗어나 영어로 된 일상 용어로 프로그램을 작성’할 수 있으니
하지만 애드삭 어셈블리어와 유니박 어셈블리어는 달랐고 이직을 하게 되면 처음부터 다시 배워야 하고 숫자 표기법도 다시 익혀야 하기 때문에 문제점이 있었다.
💡 니모닉(Mnemonic)
어떤 것을 기억하는 데 쉽게 하도록 도움을 주는 것, 또는 쉽게 기억되는 성질, 재사용이 필요할 때 사람의 기억을 돕기 위해 명확하게 선택된 상징이나 상징의 조합을 사용하는 것.
위 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해 교재를 참고하여 작성되었습니다.
'Spring > 스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
06. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [자바와 절차적/구조적 프로그래밍] - 자바 프로그램의 개발과 구동 (2) | 2022.12.27 |
---|---|
05. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - CBD, SOA (0) | 2022.12.24 |
04. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - 신기술, 언어의 발전, 언어의 배척 (0) | 2022.12.24 |
03. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - C++ 언어, JAVA 언어 (0) | 2022.12.24 |
02. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - C 언어 (0) | 2022.12.24 |