티스토리 뷰

이 카테고리에 내용은, 스프링 입문을 위한 자바 객체지향의 원리와 이해에 대한 책 내용입니다.

개인적으로 책을 사서 정리를 하고있으며, 만약 블로그를 쓴 것에 문제를 제기하신다면 삭제하거나 비공개처리 하겠습니다.

 

***

 

컴퓨터가 이해할 수 있는 것이 뭘까요? 바로 0과 1만 을 사용하는 기계어, 2진법입니다. 인간은 2진법 뿐만 아니라 여러 진법을 사용할 수 있는 두뇌를 가집니다. 그런데 왜? 컴퓨터를 애용할까요? 멍청한데 말이죠?

그 이유는, 정확도와 속도입니다. 인간은 실수덩어리죠. 계산을 하다보면 실수를 하고, 속도 또한 시간이 지나면서 느려지죠. 그렇기 때문에 2가지를 겸비한 컴퓨터를 사용합니다.

 

하지만 여전히 0과 1 기계어만 사용하기에 너무 불편합니다. 그래서 좀 더 발전한 어셈블리어, 기계어를 일상 용어로 표현하자!라는 일대일 매칭 코드표를 만들었습니다. 하지만 cpu마다 기계어가 다르기에 어셈블리어도 다를 수 밖에 없었죠. 그래서 각 개발자들 사이에는 모방 속의 창조가 개발자의 삶 속에 들어가기 시작합니다. 예를 들면, 어떠한 함수를 모방할 때 이름을 바꾼다던가, 객체를 바꾼다던가 하는...

하지만 여전히 단점은 존재했습니다.(지금도 역시... 있겠지만) cpu가 다르다면, 어셈블러도 다르기에 만약 다른 회사에 이직을 한다면 그것을 처리하는 빅엔디안 이든 리틀엔디언이든 표기법을 다시 익히는 불상사가 생길 수 있습니다.

 

하, 그럼 어떡할까요? 이 어셈블리어 역시 전문가들에게만 직접 닿아있네요. 일반인들은 감히 쳐다도 못봅니다. ㅜㅜ

하지만, 드디어! 일반인들도 코딩을 할 수 있는 무언가 아니 그전에도 많은 언어가 나왔지만, 컴공의 1학년 기초 과목 C언어가 등장합니다! 짝짝!

아까 어셈블리어에서의 문제가 뭐였죠? 이식성이 좋지 아니 속된 말로 쓰레기입니다. cpu가 다르다면 어셈블리어 역시 다시 익혀야 하기에... 매우 불편하죠. 하지만 C는 NO! NO! 그렇지 않습니다. 컴파일러(EX window, mac os)만 따로 둔다면 소스파일만 가지고도 기계어를 만드는 기염을 토합니다. 즉 우리는 cpu의 사항이든 어셈블리어든 상관하지 않고, 해당 OS에 맞는 컴파일러가 설치만 되어있기만 하면 됩니다.(이걸 만드신다면 당신은 대단!)

 

* 포인터 개념은 생략!

 

그다음 C -> C++로 또 다른 언어를 개발하는데, C와 C++의 근본 차이는 무엇일까요?

이 책의 핵심 객체 지향 개념을 도입합니다. 이것이 인간의 삶과 접목하다고 하죠. 그다음 책에서 말하는 JAVA가 나옵니다. C++ VS JAVA, 책에서는 설명하는데, 객체에서 모든 것을 설명한다라는 가정이 있을 때 C++은 외부에서도 처리가 가능합니다. 하지만, JAVA의 경우에는 객체안에 MAIN함수가 존재해야 하며, 객체.메서드명으로 접근해야합니다. 그래서 JAVA가 C++보다 객체 지향에 가깝다고 책이 설명하는 것 같습니다.

 

하지만 책을 읽은 저로서는 둘다 비슷하다고 봅니다. 개인적인 의견이니 무난히 넘기시면 되시겠다. C++또한 완전한 객체지향 언어라고 생각합니다. JAVA가 완전한 객체지향언어라는 가정 하에, C++를 JAVA처럼 사용한다면, 굳이 완전한 객체지향언어가 아니라고 볼 수 없기 때문입니다.

 

하지만 JAVA가 사랑받은 이유는 객체지향언어라는 점도 있지만, 가장 핵심은 가상머신(JVM)입니다. 기종이 몇개든 단 하나의 기계어를 생성할 뿐만아니라 컴파일러 역시 하나만 필요하는! 이식성의 최강자입니다. 물론 기종별 JRE세팅이 필요하기는 하나 한번만 설치하면 된다는 엄청난 장점을 가지고 있습니다.

 

책 저자께서는 CBD(컴포넌트 기반 개발), SOA(서비스 중심 구조)가 어렵다고 설명한다. 그것은 제품이 아니고 방법론이기 때문에, 그렇기에 이 사상을 잘따랐네 못따랐네 하는 것은 중요한게 아니라 본질 즉 개념을 익히라고 합니다.

 

이정도 설명을 한 것은 앞으로 나아가야할 스프링 프레임워크가 선조들의 장점을 흡수한 최선봉 제품이기 때문입니다.

스프링이 OOP FrameWork라고 설명합니다.(Ioc/DI, AOP, PSA : 스프링을 지배하는 근원 3요소 => POJO)

스프링의 장점은? ORM, OXM, AOP 등 엔터프라이즈 애플리케이션을 구현하는 데 필요한 모든 서비스를 지원한다는 것. 즉 융합의 선두주자. 또 스프링은 PSA(일관성 추상화) 기법을 통해 중구난방 기술을 표준화된 방식으로 사용할 수 있게 지원합니다.

 

------

 

이정도로 1장의 내용이 끝나는데, 아직 OOP에 대한 설명이 안나와서 뜬구름잡으며 읽은 것 같습니다. OOP를 이해하기 위해 오늘도 저는 책의 한 장을 읽으며 나아가겠습니다!

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함