프로그래밍과 컴퓨팅 사고
프로그래밍
요구사항을 정확하게 이해한 후 코드로 적절한 문제 해결 방안을 정의하는 것
컴퓨팅 사고
컴퓨터와 사람은 사고, 인지의 방식이 다르다. 따라서, 컴퓨터의 관점에서 문제를 사고해야 한다.
해결 과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야 한다.
예를 들어, '듣다'라는 행위는 사람에게는 당연한 하나의 기능이다. 또한, 소리가 '크다'/'작다'라는 표현은 상대적인 개념으로 기준이 불명확하다. 따라서, 컴퓨터에게는 "현재 볼륨보다 1단계 크게 조정하라", "볼륨을 60으로 조정하라"와 같이 양적 개념인 숫자를 사용해 명령해야 한다.
프로그래밍 언어
프로그래밍 언어를 통해 컴퓨터에게 명령을 전달하고, 컴퓨터는 컴파일러 또는 인터프리터를 통해 전달받은 프로그램을 기계어로 변환하여 이해한다.
const number = 'string';
console.log(number * number) // NaN
위 예제는 문법적으로 전혀 문제가 없지만 number라는 이름의 변수에 문자열이 할당되어 있기 때문에 의미적으로 옳지 않다.
프로그래밍을 할 때는 문법과 의미가 부합하도록 코드를 작성해야 한다.
문제 해결 능력을 통해 만든 해결 방안은 프로그래밍 언어의 문법을 사용해 코드로 표현한다. 즉, 작성된 코드는 해결 방안의 구체적 구현물이다. 그리고 이 구현물은 요구사항이 해결(문제 해결)되어야 의미가 있다.
결국, 프로그래밍은 요구사항 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다.
자바스크립트의 역사
자바스크립트의 탄생
1995년, 약 90%의 시장 점유율로 웹 브라우저 시장을 지배하던 넷스케이프 커뮤니케이션즈가 정적인 HTML을 동적으로 표현하기 위해 브렌던 아이크가 개발한 자바스크립트를 도입했다.
자바스크립트의 표준화
1996년 마이크로소프트가 JavaScript의 파생 버전인 JScript를 출시하고, 넷스케이프 커뮤니케이션즈와 마이크로소프트는 자사 브라우저의 시장 점유율을 높이기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하기 시작했다. 이로 인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생했고, 이러한 자바스크립트의 파편화를 방지하고 모든 브라우저에서 정상적으로 동작하도록 하기 위해 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구 ECMA 인터내셔널에 넷스케이프가 자바스크립트의 표준화를 요청한다. 이후 표준화된 자바스크립트는 상표권 문제로 ECMAScript로 명명되었다.
Ajax
1999년에 등장한 JavaScript를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능이다. 이전의 웹페이지는 HTML 코드를 서버로부터 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작했다. 따라서 화면이 전환될 때마다 새로운 HTML을 전송받아 웹페이지 전체를 처음부터 다시 렌더링해 성능이 좋지 않았다. Ajax의 등장으로 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링하는 방식이 가능해졌다. 웹 브라우저에서도 데스크톱 애플리케이션과 유사한 빠른 성능과 부드러운 화면 전환이 가능해졌다.
jQuery
2006년 jQuery의 등장으로 DOM을 쉽게 제어할 수 있게 되었고 크로스 브라우징 이슈도 어느정도 해결되었다.
V8 자바스크립트 엔진
구글 맵스를 통해 웹 애플리케이션 프로그래밍 언어로서의 가능성이 확인된 JavaScript로 웹 애플리케이션을 구축하려는 시도가 늘면서 더욱 빠르게 동작하는 자바스크립트 엔진의 필요성이 커지면서 등장하였다. V8 자바스크립트 엔진이 등장하면서 자바스크립트의 발전으로 과거 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했고, 이는 웹 애플리케이션 개발에서 프론트엔드 영역이 주목받는 계기로 작용했다.
Node.js
2009년 등장한 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다. Node.js는 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경이다. Node.js는 주로 서버 사이드 애플리케이션 개발에 사용되고, 이에 필요한 모듈, 파일 시스템, HTTP 등 빌트인 API를 제공한다. Node.js는 데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA에 적합하다.
자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 Web API (DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web storage, Web Component, Web Worker 등을 아우르는 개념이다. 또한, 자바스크립트는 프로토타입 기반의 객체지향 언어이다.
참고
'JavaScript > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
6. 제어문 (0) | 2022.07.22 |
---|---|
5. 연산자 (Operator) (0) | 2022.07.22 |
4. 데이터 타입 (Data Type) (0) | 2022.07.21 |
3. 표현식과 문 (0) | 2022.07.20 |
2. 변수 (0) | 2022.07.18 |