[꼼꼼한 개발자] 꼼코더

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

 

위 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해 교재를 참고하여 작성되었습니다.

 

스프링 입문을 위한 자바 객체 지향의 원리와 이해 - YES24

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량 애플리케이션 프레임워크인 스프링은 자바와 객체 지향이라는 기반 위에 굳건히 세워져 있다. 따라서 스프링을 제대로 이해하고 활용

www.yes24.com

 

 

 

 

Comments