Copyright © Origin Corp. All Rights Reserved.
v1.0.10
로딩 중입니다
행복에는 덕이면 충분하다안티스테네스
오늘 당신이 켠 거의 모든 웹사이트는, 한 사람이 10일 동안 만든 언어로 굴러간다.
1995년 5월, 넷스케이프는 위기였다.
넷스케이프는 당시 전 세계 웹 브라우저 시장을 사실상 독점하던 회사인데, 브라우저 안에서 간단한 계산이나 버튼 클릭 같은 동작을 처리할 언어가 없었다.
지금 당신이 웹사이트 입력창에 뭔가 쓰고 "이메일 형식이 틀렸어요"라는 메시지를 보는 것, 그게 다 없었던 거다.
경영진은 신입 엔지니어 브렌던 아이크에게 데드라인을 줬다.
단 10일.
아이크는 달렸고, Mocha라는 이름의 프로토타입을 만들어냈다.
이 Mocha가 나중에 이름을 몇 번 바꾸고, 오늘날 전 세계 인터넷을 움직이는 자바스크립트가 된다.
한 사람의 10일이 30년 이상의 인터넷 역사를 만들었다.

자바스크립트는 자바와 거의 아무 관계가 없다.
이름은 마케팅 부서가 붙였다.
Mocha는 곧 LiveScript로 이름이 바뀌었다.
그런데 1995년 말, 경영진이 결정을 내렸다.
당시 가장 뜨거운 신생 언어였던 자바의 이름을 빌리기로 한 거다.
자바는 선 마이크로시스템즈라는 회사가 만든 기업용 소프트웨어 언어다.
당시 기술 업계에서 자바는 마치 아이폰이 처음 나왔을 때처럼 모든 개발자가 주목하던 존재였다.
경쟁사가 "자바스크립트"라는 이름을 달고 나오면, 사람들이 자연스럽게 "아, 자바 계열이구나"라고 생각할 거라는 계산이었다.
하지만 두 언어는 만든 회사도 다르고, 작동 방식도 다르고, 쓰임새도 달랐다.
그냥 이름만 비슷하게 붙인 거다.
그렇게 LiveScript는 JavaScript라는 이름을 얻었다. 순전히 마케팅을 위해서.
30년이 지난 지금도, 자바스크립트의 가장 유명한 버그들은 그 10일의 흔적이다.
원래 아이크가 만들고 싶었던 건 스킴에 가까운 언어였다.
스킴은 수학자들이 쓰던 학술적인 함수형 언어인데, 함수를 레고 블록처럼 조립해서 프로그램을 만드는 방식이 특징이다.
하지만 경영진의 지시는 달랐다. "자바처럼 보이게 만들어."
두 세계가 뒤섞였고, 결과는 기괴했다.
빈 배열 두 개를 더하면 뭐가 나올 것 같은가.[] + []를 자바스크립트에서 실행하면 빈 문자열 ""이 나온다. 배열도 아니고 숫자도 아닌, 빈 문자열이다.
그뿐만 아니다.==와 ===라는 비교 연산자가 두 개 공존하는데, ==는 "타입이 달라도 어떻게든 비교해볼게"라고 작동하고, ===는 "타입까지 정확히 같아야 같다고 인정해"라고 작동한다.
오늘날에도 신입 개발자들이 가장 먼저 부딪히는 함정이 여기다.
10일이라는 시간 안에 두 언어의 철학을 동시에 만족시키려다 보니, 이런 이상한 동작들이 언어의 뼛속까지 박혀버렸다.
그리고 전 세계 수백만 개의 웹사이트가 이 규칙들 위에서 이미 돌아가고 있는 한, 바꿀 수가 없다.

한때 "장난감 언어"라 불리던 자바스크립트는 이제 NASA의 우주선과 넷플릭스 서버에서 동시에 돌아간다.
2009년, 엔지니어 라이언 달은 이상한 생각을 했다.
왜 자바스크립트는 브라우저 안에서만 돌아야 하는가.
당시 구글이 자바스크립트를 빠르게 실행하기 위해 만들어놓은 V8 엔진이 있었는데, 달은 이걸 브라우저에서 떼어내 서버 컴퓨터에 올려버렸다.
V8 엔진이란 쉽게 말해, 자바스크립트 코드를 읽고 컴퓨터가 이해할 수 있는 언어로 번역해주는 프로그램이다.
이걸 브라우저 밖으로 꺼냈다는 건, 특정 식당 주방에만 묶여 있던 요리사를 데려다가 어디서든 요리하게 만든 것과 비슷하다.
그게 Node.js다.
브라우저 안에서만 쓰이던 언어가 갑자기 서버도 만들고, 데스크톱 앱도 만들고, 심지어 우주선 제어 소프트웨어도 만드는 언어가 됐다.
오늘날 Node.js의 패키지 생태계인 npm에는 200만 개가 넘는 소프트웨어 부품이 올라와 있다.
세계에서 가장 큰 소프트웨어 부품 창고다.
10일짜리 프로토타입이 세상의 인프라가 됐다.
어쩌면 브렌던 아이크가 그 10일 동안 버텼기 때문에, 지금 이 글도 자바스크립트 위에서 당신 화면에 뜨고 있는 건지 모른다.
TTS 음성이 없어요.
아래 버튼으로 나레이션을 생성할 수 있습니다.
2
개