AI VIDEO BRIEFING

제레미 애시키너스: underscore·CoffeeScript·Backbone으로 자바스크립트를 바꾼 개발자

2009년 형편없던 자바스크립트를 현대적 언어로 끌어올리는 데 기여한 제레미 애시키너스와 그가 만든 underscore.js, CoffeeScript, Backbone.js의 이야기를 정리했습니다.

자바스크립트를 구해낸 잊혀진 개발자, 제레미 애시키너스의 세 가지 도구 영상 대표 이미지

핵심 메시지

  • 2009년의 자바스크립트는 표준 라이브러리·모듈·클래스가 없고 브라우저마다 해석이 달라 악명 높은 언어였다.
  • 제레미 애시키너스는 이 언어를 고칠 수 있다고 믿고 실제로 도전한 드문 개발자였다.
  • 그는 약 60개의 헬퍼 함수를 담은 underscore.js로 빈약한 표준 라이브러리 문제를 메웠다.
  • 자바스크립트로 컴파일되는 새 언어 CoffeeScript를 만들어, 표준화 위원회를 기다리지 않고 더 나은 문법을 제공했다.
  • Backbone.js로 프런트엔드에 MVC 구조를 처음 안겨, 대규모 클라이언트 앱을 무너지지 않게 만들었다.

쉽게 이해하기

오늘날 자바스크립트는 세계에서 가장 인기 있는 프로그래밍 언어로 꼽히지만, 2009년만 해도 사정이 전혀 달랐다. 단 10일 만에 설계된 것으로 유명한 이 언어는 표준 라이브러리도, 모듈도, 클래스도 없었고 브라우저마다 해석이 달랐다. 직접 자바스크립트를 다루는 일은 기피 대상이었다. 영상은 그런 자바스크립트가 한 세대에 걸쳐 '진짜 프로그래밍 언어'로 격상되는 데 가장 저평가된 공로자로 한 사람, 제레미 애시키너스(Jeremy Ashkenas)를 지목한다.

2009년 애시키너스는 DocumentCloud에서 당시로서는 드물었던 무거운 클라이언트 사이드 자바스크립트 애플리케이션을 맡고 있었다. 루비(Ruby) 배경을 가졌지만 자바스크립트를 써야 했던 그는, 모두가 현실에 체념할 때 '이걸 고칠 수 있다'고 생각한 드문 사람이었다. 그의 첫 작업은 표준 라이브러리의 부재를 메우는 일이었다. 당시 파이어폭스는 map·reduce·forEach 같은 배열 헬퍼를 일부 지원했지만 인터넷 익스플로러는 아직 그렇지 않아, 폴리필 없이는 쓸 수 없었다.

이를 해결하기 위해 그는 배열과 객체를 다루기 쉽게 해주는 약 60개의 헬퍼 함수를 담은 유틸리티 라이브러리 underscore.js를 내놓았다. 지금 보면 평범하지만, 당시 웹 개발 환경에서는 큰 도움이 되었다. underscore는 큰 인기를 끌었고, 그 기능 중 상당수가 자바스크립트 언어 자체에 흡수되면서 결국 스스로 필요 없어지는 운명을 맞았다.

다음으로 그는 기존 자바스크립트에 라이브러리를 덧붙이는 대신, 자바스크립트로 컴파일되는 완전히 새로운 언어 CoffeeScript를 만들었다. 클래스가 없어 prototype에 속성을 수동으로 붙여 상속을 흉내 내야 했고, 변수 선언의 호이스팅 규칙은 기이했으며, 함수를 정의할 때마다 function이라는 단어를 일일이 타이핑해야 했던 시절이었다. 새 언어를 만들면 표준 위원회나 브라우저 벤더를 기다리지 않고 이런 문제들을 고칠 수 있었다. CoffeeScript는 한동안 큰 인기를 끌어, 2011년 Rails 3.1의 기본 자바스크립트 프리프로세서로 채택되면서 새로 만들어지는 모든 Rails 앱의 프런트엔드가 CoffeeScript로 작성되었다. GitHub, Dropbox를 비롯한 2010년대 초 스타트업들이 이를 받아들였다. 오늘날 CoffeeScript는 그 장점들이 자바스크립트 자체에 흡수되며 사실상 사라졌지만, 클래스·화살표 함수·기본 매개변수·전개 연산자·문자열 보간·구조 분해 같은 기능들이 그 영향의 흔적이다.

마지막 과제는 자바스크립트 애플리케이션을 제대로 '구조화'할 방법이 없다는 것이었다. 큰 클라이언트 앱을 만들면 데이터·DOM 조작·이벤트 핸들러가 뒤엉킨 수천 줄의 스파게티 코드가 되기 일쑤였다. 그래서 2010년 그는 2,000줄도 안 되는 작은 라이브러리 Backbone.js를 발표해, 프런트엔드에 처음으로 진짜 MVC를 안겼다. 데이터를 담는 모델, 모델의 묶음인 컬렉션, 렌더링을 위한 뷰, 그리고 이들을 손으로 엮지 않아도 동기화해 주는 이벤트 시스템을 도입했다. Backbone은 Trello, Airbnb, Hulu, Pinterest 등 2011~2014년 사이 진짜 프런트엔드가 필요했던 거의 모든 스타트업의 초기 버전을 떠받쳤다. 이후 Angular, Ember, 그리고 React가 그 핵심 아이디어를 더 밀고 나가며 Backbone을 대체했지만, 클라이언트 중심의 무거운 앱을 실제로 만들 수 있음을 증명한 것은 Backbone이었다. 현대 웹은 그를 기억하는 이가 거의 없어도 애시키너스가 개척한 아이디어들 위에 서 있다.

주요 인사이트

  • 좋은 도구의 성공은 때로 '스스로를 불필요하게 만드는 것'으로 완성된다. underscore와 CoffeeScript의 기능들이 자바스크립트 표준에 흡수되며 두 도구는 소멸했지만, 그것이야말로 언어를 끌어올린 증거다.
  • 언어 자체를 바꾸기 어려울 때, 그 언어로 컴파일되는 상위 언어를 만드는 것은 표준화의 느린 속도를 우회하는 효과적인 전략이었다. CoffeeScript가 그 사례다.
  • 오늘날 당연하게 쓰는 클래스, 화살표 함수, 전개 연산자, 문자열 보간, 구조 분해 같은 문법의 뿌리에 CoffeeScript의 실험이 있다.
  • Backbone은 결국 React 등에 자리를 내줬지만, '클라이언트 중심의 대규모 앱이 가능하다'는 것을 처음 증명함으로써 후속 프레임워크의 길을 닦았다.
  • 기술 발전의 공은 최종 승자에게 쏠리기 쉽지만, 길을 처음 낸 사람의 기여는 흔히 잊힌다는 점을 이 이야기는 보여준다.

자주 묻는 질문

2009년의 자바스크립트는 무엇이 문제였나요?

표준 라이브러리, 모듈, 클래스가 없었고 브라우저마다 해석이 달랐습니다. map·reduce 같은 배열 헬퍼도 일부 브라우저에서만 지원돼 폴리필이 필요했고, 함수를 정의할 때마다 function을 일일이 써야 하는 등 불편이 많았습니다.

제레미 애시키너스가 만든 세 가지 도구는 무엇인가요?

약 60개의 헬퍼 함수를 담은 유틸리티 라이브러리 underscore.js, 자바스크립트로 컴파일되는 새 언어 CoffeeScript, 그리고 프런트엔드에 MVC 구조를 안긴 Backbone.js입니다.

CoffeeScript와 Backbone.js는 지금도 쓰이나요?

둘 다 사실상 현역에서 물러났습니다. CoffeeScript의 장점들은 자바스크립트 자체에 흡수되었고, Backbone은 Angular·Ember·React가 그 아이디어를 발전시키며 대체했습니다. 다만 두 도구는 현대 자바스크립트와 프런트엔드 프레임워크의 토대가 되었습니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗
#자바스크립트#CoffeeScript#BackboneJS#프런트엔드#웹개발역사