자바스크립트는 세계에서 가장 인기있는 언어 중 하나로 자리 잡고 있다.

다소 장난감같은 태생때문에 개발자들이 디자인패턴을 무시하는 경향이 있다.

디자인 패턴은 신뢰성 있는 솔루션을 제안할 수 있는 훌륭한 도구다.

- 자바스크립트 디자인패턴 중, 들어가며

 

 

책 펴자마자 나오는 글인데, 진짜 뜨끔했다.

 

나도 몇년 전, 아니 몇일 전까지만 해도 아직까지 나는 디자인패턴 뭐 ㅎ 라고 생각했기 때문일까.

물론 ㅋㅋㅋㅋㅋㅋㅋㅋ 말도 안되는 자기위로였지만.

 

좀 제대로 알아야할 것 같아서 기초 서적 찾던 중에 하코사에서 누군가가 책을 추천하길래,

언능 도서관가서 대여해왔다.

 

 

 

 

 

 

1부에서는 전통적인 디자인 패턴을 다룬다고 하고

2부에서는 책에서 다루지 않은 패턴 그리고 자바스크립트에 특화된 패턴을 다룬다고 한다.

내가 읽고 있는 이게 1부인건가? 아니면 1부, 2부가 다 포함된건가?, 여튼..

 

 

이 책에서는 23가지의 객체지향 디자인패턴이 나온다는데, 

 

객체지향이란? (OOP, Object Oriented Programming)

컴퓨터 프로그램을 객체들의 모임으로 파악하고자하는 프로그래밍의 패러다임(근본적 규정하고 있는 인식 체계) 중에 하나라고 한다.

(아차, 디자인패턴과 패러다임은 같은 것이 아니라고한다. 아래서 다시 얘기)

 

뭐 그래서 객체지향 정의가 저거면 뭔데 대체?한 적이 있었기 때문에 예시를 준비했다.

사람이라는 추상화된 클래스가 있다면

사람 속성

- 영수 객체

- 창환 객체

- 수지 객체

영수 객체의 속성

- 팔 2개

- 다리 2개

창환 객체의 속성

- 키 180

수지 객체의 속성

- 여자

 

이래도 이해가 안간다면 

 

붕어빵 틀 클래스

붕어빵 객체 생성

붕어빵 객체안에 슈크림, 닽팥, 치즈 속성등을 삽입.

이런 것들을 객체 지향 프로그래밍이라고 한다.

 

 

 

 

 

역시 책은 가볍게 시작해야한다고, 1장에는 자바스크립트의 역사에 대한 설명이 있다.

역사는 솔직히 볼때만 "아 이렇구나~"하게 되고, 진짜 거짓말 안하고 몇 일지나면 잊는다.

그래서 보면 기억나는게 있고 안나는게 있다.

 

 

자바스크립트의 토대는 처음 95년도에 넷스케이프의 한 프로그래머가 10일간 만들었다고한다.

그 이후 여러 손을 거치고 이름도 바뀌었다.

 

간략히 이런식으로?

모카Mocha - 라이브스크립트Livescript - 자바스크립트 Javascript

 

 

자바스크립트는 자바와 수년간 혼동을 일으켰다고 한다.

자바 = 자바스크립트? 

물론 지금도 혼동하는 사람들이 많다.

솔직히 개발관련 지식이 없으면 다 같은건줄 안다.

(대체로 살면서 자바란 단어를 한번쯤 들어보나보다. 그래서 자바스크립트가 자바인줄 안다.)

 

 

 

"Javascript로 개발해요~"

"아, 그거 저도 알아요! JAVA!"

 

...ㅎ;

 

 

 

자바스크립트는 자바와는 다르게 인터프리터 언어로 브라우저에서 실행되는 느슨한타입의 언어이다.

이건 자바스크립트 공부하면 무조건 첫장에 써있는 지식이다.

 

 

 

96년에는 ECMA와 썬, 넷스케이프가 협력해서 표준을 개발하기 시작했다고 한다.

ECMA가 European Computer Manufacturers Association인 줄 처음알았다.

지금 저렇게 검색해보면 기구의 국제적 확장을 위해 Ecma International로 이름을 바꾸었다고 한다.

 

 

그리고 여기서 개발한 언어를 에크마스크립트 ECMAScript라고 부른다. 

ES6, ES5ㅎㅎㅎㅎ 

 

 

 

그리고 이 모든 발전이 빠르게 될 수 있었던 것은 브라우저 전쟁도 한 몫 했을 것 같다.

언젠간 회사에서 이 주제를 준비해온 분이 있어서 약간 기억에 남는다.

 

 

 

돔 DOM은 document object model이며 문서객체모델, 도메인객체모델이라고도(?) 불리며 브라우저 API다.

돔을 통해 브라우저를 핸들링할 수 있다.

과거에는 브라우저가 지금처럼 좋지 않아서 DOM 접근하는데만해도 스파게티 코드가 필요했다고 한다.

상상만해도 힘들다.

스파게티라니, 배고픈 시간이라 힘들다.

 

 

과거 마이크로 소프트 브라우저의 점유율이 하늘을 찌를때,,

ECMAScript 일부만 구현해서 사용했다고 해서 개발자들은 기능 사용 참여를 잘 하지 않았다고 한다.

하지만 제이쿼리 Jquery, 도조 Dojo, 프로토타입 prototype 등의 라이브러리가 나오고 크로스브라우징이 쉬워져서 폭발적으로 사용이 증가했다더라.

 

나도 jQuery로 처음 JS를 접했는데, 역시 jQuery는 엄청나다. 

요즘은 React, Vue 점유율이 엄청난데,

기존 것을 버리고 새로 개발을 해야하기 때문에 jQuery를 버리지 못하는 기업들도 있다.

물론 우리회사도 마찬가지다.ㅎ;

 

 

마이크로 소프트에서 구글로 점점 점유율 이동이 시작된 전환점은 비동기방식의 지메일 애플리케이션이었다고 한다,

이 애플리케이션는 클라이언트사이드렌더링 방식의 SPA 페이지였고 유연한 사용자의 경험은 엄청난 대혁명이었다고한다.

 

나는 업무로는 서버사이드렌더링(SSR) 방식만 접해왔는데, React나 Vue 공부를 하면서 처음으로 SPA 방식을 접해봤다.

여튼, 지메일 애플리케이션 이후 자바스크립트의 수용이 증가했고 적절한 언어로 채택되는데 한몫했다고 한다.

 

Json은  XML보다 쉽고 덜 복잡하다 하지만 XML보다 엄격하지 않고 동반기술이 부족하다.

하지만 단순성이 단점들을 다 만회할만큼 사랑받고 있는데, 예전엔 Json이 뭐지 했었는데,

Javascript object notation 자바스크립트 객체 표기법이라고 한다, ㅎ;

솔직히 나도 XML 써본 기억이 없다.

 

커피스크립트 CoffeScript 

자바스크립트 가독성과 간결성을 개선한 파이썬Python과 유사한 언어라고 한다.

들어만 봤지 실제로 보진 못했다.

 

 

구글이 다트 Dart 를 자바스크립트의 대체물로 추진하고 있고 자바스크립트로 컴파일하는 변환기도 제공하고 있다고 한다. 

다트가 뭔가했는데, 플러터 프레임워크를 개발한 언어가 다트라고 한다.

나는 플러터에 대해 아는게 1도 없지만, 구글링해보면 얼마나 핫한지 알 수 있다.

 

마이크로 소프트는 타입스크립트 TypeScript라고 엄격한 문법을 지원하는 언어가 있다.

요즘 TypeScript 도 봐야할 것 같아서 간간히 보고 있기는 한데, 마이크로 소프트가 개발한줄은 몰랐다.;;

TypeScript도 구직시 우대에서 필수로 바뀌고 있는 것 같다.(실제로 필수인 곳도 많고)

 

또 0년차 시절 자바스크립트로 대체 뭘 할 수 있지? 생각 많이했었는데, 책에서도 또 소개되고 있다.

뭐.든 만들수있다. 라고...

전에 회사에서 자바스크립트로 응용프로그램을 개발하는 프로젝트가 있었다.

실제로 참여한것도 아니고 옆에서 본 것도 아니어서 정확히는 잘 모르겠다. 

브라우저, 로봇공학, 모바일, 서버..... 스프레드시트, 워드프로세서 등, 모든 것을 할 수 있다더라.

(실제로 지금 깃헙 프로그래밍 언어 통계 순위 1위가 자바스크립트라더라,

다만 통계처가 깃헙이므로 교류가 활발한 언어 순위 1위로 보는 것이 맞는 것 같다는 의견이 많다.)

 

 

자바스크립트로 작성할 수 있는 모든 애플리케이션은 결국 자바스크립트로 작성될 것이다.

- 자바스크립트 디자인패턴 중, 앳우드의 법칙

 

자 이제 역사 얘기는 지나가고,

애플리케이션이 복잡해질수록 디자인 패턴을 사용해야한다고 하는데, 디자인 패턴이란 뭘까.

 

그럼 디자인패턴이란?

패턴 = 정답? 은 아니다.

하지만 여러 개발자가 여러년에 걸쳐 겪었던 문제들을 패턴으로 만들어서 가이드라인을 제공하는 것이라고 한다.

방법에 대한 지시가 아닌, 문제 해결 도움에 대한 지침인 것이고 그래서 

어떠한 부분에 좋은 아이디어가 되었을 수 있지만 다른 부분에는 좋지 않을 수 있다.

 

안티패턴은?

좋은 패턴의 공통적인 패턴을 디자인패턴이라고 한다면

나쁜 패턴도 공통적인 패턴이 있을거고, 이것을 안티패턴이라고 한다.

 

책에서 예시가 두개 나오는데,

 

물방울 Blob 패턴,

용암흐름 Lava Flow 패턴

 

물방울 패턴은 God object로 알려져 있다, 광대한,... 로직의 책임을 맡고 있는 객체를 말한다.

용암흐름 패턴은 시간이 지나고,,, 지나고,,, 지나서 이 코드가 사용되는지 안되는지도 모르는데 남아있는 그런 코드들을 말한다고 한다.

 

실제로 업무를 하다보면 이런것들이 자주 눈에 띈다,

하지만 건들였다가 무슨일이 생길지 몰라서 넘어가는 경우가 허다하다.

 

그리고 중요한건 디자인패턴의 과용도 안티패턴의 한가지라고 한다.

 

내가 이 세상을 멀리 볼 수 있는 것은 거인의 어깨 위에 올라서 있기 때문이다.

- 자바스크립트 디자인패턴 중, 아이작 뉴턴 인용문

 

패턴은 쉽게 올라설 수 있는 어깨를 제공해준다.

- 자바스크립트 디자인패턴 중

 

1장은 간단하게 소개하는 형식이라 읽는데 얼마 걸리지도 않았다.

오히려 이거 쓰려고 다시 읽고 작성하는게 더 시간 걸린것 같은데 기억에 더 남기를 바랄뿐이다.

 

2-1은 Part1 전통적인 디자인패턴의 코드구성이다. 언제읽지

 

 

 

+ Recent posts