Computing Paradigm의 변천과 Java 기술의 발전 (1. program기법 측면)

Computing Paradigm의 변천과 Java 기술의 발전  
기술의 발전은 사용자를 위한 사용성 보다는 개발자의 편의성을 중심으로 발전했습니다.

내용이 다소 길더라도 이걸 다 외워야한다! 이러기 보다는 흐름을 이해한다고 생각하시고 읽어보시기 바랍니다!

해당 주제는 program기법 측면구조적 측면으로 나누어 설명하겠습니다.

1. program기법 측면 

객체지향기법은 처음부터 생겨난 것이 아닙니다.

50~60년대는 절차중심적(C)

60~70년대는 데이터를 관리하는 기술이 중심적이었습니다.
이를 정보공학기법(Data Base Management System)이라 부르기도합니다.

70~80년대에야 비로소 객체지향기법의 이론이 나타나기 시작합니다.
객체지향은 명사들을 기반으로 관계성을 다룬다고 보면됩니다.

객체지향기법이 나타난 배경은 산업혁명입니다.
기술이 빠르게 발전하는 산업혁명으로 인해 기존의 절차중심과 정보공학기법의 단점이 대두되기 시작했습니다. 바로  빠르고 민첩하게 대응하지 못하는 단점이었고 근무시간에 일을 다 처리를 못하게되면서 바로 개발자가 불편해지기 시작했습니다.
(객체지향은 사람과 사람의 관계로 절차중심이 아닌 인간의 사고를 뽑아내는 과정입니다.)

abstraction 추상화 / 절차중심적 -> 객체지향 재사용 : 재사용이 되게하기 위해 프로그램을 조각내서 짜기 시작(명사 단위)




80년대중반~90년대에 James Gosling - 그린프로젝트가 등장하기 시작했습니다.
당시는 백색가전시대 (냉장고, 세탁기 등)였고 언어가 모두 달랐던 것을 통일했습니다.
이 임베디드 언어가 Oak입니다.
큰 기대를 품고 전자회사에 이 기술을 등장시켰지만 발전하지 못했습니다.
왜냐하면 당시에는 부서이동이 없었기에 개발자들이 필요없다고 했습니다.

90년대에 Web시대가 도래하게됩니다.
이 부분은 나중에 설명드리게 될텐데 http프로토콜도 컴퓨터 종류에 상관없이 사용하기 위해 만들어지기 시작하고 이때 플랫폼에 상관 없이 어디서든 돌아가는 Language 필요성이 본격적으로 거론되기 시작합니다.

이 특징이 재사용성이라고하는데 객체지향기법의 특징 중 하나가 재사용성(reuse)입니다.

이전 프로젝트로 쇼핑몰 시스템을 만들었다고 가정해봅시다.
그리고 이후에 강의장 관리 시스템을 만든다고한다면, 쇼핑몰 시스템에서 만든 것으로 강의장 관리 시스템을 만드는 것처럼 재활용한다는 뜻입니다.
(중요한 것은 코드의 복붙이나 goto재사용성이라고 하지 않습니다.)

다시 말하면 재사용이란 메모리 공간이 달라도 이전에 사용한 코드의 컴파일 된 것을 메모리적으로 다시 사용할 수 있도록 가져오는 것입니다.
(이 부분은 앞으로 게시되는 글을 통해 천천히 설명드릴테니 지금은 아~ 재사용성은 코드를 복붙해서 사용하는 것을 의미하는게 아니구나하고 넘어가시면 되겠습니다.)

강의장 관리시스템을 구현할때 쇼핑몰 시스템을 만든 것을 기반으로 재사용해도 구현하는데는 문제 없습니다. 
다만, 중요한 것은 어설프게 재사용하면 garbage가 생긴다는 것입니다.

간단히 예로 들자면 쇼핑몰에선 고객을 대상으로 상품을 판매하는데 강의장에선 고객을 대상으로 강의를 하는 곳이기 때문에 상품은 필요가 없습니다.
즉, 이 상품이라는 것을 가지고 그대로 강의장 관리 시스템을 만들면 쓰레기를 가지고 만들기 때문에 메모리 누수가 발생합니다.
나중엔 Out Of Memory가 발생하여 프로그램이 죽어버립니다.

2000년대에는 더 빠르고 편한 개발을 요구하고 재사용하는 CBD기법이 뜨게됩니다.
여기서 Component는 특정 객체들을 위한 기능별로 합체된 객체들의 집합을 의미합니다.

2000년대 중반 : Framework기반 기법
Framework는 언어가 아니고 도와주는 도구로 필수가 아닙니다.
Java에선 Spring을 많이 사용합니다.
EX) 책 서비스를 한다.
책 서비스를 하기 위해선 책장이 필요하다 - 책장이 Framework (필수는 아니다)

Framework가 무서운 것은 메모리 누수를 많이 발생시킨다는 것입니다.
오픈소스 프레임워크는 A라는 사용자, B라는 사용자 등 각 사용자가 개발하려는 프로그램의 사이즈에 맞춰서 나온 것이 아니기 때문에 잘못된 방법으로 무리하게 사용하면 메모리 누수가 발생하여 느려질 수 있습니다.

2010년대는 Functional기법이 뜨게되는데 절차중심과 흡사합니다.
마찬가지로 동사에 중점을 둔 것으로 대표적인 언어 javascript (웹브라우저) 입니다.

자바스크립트는 자바와 다른 것입니다.
자바스크립트 이름의 유래를 잠깐 설명드리겠습니다.
sungreen project 당시 DB쪽 파트너 오라클과 자바는 웹 서버에 강했고 웹클라이언트에 강한 파트너가 필요했습니다.. 당시 웹브라우저 회사로 이름 날리던 회사가 넷스케이프 회사였고(넷스케이프 브라우저) 커뮤니케이션을 하고 파트너쉽을 하면서 자바의 이름을 알릴 수 있게 넷스케이프와 협업한게 자바애플릿입니다.

아무튼 넷스케이프 회사에서 자바에 감탄을 하게되어 sun 자바 이름 사용을 요청하게 되었고 sun수락하여 웹브라우저에서 돌아가는 새로운 언어에 이름을 붙인 것이 자바스크립트입니다그래서 자바와 자바스크립트는 전혀 다른 것입니다.

자바스크립트는 웹브라우저에서 이벤트처리를 하기에 적합한 언어입니다.
(이벤트처리란 서버에 전송하기 전 버튼이나 키를 입력할 때 경고창을 띄우거나 패스워드 패턴 확인 같은 것들을 뜻합니다.)


그렇다면 왜 자바를 계속 쓰는 것인가?
다음 글은 구조적 측면에서 왜 자바를 쓰게 되었는지에 대해 알아보겠습니다!


댓글 없음:

Powered by Blogger.