티스토리 뷰


필자는 예전부터 컴퓨터에 관심을 갖게 되었고 그 관심이 이어져 컴퓨터공학을 전공하게 되었는데, 그 시작은 바로 웹(Web)이였다. 그 당시에는 자바스크립트(JavaScript)는 보조도구[각주:1]에 지나지 않았지만, 지금은 가장 폭발적으로 성장 및 확장을 하고 있는 개발언어가 되었다. 아직 어떻게 발전할지 얼마나 발전하지, 언제까지 발전할지는 미지수 있지만 '현재 웹브라우저에서 할 수 있는 모든걸 할 수 있다'라고 말할 수 있고 심지어 데스크탑 영역의 응용프로그램[각주:2]이나 서버[각주:3], 또 모바일[각주:4]까지 자바스크립트로 개발된다.


물론 이런 방향은 예전부터 있어왔지만 지금처럼 큰 바람을 만들진 못했었다. 그 이유는 여러가지가 있겠지만, 그것은 나중에 다루고 오늘은 자바스크립트 탄생의 배경을 남겨볼까한다. 물론 내가 남기는것보다 더 정확하고 많은 정보는 이미 인터넷에서 쉽게 찾을 수 있다. 그럼에도 내가 이렇게 글을 쓰는 이유는 상기 시키는 목적과 기록으로써 정보[각주:5]를 남겨놓고 싶은 마음이다. 


자바스크립트란?

현대 집단지성의 대표, 위키피디아(Wikipedia)의 설명[각주:6]에 따르면 '객체 기반의 스크립트 프로그래밍 언어이며 웹브라우져에서 주로 사용한다.'라고 나와 있다. 아래의 정의와 설명은 아주 간결하게 표현되어있다. 아래의 설명을 숙지하자.

자바스크립트(JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 사이드 네트워크 프로그래밍에도 사용되고 있다. 자바스크립트는 본래 넷스케이프 커뮤니케이션즈 코퍼레이션의 브랜던 에이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발하였으며, 최종적으로 자바스크립트가 되었다. 자바스크립트가 썬 마이크로시스템즈의 자바와 구문(syntax)이 유사한 점도 있지만, 이는 사실 두 언어 모두 C 언어의 기본 구문을 바탕했기 때문이고, 자바와 자바스크립트는 직접적인 관련성이 없다. 이름과 구문 외에는 자바보다 셀프와 유사성이 많다.

자바스크립트는 자바(Java)와 직접적인 관련성이 없다고 말하지만[각주:7] 언어적 특성이나, 종속적인 관계 말고 자바와의 연관은 당시[각주:8] 넷스케이프 커뮤니케이션즈와 썬 마이크로시스템즈의 관계를 보면 자바스러운 스크립트 언어를 만들고 싶었던게 당시 넷스케이프 커뮤니케이션즈에서 높은 사람들의 생각이였다. 물론 브랜던 에이크[각주:9]는 생각이 달라서 다른 언어들과는 다른 지금의 자바스크립트가 탄생했다.


자바스크립트의 대한 오해

브랜던 에이크 생각과 당시 개발 요구 사항은 괴리가 있었지만 브랜던 에이크는 그들이 원하는 '자바스러운[각주:10]' 스크립트 언어를 개발한다. 무서운 사실은 10일만에 인터프리터(Interpreter)까지 완성했다. 그 와중에 그가 하고 싶었던 스킴(Scheme)의 함수형 언어 특징[각주:11]을 최대한 반영했다. 그러면서 셀프(Self)라는 프로토타입형 객체지향 언어의 특징을 반영했는데, 이로인해 클래스형 개체지향 언어를 배운 사람들에게는 무시[각주:12]받는 경우도 많았다.


자바스크립트는 사용하다보면 이상한점이 많은 언어이다. 가장 간단한 예로는 실수 연산에 문제가 있다. 이건 너무나 당연[각주:13]한것이 당연하지 않게 발생[각주:14]해서 개발자들로 하여금 결함(?)들이 명백하게 인식되어 고쳐지는건 아니고 모두가 회피한다. 또, 클래스형 객체지향 언어보다 막강하다라고 할 수도 없다. 명확하게 들어난 단점과 수 많은 오해(?) 때문에 많은 개발자들은 아직도 자바스크립트하면 거부감을 감추지 않는다. 그래서인지 '보조도구'의 그림자는 아직도 완전히 벗지 못한 상태이다. 이렇게 자바스크립트는 탄생부터 '보조도구'로 기획되었고 그 실수로 인해 많은 이들이 자바스크립트는 무시했지만 지금은 주목을 받고 있다. (조연이 주연을 못하랴..)


다음 포스트는 자바스크립트의 '보조도구'로써 어떤 일을 했나와 '보조도구'가 아닐 수 있다라는 생각을 많은 사람들이 공감하게 되었는지 쓸 예정이다. 

  1. 현재의 개념이 없었거나, 상상도 안했던건아니였다. 하지만 이렇게 구체화 되어있진 않았다. [본문으로]
  2. Electron [본문으로]
  3. Node.js [본문으로]
  4. cordova [본문으로]
  5. 몇개월, 몇년 뒤에 다시보면 새롭게 느껴질때가 많다. [본문으로]
  6. https://ko.wikipedia.org/wiki/자바스크립트 [본문으로]
  7. JavaScript의 상표는 오라클이 소유하고 있다. [본문으로]
  8. 넷스케이프에 자바를 내장할려고 했고 스크립트언어도 추가할 생각하고 있었을때 [본문으로]
  9. 스킴을 만들려고 넷스케이프 커뮤니케이션즈에 입사했다. [본문으로]
  10. 꼭 자바스러운 스크립트 언어가 아니라 자바나 C 처럼 생긴 스크립트 언어를 구상했다. [본문으로]
  11. 가이 스틸(Guy L. Steel)과 제럴드 서스만(Gerald Sussman)이 설계한 스킴은 리스프(Lisp) 언어의 큰 두 갈래 중 하나다. 다른 큰 갈래인 커먼 리스프(Common Lisp)가 상업적인 지원과 뛰어난 성능, 실용성 등으로 업계에서 널리 쓰인 것에 비해 스킴은 함수형 언어로서 리스프의 깔끔함과 아름다움을 정의해 주로 학계에서 교육에 많이 사용되었다. MIT의 프로그래밍 교육 교재로 널리 알려진 『컴퓨터 프로그램의 구조와 해석(Structure and Interpretation of Computer Program: SICP)』에서 프로그램을 가르치는 데 쓰인 언어로 널리 알려졌다(최근 수업에서 사용하는 언어를 파이썬으로 바꿨다). 마법사 책이란 별명이 있는 이 책은 복잡한 프로그램을 작은 함수형 모듈을 이용해 점진적으로 구현해가는 법을 가르치며 많은 개발자에게 함수형 스타일과 설계 방법을 매혹시켰다. 실제로 브랜던 에이크도 SICP를 통해 스킴에 빠졌으며 웹 브라우저에 내장되는 스킴을 구현하고자 하는 목표를 세우게 된다. [본문으로]
  12. '클래스도 없는 장난감 언어'라는 조롱을 받는다. [본문으로]
  13. IEEE 754 방식 부동소수점 연산 - http://steve.hollasch.net/cgindex/coding/ieeefloat.html [본문으로]
  14. 사람은 3.14 + 3.14가 3.14 * 2인걸 알아서 자바스크립트가 멍청해보인다. [본문으로]
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크