01장 프로그래밍
1.1 프로그래밍이란 ?
- 컴퓨터에게 실행을 요구하는 일종의 '커뮤니케이션'
- 해결해야 할 문제 == 요구사항, 명확히 이해한 후 적절한 문제 해결 방안 정의 => 문제 해결 능력
- 문제(요구사항)을 명확히 이해하는 것이 우선되어야 함.
- 복잡함을 단순하게 분해, 자료를 정리, 구분, 순서에 맞게 행위를 배열.
- 프로그래밍이란? 정확하고 상세하게 요구사항을 설명하는 작업. 결과물 : 코드
- 컴퓨터의 입장에서 문제를 바라봐야함. 이때 필요한 것이 Computaional thinking(컴퓨팅 사고).
- 논리적, 수학적 사고가 필요.
- 해결과제를 작은 단위로 분해하고 패턴화해서 추출.
- 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야 한다.
1.2 프로그래밍 언어
- 프로그래밍 언어란 : 인공어이다. 사람과 컴퓨터 모두가 이해할 수 있는 약속된 형태
- 프로그래밍 : 프로그래밍 언어를 사용해 컴퓨터에게 실행을 요구하는 일종의 '커뮤니케이션'
- 프로그래밍 언어 : 구문Systax(문법)과 의미semantics의 조합
1.3 구문과 의미
- 외국어 학습과 유사. 문법을 잘 안다고 해서 외국어를 잘한다고 말 할 수 없다.
- 문법에 맞는 문장을 구성하는 것은 물론 의미semantics를 가지고 있어야 언어의 역할을 충실히 수행 할 수 있다.
02장 자바스크린트란?
2.1 자바스크립트의 탄생
- 브렌던 아이크 Brendan Eich, 넷스케이프 내비게이터2 탑재. 96년 3월 모카. 9월 라이브스크립트. 12월 자바스크립트.
2.2 자바스크립트의 표준화
- 96년 8월. MS에서 파생버전인 JScript를 인터넷 익스플로러 3.0에 탑재.
- 넷스케이프 커뮤니케이션즈와 MS는 자사 브라우저의 시장 점유율 높이기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가.
- 정상적으로 동작하지 않는 크로스 브라우징 이슈 발생 : 모든 브라우저에서 정상적으로 동작하는 웹페이지를 개발하기가 어려워짐.
- 96년 11월에 컴퓨터 시스템의 표준을 관리하는 ECMA 인터내셔널에 표준화 요청.
- 97년 7월 표준화된 ECMAScript 1 초판 사양 완성. 99년 ECMAScript 3이 공개. 2009년 ECMAScript 5는 HTML5와 함께 표준.
- 2015년에 공개된 SCMAScript 6 큰 변화. (let/const, 화살표함수, 클래스, 모듈 등)
2.3 자바스크립틔 성장의 역사
2.3.1. Ajax
- 99년 비동기asynchronous 방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax가 XMLHttpRequest라는 이름으로 등장.
- 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링 하는 방식.
- 2005년 구글 맵스 : 자바스크립트의 가능성을 확인하는 계기. ( 데스크탑 애플리케이션과 비교했을 때 손색 없을 정도의 성능과 부드러운 화면전환 )
2.3.2. jQuery
- 2006년 jQuery 등장. DOM을 쉽게 제어. 크로스 브라우징 이슈도 어느정도 해결.
2.3.3. V8 자바스크립트 엔진
- 2008년 등장. 구글의 V8자바스크립트 엔진
- V8 자바스크립트 엔진의 등장으로 데스크톱 애플리케이션과 유사항 사용자 경험을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착.
- 과거 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했고, 프런트엔드 영역이 주목받는 계기로 작용.
2.3.4 Node.js
- 2009년 등장. 라이언 달이 발표한 구글의 V8 자바스크립트 엔진으로 빌드된 런타임 환경.
- 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경.
- 서버 사이드 애플리케이션 개발에 주로 사용.
- 프런트엔드와 백엔드 영역에서 자바스크립트를 사용할 수 있다는 동형성은 장점.
- 비동기 I/O, 단일 스레드, 이벤트 루프 기반으로 동작. 요청 처리 성능이 좋다.
- 데이터를 실시간 처리하기 위해 I/O가 빈번하게 발생하는 SPA에 적합.
- CPU 사용률이 높은 애플리케이션에는 권장하지 않는다.
- Node.js의 등장으로 자바스크립트는 브라우저를 벗어나 서버 사이드 애플리케이션 개발에서도 사용할 수 있는 범용 프로그래밍 언어가 됨.
2.3.5 SPA 프레임워크
- CBD방법론을 기반으로 하는 SPA가 대중화됨.
2.4 자바스크립트와 ECMAScript
- ECMAScript는 자바스크립트의 표준 사양인 ECMA-262를 말하며, 핵심 문법 규정.
- 자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript + 브라우저가 별도 지원하는 클라이언트 사이즈 Web API,
즉 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storate, Web Component, Web Worker 등을 아우르는 개념.
- 클라이언트 사이드 Web API는 W3C에서 별도의 사양으로 관리하고 있다. (World Wide Web Consortium ; W3C ; 월드 와이드 웹 콘소시엄)
2.5 자바스크립트 특징
- 웹 브라우저에서 동작하는 유일한 프로그래밍 언어.
- 컴파일 작업을 수행하지 않는 인터프리터 언어
- 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어.
2.6 ES6 브라우저 지원 현황
- 인터넷 익스플로러나 구형 브라우저는 ES6를 지원하지 않음.
- 구형 브라우저를 고려해야 하는 상황이라면 바벨과 같은 트랜스파일러를 사용해 ES5 이하의 사양으로 다운그레이드.