[꼼꼼한 개발자] 꼼코더
02. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - C 언어 본문
Spring/스프링 입문을 위한 자바 객체 지향의 원리와 이해
02. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [사람을 사랑한 기술] - C 언어
꼼코더 2022. 12. 24. 02:16반응형
💪🏻 C 언어 - 강력한 이식성 / One Source Multi Object USe Anywhere
C언어의 등장으로 기계 종류별로 코드를 작성하는 멀티 소스가 아닌.
단 하나의 소스파일인 싱글 소스만 만들면 되었었다. 그 이유인즉슨
“소스파일을 각 기계어에 맞는 컴파일러로 컴파일 시 각 기계에 맞는 기계어 목적 파일이 만들어진다.”
이 부분에서 어셈블리어 프로그래머가 C 언어를 만났을 때의 감동을 간접적으로 느껴졌길 바란다.
하지만 실제로는 그렇게 감동만 하지 않았었다.
운영체제가 하드웨어의 특성을 추상화하고 컴파일러는 운영체제별로 만들어져 공급하하게 된다.
그 운영체제들이 또 나름의 특성이 있었기에 하나의 소스로 각 기종별로 컴파일하기 전에
그 기종에 맞게 소스를 변경하는 작업이 필요했다.
C 언어에서 이런 설명이 있다.
- short는 int보다 크지 않은 정수
- long은 int보다 작지 않은 정수
자바만 배웠다면 약간의 충격이 온다.
- 어떤 운영체제는 int를 2바이트로 인지하고
- 어떤 운영체제는 int를 4바이트로 인지하기 때문이다.
“결국 하나의 소스로 모든 곳에서 사용가능”이라는 말은 이상향이었고
그 뒤에 “운영체제별 소스 수정 과정”이 꼭 필요했었던 것이다.
그래도 어셈블리어에서 C 언어의 등장은 매우 편리해진 부분이었다.
이러한 C언어의 특성을 ‘이식성이 좋다'라고 표현한다.
단 어셈블리어 보다 이식성이 좋은 거지 자바보다는 이식성이 좋지 않다.
그럼 이 부분의 중요한 포인트는 '인간이 이해하기 쉬운 언어 체계가 기계어와 1:1 매칭이 아닌 m:n 매칭이 가능해졌다는 것'이다.
아래는 k = a + b를 C와 어셈블리어를 비교하는 내용이다.
👨🏻💻 C 언어
- k = a + b;
🤖 어셈블리어
- load 레지스터 1, 110 번지
- load 레지스터 2, 114 번지
- add 레지스터 2
- save 106 번지, 레지스터 1
위 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해 교재를 참고하여 작성되었습니다.
'Spring > 스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
Comments