스프링 입문을 위한 자바 객체 지향의 원리와 이해 - Chapter 01. 사람을 사랑한 기술 Ep_2

김광현·2022년 12월 26일
0

C언어 - 강력한 이식성 / One Source Multi Object Use Anywhere

C언어가 등장함으로써 어셈블리어 프로그래머들은 환호를 외쳤습니다.
그 이유는 같은 역할을 하는 소스이어도 어셈블리어 특성상 각 기계의 종류만큼 만들어야 했던 소스파일을 이제는 C 하나로 만들면 되었기 때문입니다.

이것이 가능한 이유는 C언어는 삼단 논법을 적용한 언어이기 때문입니다.

ㆍOne Source : 하나의 C 소스 파일만 작성
ㆍMulti Object : 기종마다 하나씩 기계어 목적 파일을 생성
ㆍUse Anywhere : 모든 컴퓨터에서 실행 가능

허나 환호도 잠시였습니다.
운영체제가 하드웨어의 특성을 추상화하고, 컴파일러는 운영체제별로 만들어져 공급하는 특성이 있습니다.

그렇다면 운영체제가 다르다면?

하나의 소스로 각 기종별로 컴파일을 하기 전에 그 기종에 맞게 소스를 변경하는 작업이 필요했습니다.

shortlong의 예시를 들겠습니다.

ㆍshort : int보다 크지 않은 정수
ㆍlong : int보다 작지 않은 정수

어떠한 운영체제는 int를 2바이트로 인지하고, 또 다른 운영체제는 int를 4바이트로 인지하기 때문에 문제가 생깁니다.
어째서 이런문제가 생기는 것일까요?

int는 정수를 의미하는 영단어인 integer의 줄임말일뿐 그 크기가 몇바이트인지 규정하는 말이 아니기때문입니다.

결국 One Source Multi Object Use Anywhere 는 이상향이었고 One Source뒤에 Fix Source 다시말해 운영체제별 소스 수정 과정이 필요했던 것입니다.

물론 각 기계의 종류만큼 만들어야했던 어셈블리어에 비하면 C언어는 무척이나 편해진 것입니다.
이러한 C언어의 특성을 "이식성이 좋다" 라는 말로 표현합니다.

이 챕터의 교훈

인간이 이해하기 쉬운 언어 체계가 기계어와 1:1 매칭이 아닌 m:n 매칭이 가능해졌다는 것


C++ 언어 - 정말 인간적인 프로그래밍 방법론, 객체 지향

C++는 C언어에 객체 지향 개념을 도입함으로써 역사에 한 획을 그은 언어가 되었습니다.
우선 C++에 대한 설명은 여기까지 하고, 객체 지향 개념은 추후 챕터에 맞게 다시 기술 하겠습니다.


JAVA - 진정한 객체 지향 언어

C++는 순수 객체 지향 개념에 가장 충실한 언어입니다.
하지만 숨긴것이 있습니다.

C++는 객체 없는 프로그래밍도 가능

그렇기에 C++를 객체 지향 언어 보다는 객체 지향 지원 언어라고 부르는 것이 옳다고도 볼수있습니다.

객체 지향 언어 중심에는 Class가 있습니다.

공통 함수를 클래스나 객체 관계없이 호출할 수 있는 C++ 과 다르게 자바에서는 클래스를 떠나 존재할 수 있는 것은 아무것도 없습니다.

그렇다면 자바는 어떻게 사랑한 것일까

바로 VM (Virtual Machine) 가상머신입니다.
물론 C#도 가상머신에 해당하는 부분이 존재합니다. [CLR] (Common Language Runtime)

컴파일러를 기종별로 따로 구매해두지 않아도 됩니다. (무료)
공통된 컴파일러를 쓰기때문에 오브젝트 파일만 가져간다면 어디서든 같은 결과값을 도출할수 있게 된겁니다. (JRE세팅 필요)

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

profile
대림대학교 컴퓨터정보학부

0개의 댓글