728x90
728x90
자바스크립트의 특징과 학습할 내용의 큰 그림을 그리는 단원으로 정말 기본부터 다루며, 자스는 웹브라우저에서 동작하는 프로그래밍 언어이며, 자스는 어떤 프로그래밍 언어인지 살펴봅니다. 앞으로 포스팅에선 '자바스크립트'를 '자스'나 'JS'로 줄이겠습니다.
1. 프로그래밍 언어로서의 자스
2. 자스의 역사
1. 프로그래밍 언어로서의 자스
프로그래밍 언어
- 컴퓨터 프로그램을 작성하기 위한 언어
- 소프트웨어의 동작(알고리즘)을 설명하기 위한 언어
- 프로그래밍 언어로 프로그램을 개발하는 것 : 프로그래밍
- 프로그래밍 언어로 작성한 프로그램 : (소스)코드
- 사용 이유 : 컴퓨터는 기계어만 이해하는데 사람이 다루기 어려워 고수준 소프트웨어의 개발에 맞지 않아 프로그래밍 언어를 사용
- 이에 따라 작성된 프로그램은 기계어로 번역되어 컴퓨터가 실행
컴파일
- 소스코드를 실행하기 앞서 기계어로 번역하는 것
컴파일러
- 컴파일을 수행하는 소프트웨어
컴파일 언어
- 소스 코드 여러개를 하나로 묶어 컴파일 후 실행하는 프로그래밍 언어
- C, C++, Java, Object C 등
- 컴파일에 시간이 걸리나 실행되는 속도가 빠름
인터프리터 언어
- 프로그램을 한줄마다 기계어로 번역해서 실행하는 프로그래밍 언어
- Javascript, LISP, Perl, Ruby, Python
- 장점 : 프로그램을 바로 실행할 수 있고 동작을 확인하며 프로그램 개발을 할 수 있다
- 단점 : 한 줄 한 줄 기계어로 번역하며 실행해서 컴파일언어보다 처리 속도가 느리다
인터프리터
- 프로그램을 번역해 실행시키는 소프트웨어
프로그램을 만들어 가는 방식에 따른 프로그래밍 언어의 분류
- 절차적 언어 : 절차를 순서대로 작성해 나감
- 객체 지향 언어 : 처리과 관련된 데이터와 절차를 하나로 묶어 객체 단위로 관리
- 함수형 언어 : 프로그램을 함수로 조합하여 구현해 나감
- 논리형 언어 : 데이터 사이의 관계와 논리를 설명해 나감
- 자바스크립트 : 함수형 언어의 특징을 가진 객체지향 언어
2. 자바스크립트의 특징
강력하고 유연한 알고리즘 표현 능력을 갖춘 프로그래밍 언어인 자바스크립트 특징은 아래와 같으며 함수가 일급 객체인 점, 클로저를 이용할 수 있다는 점, 동적 프로토타입 기반의 객체지향언어 라는 점이 자스를 다른 언어보다 더 강력한 프로그래밍 언어로 만들었다.
1. 인터프리터 언어
- 대부분의 웹브라우저에 실행시간에 자바스크립트 코드를 컴파일하는 JIT (Just In Time Complier) 컴파일러가 내장되어 실행 속도가 빨라짐
- 이는 자바스크립트를 활용한 고기능 웹 애플리케이션을 구현할 수 있게 해줌
2. 동적 프로토타입 기반 객체 지향 언어
- 클래스가 아닌 프로토타입을 상속하는, 프로토타입 기반 객체 지향 언어
- 객체 생성 뒤에도 프로퍼티와 메서드를 동적으로 추가, 삭제 가능
3. 동적 타입 언어
- 프로그램을 실행하는 도중에 변수에 저장되는 데이터 타입이 동적으로 바뀔 수 있다.
- 그래서 변수 타입이 없다
- 실행 전에 변수 타입이 결정되는 정적 타입 언어랑 다르다
4. 함수가 일급 객체
- 자스의 함수는 객체이며 함수에 함수를 인수로 넘길 수 있다 = 일급 객체 (First class object)
- 이 특성을 활용하면 고차 함수를 구현할 수 있어 함수형 프로그래밍이 가능해짐
5. 함수가 클로저를 정의
- 자바스크립트의 함수는 클로저를 정의한다
- 클로저로 변수를 은닉하거나 영속성 보장 등 다양한 기능을 구현
3. 자바스크립트의 기술적 요소
1. ECMAScript (코어 언어)
- 자스의 핵심기술은 ECMAScript로 규정
- ECMAScript : Ecma International 이라는 조직의 TC-39위원회가 표준화 작업을 하고 있고 ECMA-262 라는 문서로 공개하고 있다
- 최신 버전은 ECMAScript8 (2017)
- 자스를 배울 때 코어 언어의 내용부터 제대로 이해해야 한다.
2. 클라이언트 측의 고유한 기술 요소
- 웹 브라우저에서 동작하는 자바스크립트 : 클라이언트 측 자바스크립트
- ECMAScript가 규정한 코어 언어와 웹 브라우저의 API (Application Program Interface)로 구성
웹 브라우저의 주요 API
- Window 인터페이스 : 자스로 브라우저나 창을 조작하는 기능 제공
- DOM : 자스로 HTML 문서 요소를 제어하는 기능 제공
- XMLHttpRequest : 서버와 비동기로 통신하는 기능 제공
HTML5에서 규정한 다양한 API
- Drag and Drop : HTML 요소나 파일을 드래그해서 다른 요소에 드롭할 때 데이터를 전달
- Blob : 이진 데이터를 다루는 기능
- File : 로컬 파일 시스템을 읽고 쓰는 기능 제공
- Web Workers : 여러 프로그램을 멀티스레드로 병렬 처리하는 기능 제공
- Web Storage : 저장 기간에 제한이 없는 대용량데이터를 로컬에 저장하는 기능 제공
- Indexed Database : 로컬에 key-value 타입의 관계형 데이터베이스 기능 제공
- WebSockets : 서버와의 양방향 통신 기능 제공
- Geolocation : GPS 등의 위치 정보 핸들 기능 제공
- Canvas : 2, 3차원 그래픽스 기능 제공
3. 서버 측 자바스크립트의 고유한 기술 요소
- 웹 서버에서 동작하는 자바스크립트 : 서버 측 자바스크립트
- 웹 서버 구현에는 펄, PHP, 파이썬, 루비, 자스 등의 프로그래밍 언어가 사용
서버 측 자바스크립트 실행 환경의 구현체
- Node.js : 구글이 개발한 자스 실행 환경. 웹 애플리케이션 제작에 자주 사용
- Rhino : 오픈 소스로 개발되어 Mozilla가 관리하고 있는 자스 실행 환경
- Aptana Jaxer : Aptana 사가 개발, 현재 오픈 소스로 개발되고 있음
4. ECMAScript 6
- 2015.06에 권고된 새로운 ECMAScript 버전
- ECMAScript 2015 라고도 부름
- 이전 자스 버전과의 호환성을 보장하면서 다른 프로그래밍 언어가 제공하는 다양한 기능을 추가
- 이전 버전은 ECMAScript5 (2009)
- 이터레이터와 제너레이터는 새로운 프로그래밍 패러다임을 제시해줌
새롭게 제공되는 주요 기능
http://kangax.github.io/compat-table/es6/
- ECMAScript 2016도 발표되었으며 거듭제곱연산자, Array.prototype.includes() 가 추가됨
- ECMAScript 2017도 사양 지정 작업 진행중
- SIMD(Single Instruction /Multiple Data) 로 데이터 수준의 병렬 연산 지원, Async Function으로 비동기처리작성지원, Decorators로 클래스에 기능 더하기, 객체의 잔여 프로퍼티를 새 객체에 할당하는 Rest Properties 등을 도입할까 한다함
2. 자바스크립트의 역사
탄생
- 1995 넷스케이프 커뮤니케이션스의 Brendan Eich가 개발
- Netscape Navigator 2.0에 구현
- 1996 마이크로소프트사의 인터넷익스플로러 3.0에 탑재되었고 Java 애플릿으로 구현된 웹 브라우저의 보급과 맞물려 보급
- 초창기 익스플로러와 넷스케이프 네비게이터가 자스에 독자적 기능을 추가해 브라우저 간 호환성이 낮았음
- 1997 ECMAScript 표준화 진행, 각 브라우저는 본 사양을 따르도록 권고
- 구형 브라우저 제외 호환성 문제가 많이 잡힘
자스의 오명
- 오해 : 웹브라우저용 하급 스크립트 언어이며 본격적인 프로그래밍 언어라는 것은 오해
- 이유 : 본래의 언어 사양을 해설한 문서가 없었고 당시 웹브라우저의 기능과 처리 속도가 느렸기 때문
- 결과 : 웹페이지를 꾸미기 위해 간단하게 사용
- 변화 : 자스로 만든 구글 지도 등의 애플리케이션이 등장하면서 인식의 전환이 시작
- 구글 지도는 비동기 통신 기술 Ajax을 이용해 데스크톱 애플리케이션과 비교해도 손색없는 기능, 조작성을 실현
- 즉 자바스크립트는 스크립트 언어가 아닌 고성능의 웹 애플리케이션을 만들 수 있는 객체 지향 언어
- 2008년부터 HTML5 사양이 정해졌고 자스로 웹 애플리케이션을 만들 수 있는 다양한 API 가 등장
- 웹 브라우저 성능이 향상되며 대중적인 언어로 자리함
현재 / 미래
- 구글의 자바스크립트 엔진 V8 등은 강력하며 웹 브라우저 자체 기능이 좋아짐
- 웹 브라우저는 개발자에게 일종의 OS 같은 환경을 제공
- 웹 브라우저 위에서 동작하는 자스로 본격적인 웹 애플리케이션을 제작 가능
- 서버 측에도 Node.js가 보급되어 널리 퍼지는 중
- 곧 ECMAScript6의 기능을 이용한 강력한 모던 웹 애플리케이션이 많이 나올 것으로 기대 (과거 기준의 책이라 많이 나오는 중)
728x90
728x90
'Javascript' 카테고리의 다른 글
모던 자바스크립트 입문 : 3. 변수와 값 (0) | 2020.04.04 |
---|---|
모던 자바스크립트 입문 : 2. 프로그램의 작성법과 실행법 (0) | 2020.04.04 |
모던 자바스크립트 입문 : 0. 서론 및 예제 활용 방법 (0) | 2020.04.04 |
액티브X 위에 div 를 올리기 위한 시도 - 캡쳐 라이브러리 html2canvas (0) | 2020.04.02 |
classList 메소드 (0) | 2020.03.25 |