1. 자바스크립트의 좋은 점들
우선 이 책이 다른 책들과 다른 점을 소개한다.
좋은 점만 초점을 맞추고 나쁜점은 몇가지 예외를 제외하고 안다룬다고
이유는 이러하다.
"좋은 점만 배움으로써 얻을 수 있는 최대의 이점은 나쁜 점을 잊어야 하는 수고를 덜 수 있다"
그리고 초보용 부분집합이아니라 전문가를 위한 자바스크립트 부분집합을 다룬다.
(난 초보자인데 어쩌지...)
1) 왜 자바스크립트인가?
자바스크립트는 웹 브라우저의 언어이기 때문에 가장 유명하고 중요하지만
그와 동시에 가장 무시 당하고 있는 언어이다.
브라우저의 API라고 할 수 있는 DOM은 아주 형편없는데 거기에 편승하여 같이 부당한 비난을 받는다. DOM은 어떠한 언어로 다루든지 용이하지 않다.
그리고 자바스크립트의 놀라운 점은 언어 자체에 대해서 많이 모르거나 프로그래밍에 대해 잘 모르더라도 원하는 작업을 할 수 있다.
(이러한 이유로 진입장벽이 낮아서 나도 배우고있는거 같다.)
2) 자바스크립트 분석
함수, 느슨한 타입체크, 동적 객체, 표현적인 객체 리터럴 표기법 등이 좋은 점이고
나쁜 점은여러가지가 있지만 프로그래밍 모델이 전역변수에 기초하고 있다는거다.
자바스크립트의 함수는 어휘적 유효범위를 가진 일급 객체 이고 주류가 된 첫 번째
람다 언어이며 좀 더 깊이 들어가보면 자바에 가깝기 보다는 Lisp 언어
그리고 Scheme언어 와 많은 공통점이 있다.
오늘날 프로그래밍 언어는 강력한 타입 체크를 요구하는데
컴파일러가 컴파일 시간에 가능한 많은 오류를 찾을 수 있다는 이론에 근거 한다.
하지만 자바스크립트는 느슨한 타입 체크 언어이기 때문에 타입 오류를 찾을 수 없는데
하지만 강력한 타입 체크가 중요한 오류들을 효율적으로 제거하지 못한다는 것이 판명되었고
경험에 의해서도 강력한 타입 체크가 오류를 알려주기는 하지만 실제로 우려하는 오류들을 알려주지는 못한다.
반면 느슨한 타입 체크에서 발견한 것은 오류 찾기의 어려움이 아니라 자유로움이다.
느슨한 타입 체크를 하는 언어를 사용하면 복잡한 클래스 계층을 구성할 필요도 없고 원하는 대로
동작하도록 타입 캐스팅과 씨름할 필요도 없다.
자바스크립트는 객체 리터럴 표기법이 있는데
단순한 필요한 요소들을 열거하는 방법으로 객체를 만들 수 있다.
자바스크립트는 프로토타입에 의한 상속 이며
클래스가 필요 없는 객체 시스템이 있어서 특정 객체에 있는 속성들을 다른 객체에 직접 상속할 수 있다.
하지만 이러한 점이 클래스 기반의 언어에 익숙한 프로그래머에게는 어려운점이다.
(난 다른 언어는 잘 몰라서 공감은 안되지만 이해는 된다.)
그리고 자바스크립트는 특별히 잘못 선택된 점이 하나 있는데 전역변수에 근간을 두고 있다.
왜 잘못된 점이냐면 모든 컴파일 단웨이 있는 최상위 레벨의 변수들은 모두 전역객체라 불리는
공용 이름 공간에 위치하게 됩니다.
전역변수는 나쁘기 때문에 이러한 개념은 좋지 않지만 이것이 자바스크립트의 근간을 이루는 것 중에 하나다. 그리고 이러한 문제를 완화시킬 수 있는 방법이 있다는 것이다.
자바스크립트는 모순이 많은 언어이고 오류도 많지만 왜 사용해야하는가?
선택의 여지가 없다. 웹은 애플리케이션 개발에 있어 중요한 플랫폼이며, 모든 브라우저에서 사용할 수 있는 유일한 언어이기 때문이다.
그리고 부족한 면이 있기는 하지만 실제로 꽤 괜찬고 매우 경량화돼 있으며 표현적이다.