brunch

You can make anything
by writing

C.S.Lewis

by 개미 Jun 03. 2023

그럼에도 불구하고 자바스크립트-1

웹 세계의 공용어

“Any application that can be written in JavaScript, will eventually be written in JavaScript.”

- Jeff Atwood, Co-Founder of Stack Overflow



이 글은 자바스크립트에 대해 소개하는 글입니다.

총 3부작으로 작성하려 합니다.




0. 현실 그리고 인터넷에서의 공용어


미국의 달러는 더 이상 금과 연동되지 않는다. 1달러에 대한 가치는 1달러일 뿐이다. 

다른 그 어떤 것으로 비교할 수가 없다. 매일 변하기 때문이다.


달러는 이제 그 누구도 부정하기 어려운 국제 통용 결제 통화이다. 

미국이 양적완화를 하든, 정부 부채가 몇 경원을 넘든, 기준금리를 올리든, 연방준비제도에서 원하는 대로 한다고 해도 그것은 변하지 않는 사실이다. 다른 세력들은 그것을 무너뜨리려 하지만 여전히 어려워 보인다.


영어는 작성한 대로 읽히지 않는다. 어떨 때는 묵음이 되는 경우가 있고, 어떨 때는 프랑스어처럼 읽어야 할 때도 있다. 수많은 중국인에 의해서 중국어가 사용되고 있고 일본, 한국, 중국, 대만에서 한자를 사용한다지만 대부분의 사람들은 영어가 lingua franca(공용어)라고 인식한다.


UN에서 생산되는 모든 문서는 영어와 프랑스어로 작성된다고 한다. 

우리는 이미 영어로 작성된 행정절차로 합의하고, 영어가 표준인 세상에 살고 있는 셈이다.


현실은 달러와 영어의 세상이라면, 0과 1로 연결되는 디지털의 대표인 인터넷 세계는 어떨까?


전 세계를 "물리적"으로 연결하고 있는 해저 케이블. 국가 간의 인터넷을 가능하게 해 준다. (출처: https://www.submarinecablemap.com/)


먼저 인터넷이란 무엇일까?

인터넷은 생각보다 쉽다.


각 국이 같은 방식으로 통신하자고 프로토콜이라는 약속을 만들고, 

그 약속을 기반으로 한 통신을 전 세계를 엄청난 굵기의 전선으로 연결하여 왔다 갔다 하면 된다.


지구가 하나의 회사라면, 인터넷은 단지 거대한 사내망일 뿐이다.


인터넷에는 약속된 여러 프로토콜이 있다. 이메일 프로토콜, 웹 프로토콜 등.

나는 오늘 인터넷의 작은 부분인 "웹"에서 사용되는 언어인 Javascript를 얘기해보고자 한다.


현실에서도, 인터넷에서도 인간이 읽을 수 있는 대부분의 문서는 영어로 작성되어 있지만

그 대부분의 문서를 보여주는 프로그램에서는 Javascript라는 컴퓨터 언어가 해석되고 있기 때문이다.






1. Web의 공용어, Javascript.


원래 자바스크립트는 최초의 브라우저격인 Netscape에서 사용된 스크립트 언어였다.


스크립트 언어란, 프로그램(응용소프트웨어) 내에서 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어이다. 그러니까 원래 있는 프로그램 위에서 돌면서 그 프로그램을 제어하는 보조적인 역할이라고 보면 된다.


우리가 보는 인터넷 문서를 화면에 그려주는 웹 브라우저라는 프로그램에서 동작하면서, 

다소 단순해 보일 수 있는 문서를 화려하게 보여주고 약간의 기능을 더해주는 것에서 시작했다.


지금은 자바스크립트 자체를 사용하지 않으면 전체 페이지가 나오지 않는 웹 사이트가 많지만, 예전에는 그저 보조적인 언어였을 뿐 주력으로 사용되는 유명한 언어가 아니었다.


그리고 생각보다 자바스크립트는 엄청 오래되지 않았다.


세계 최초의 컴퓨터로 여겨지는 에니악(ENIAC)은 1946년쯤에 나왔고,

최초의 인터넷인 알파넷(혹은 아파넷, ARPAnet)은 1969년에 나왔다.


그리고 자바스크립트는 한참 뒤에 2000년대가 오기 5년 전인 1995년도에 탄생했다.

요새 20대 후반 사람들과 비슷한 나이라는 뜻이다.


그러니까, 자바스크립트도 MZ세대라 이말이다.


현재 웹 브라우저에서 보여주는 웹 문서의 클라이언트 문서 중 98.3%는 자바스크립트로 작성되어 있다.

https://blog.gitnux.com/javascript-statistics/


세상에 있는 모든 웹 페이지가 100개라고 가정한다면, 98개는 자바스크립트로 작성되어 있다는 뜻이다.

사실상 전부이다.


자바스크립트는 우리가 보여주는 웹 문서를 꾸며주는 역할만 하는 데에도 독점적인 위치에 있지만

지금은 단순히 웹 클라이언트(문서를 보여주는 측면)에서만 사용되지 않는다.


프로그래밍 언어 순위를 발표하는 TIOBE라는 곳이 있다.

이곳에 따르면 자바스크립트는 다른 전 세계 모든 언어 중에 7번째로 인기가 많은 언어이다.



TIOBE는 전 세계의 검색 엔진을 통해서 조사하여 나름대로 데이터를 정제한 후에 순위를 발표한다. 한 마디로 정확한 모수를 판단하기에는 다소 무리가 있다.


하지만, 전 세계 개발자들이 코드만 모아둔 곳에서 조사를 하면 어떨까?

전 세계 오픈소스 코드가 모여있는 github에서는 TIOBE와 약간 다르게 프로그래밍 순위를 발표했다.


github가 발표한 2022년 언어 통계 (출처: https://octoverse.github.com/2022/top-programming-languages)


깃허브(Github)에서는 자바스크립트가 언어 사용 1위라고 한다.


단순히 내가 자바스크립트를 좋아해서가 아니라, 개발자가 가장 많은 사이트 중에서도 오픈소스로 유명한 곳이 발표했다고 하니 전 세계에서 가장 많은 사람에게 작성되는 코드는 아마 자바스크립트이지 않을까 싶다.


이제 자바스크립트는 백엔드(클라이언트가 아닌 서버 측 애플리케이션에 사용되는 사이드)에서도 사용할 수 있는 언어가 되었다.


2009년도에 탄생한 Node.js라는 기술은 웹 브라우저에서만 사용하던 자바스크립트를 C++와 링크하여 이제 컴퓨터 로컬에서도 돌릴 수 있도록 만들었다.


유명한 운영체제들을 지원하기 시작하면서 점차 웹 서버에 사용되는 언어로 발전했고, 이제는 웹 프론트엔드와 백엔드를 모두 개발할 수 있는 "풀스택 프로그래머"라는 단어까지 탄생시켰다.







2. Universal 그리고 추상화


많은 사람들이 자바스크립트를 쉽게 사용한다.

신입 개발자는 자바스크립트의 모든 어려운 문법을 알지 못해도 뚝딱 예쁜 웹사이트를 만들어내곤 한다.


도대체 어떻게 이것이 가능한 것일까?

컴퓨터 프로그래밍에서는 추상화라는 개념이 있다.


한 줄로 정리하자면 복잡한 기능을 짧은 문구로 실행시킬 수 있는 것이다.

누군가가 이미 구현해 놓은 것에다가 이름을 붙여놓고, 사용하는 사람은 그 내부를 알지 않아도 그 이름만 수행하면 되는 것이다.


강아지에게 "물!"이라고 하면 알아서 가서 물을 가져오고, TV의 리모컨을 누르면 TV는 전기를 받아서 통신을 한 뒤 우리에게 영상을 보여준다.


이 과정에서 강아지의 관절이 어떻게 동작하는지, TV 내부의 반도체가 어떻게 설계되어 있는지는 우리의 알 바가 아니다. 그저 "물!"을 외치고 리모컨을 누르면 될 뿐이지.


모든 프로그래밍 언어는 추상화되어있는 것들이 많다. 운영체제를 통해 하드웨어를 동작시킬 때도, 파이썬을 통해 수학 문제를 계산할 때도 그에 맞는 API라는 TV의 리모컨이 있다.


그 리모컨만 잘 작동시키면, 누군가가 신뢰성 있게 구현해 놓은 기능을 알아서 가져다 쓸 수 있다.


Javascript는 이 추상화 위에서 크게 발전했다.


JQuery, Angular, React, Web API, 그것을 지원하는 모바일의 WebView 등의 기술들은 자바스크립트를 상세하게 몰라도 쉽고 빠르게 멋진 웹 사이트를 만들 수 있게 세상을 바꿔놓았다.


이런 추상화된 것들이 많아지고, 그런 기능들을 많이 사용할수록

기존의 것들에 더 많이 의존하게 되는 부작용을 낳았지만


Javascript가 Universal Web language로서 확고하게 자리 잡는 데에도 큰 몫을 했다.






3. King of Internet, 리액트를 만들다.


인스타그램의 창업 스토리를 담은 책 "노 필터"에서는

추후에 인스타그램을 인수하게 되는 페이스북의 창업자 마크 주커버그를 "인터넷의 왕"이라고 부른다.


PHP 몇 줄로 시작하여 세상에서 가장 거대한 소셜 네트워크가 된 전설적인 제품 페이스북을 만든 그가 인터넷의 왕이라고 불리는 것은 어쩌면 당연해 보인다.


가장 많은 사람들을 직접적으로 연결하고 소통하게 만들었기 때문이다.


페이스북은 페이스북 제품 그 자체가 아니어도 다른 것들을 많이 만드는데

그중 최근에 만든 역작 중에 하나가 "React"라는 프론트엔드를 개발하는 라이브러리이다.


리액트는 SPA를 구현하는 라이브러리 중 하나로, 자바스크립트로 만들어진 라이브러리다.

SPA니 라이브러리니 단어가 어려울 수 있으니 짤로 하나 설명해 보겠다.


대학교 조별과제에 임하는 우리 모습.gif

기존에는 서버에서 HTML 파일을 전달하여 웹 페이지를 만들었다면


요새는 클라이언트 사이드 렌더링(CSR)이라는 기술을 사용하는데, 대략적으로 말하면 자바스크립트 파일을 뭉텅이로 보내서 웹 브라우저에서 온갖 기능과 페이지를 보여주는 것이다.


페이스북은 거대한 SNS 페이지를 개발하면서 단일 페이지에서 부분적으로 바뀌면서도 느려지지 않는 기술이 필요했는데, 그것을 라이브러리로 만든 게 바로 React(리액트)이다.


아마존이 본인들이 남는 서버를 클라우드 서비스인 EC2로 승화했다면, 페이스북은 자신들이 필요한 클라이언트 측의 기술을 React로 담은 것이다.


리액트를 통해 작성된 Javascript 파일은 웹 페이지가 최초 로딩될 때 사용자의 웹 브라우저에서 호출되어서 혼자서 온갖 묘기를 부리며 웹 페이지를 깔끔하고 빠르게 동작시켜준다.


한마디로 위의 움짤의 댄서처럼 말이다.


자세한 React 라이브러리를 만들게 된 경위와 과정은 그에 관련한 다큐멘터리를 시청하면 알 수 있다.


리액트 다큐멘터리 ↓

https://youtu.be/8pDqJVdNa44


이 리액트는 특별한 동작방식과 철학으로 전세계 프론트엔드 개발 기술 시장을 휩쓸었고,

이제는 개발자라면 외면할 수 없는 기술이 되었다.


자바스크립트로 빚어진 회사가 다른 자바스크립트 기술로 세상을 바꾸고 있는 것이다.




이 글은 계속 수정됩니다.


2부에 이어서.


https://brunch.co.kr/@princox/260





참고할만한 글


1. 자바스크립트, 웹의 공용어

https://blog.codinghorror.com/javascript-the-lingua-franca-of-the-web/


2. 자바스크립트는 모든 곳에 존재한다.

https://dev.to/kais_blog/javascript-is-everywhere-5fo0


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