brunch

You can make anything
by writing

C.S.Lewis

by 감자빵 Nov 13. 2022

#2 뭘로 개발할지 알면 덜 고생하는 것들에 대해 1

자바&자바스크립트, 리액트&리액트 네이티브.. 그들은 왜 짝꿍이 아닌가


IT 도서 기획 편집자로 일하면서 가장 먼저 봉착한 난관은 자바와 자바스크립트의 상관관계였다. 그때 당시 머릿속에 입력된 '개발'이란 '프로그래밍 언어로 컴퓨터한테 일 시키는 것!'이었고 C 언어, 파이썬, 자바 같은 프로그래밍 언어를 그대로 외국 언어로 치환해 각국 언어로 지시하는 것이라 여겼다. 


근데 아뿔싸

같은 일도 구두로 지시하느냐, 지메일, 슬랙을 보내느냐, 노란색 포스트잇에 휘갈겨서 모니터에 붙여 놓느냐의 차이가 있었다. 또 지시하는 일이 결과물을 내는 것인지 효율성을 높이기 위한 것인지 등에 따라서도 지시 방식이 달랐다. 즉, 쉽게 말하면 개복잡하다.


아 집에 보내줘


맥락 없으면 이해 불가한 문과식 뇌로 이해한 바에 따르면 이 복잡한 현상은 우선 태초에 웹이 있음에서 출발했다.


1. 태초에 (WWW)이 존재했다.

2. 태초의 웹에는 유서 깊은 HTML/CSS가 쓰인다. HTML과 CSS는 쉽게 말하면 전시용 아이폰 14 같은 것이다. 내 명의로 개통이 안 됐다.

3. HTML은 [구매하기] 버튼 모양을 만드는 역할을 하고 CSS는 버튼을 꾸미는 역할을 한다.

4. HTML/CSS로 만든 전시용 아이ㅍ.. 아니 껍데기를 움직이게 하려면 JavaScript가 필요하다. 

5. JavaScript는 [구매하기] 버튼을 누르면 구매 페이지로 넘어가게 하는 역할을 하는 것이다!


여기까지가 웹 개발의 시작점이고 한때 인기 직업으로 꼽히던 웹디자이너, 웹퍼블리셔를 지망하던 이들이 학습하던 내용이다. 문제는 망할 천재 개발자들이 여기서 발전을 그치지 않았다는 것이다. 그들이 발전시켜버리고야 만 것은 다음과 같다.


- 앱의 태동

- 모바일 2대 운영 체제 iOS / android

- 개발을 용이하게 하기 위한 라이브러리들의 출현


우선 앱의 태동은 시대의 변혁에 발맞춘 어쩔 수 없는 자연재해 같은 것이다. 운영체제{Operating System, 일명 OS}란, 말 그대로 '시스템을 굴리는 것'으로 사실 컴퓨터를 켜 본 적이 있다면 누구나 알고 있는 것이다. 대표적으로 PC에선 윈도우에 쓰이는 마이크로소프트 윈도우, 맥에 쓰이는 맥 OS가 있다. 그외 리눅스, 유닉스 등이 있지만 살면서 접할 일이 없을 확률이 매우 높다.


문제는 우리가 매일 쓰는 스마트폰, 태블릿 등 모바일 기기에는 모바일용 운영체제가 따로 있다는 것이다. 모바일용 운영체제엔 갤럭시 폰에 들어가는 android, 아이폰에 들어가는 iOS가 대표적이다. 각 운영체제에 맞는 앱을 개발하는 데는 각기 다른 언어가 쓰인다.


android: Java, Kotlin 등

iOS: Swift, Objective-C


피타고라스가 인간이라 적절한 수명을 살고 사망했음에 감사했던 것처럼 모바일 운영체제가 대표적으로 iOS와 안드로이드에 불과한 것은 크나큰 다행이다. 아니었으면 개발자 인구가 줄었을 거고 인구는 발전하지 못했을 거고 나는 노래를 들으려 mp3를 챙겼을지도 모를 일... 스트리밍 최고


그런데 대표적 모바일 iOS가 두 개뿐이란 데 감사함을 못 느끼는 부지런한 인간들이 난 이걸 한 큐에 만들어버려야겠다며 이런 걸 만들어버렸다. 그의 이름은 React Native

놀랍게도 이 친구의 정체는 프로그래밍 언어가 아니다. 지금까지 JavaScript, Java, Swift가 프로그래밍 언어라면 이 친구의 정체는 JavaScript의 라이브러리{Library}다. 


라이...브러리..? 도..서관..?


머라누


이름을 왜 이렇게 지었는지 모르겠지만 쉽게 말하면 '누구나 갖다 쓸 수 있는, 그런데 남이 만든 것'이다. 디자인 분야로 치면 일종의 템플릿이라고 볼 수 있다. 재수없게 다른 조와 발표 PPT가 겹친 경험이 있다면 확 이해될 텐데... 즉, 세세한 기능을 하나하나 조립하듯이 만들 필요 없이 누가 '여기까진 조립해놨으니까 갖다 써!'라고 만들어 둔 것이 라이브러리다. 다만 이걸 붙일 몸체가 어디냐가 기반 언어인 셈이다. PPT 템플릿을 워드에 쓰는 게 아니라 파워포인트에 써야 하듯이 말이다. 즉, Reactive Native는 JavaScript라는 몸체에 쓸 수 있는 라이브러리인 셈이다.


그래서 한 언어에 수없이 많은 라이브러리가 존재할 수 있다. 실제로 JavaScript에는 어마한 양의 라이브러리가 있고 또 생겨나는 중이다. 


[참고: JavaScript 라이브러리 목록]

[참고: 가장 많이 쓰이는 JavaScript 라이브러리들]


구마내.. 아니야 구마나지 마.. 아니야 구마내.. 


라이브러리 외에 프레임워크란 개념도 있는데 라이브러리와 마찬가지로 '누구나 갖다 쓸 수 있는, 그런데 남이 만든 것'이지만 약간 그 개념이 다르다. 자세한 내용은 구글로... 





자, 그럼 시작점으로 돌아가 Java와 JavaScript는 어떤 관계가 있을까?


Java : 안드로이드 개발에 주로 사용하는 프로그래밍 언어로, 각잡고 공부해야 된다.

JavaScript : 웹 개발 프로그래밍 언어로, HTML/CSS와 짝꿍이고 라이브러리 수가 상당하다.


둘 사이는 생판 남남이었던 것이다!! ㄴㅇㄱ


비하인드 스토리가 있긴 하다. JavaScript 개발자 브렌던 아이크{Brendan Eich}가 당시에도 탑급 언어였던 Java처럼 무럭무럭 자라라는 마음을 담아 뒤에 그래도 자바만큼 무겁진 않다는 뜻의 Script를 붙여 지은 것이다. 김피타고라스 같은 느낌인가.



이제 '뭘로 뭘 만들 것인가'를 결정하려면 또 한 가지 알아 두어야 할 것이 있다. 바로 앱의 종류다. 여기에 따라 어떤 언어와 라이브러리를 사용할지가 결정된다. 이거슨 저도 현생을 살아야 하니 이어서 2편에서 정리해 보겠슴니다.





오늘의 추천 콘텐츠


문순이 비전공자의 부족한 지식이 미덥지 않다면, 최근 출간된 책 중 비전공자를 위한 개발 전반의 로드맵을 그려 주고 용어를 잘 설명한 책들이 있으니 이를 참고하는 것을 권한다. (다음 책들은 제가 기획 편집한 책도 아니므로 대충 친구가 갖고 있으면 빌려달라 해도 무방함니다.)


책 

[IT 좀 아는 사람] 닐 메타, 아디티야 아가쉐, 파스 디트로자 저

[1일 1로그 100일 완성 IT 지식] 브라이언 W.커니핸 저

[IT 5분 잡학사전] 니꼴라스 저

[비전공자를 위한 이해할 수 있는 IT 지식] 최원영 저 


이전 편 

#0 [들어가며. 어쩌다 앱 개발]

#1 [혼자 개발하기 전 알면 덜 고생하는 것들에 대해]


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari