프로그래밍과 js의 기본 배경

정수·2023년 3월 18일
0

JavaScript

목록 보기
14/15
post-thumbnail

프로그래밍이란?

프로그래밍이란 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이며, 그 결과물이 바로 코드입니다.

문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 바라봐야 하는데 이때 필요한 것이 컴퓨팅 사고(Computational thinking)입니다.

이를 바탕으로 정의된 해결 방안을 컴퓨터가 실행하기 위해서는 컴퓨터가 이해할 수 있는 언어인 기계어로 전달해야 하는데 이는 매우 복잡하기에 사람이 이해할 수 있는 약속된 구문으로 구성된 프로그래밍 언어를 사용해 기계어로 변환해주면 됩니다. 변환 작업은 컴파일러(compiler) 혹은 인터프리터(interpreter)가 진행합니다.

자바스크립트에 대하여

탄생

javascript의 탄생 목적은 원래 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어로 탄생하였습니다.

그러나 얼마 지나지 않아 ms에서 js의 파생 버전인 "JScript"를 IE에 탑재하였지만 표준화되지 못했기 때문에 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했습니다.

이와 같은 파편화를 방지하고자 js를 탄생시킨 Netscapge communications에서 1996년 11월, ECMA 인터내셔널에 js의 표준화를 요청합니다. 그로부터 8개월 후, ECMA-262라 불리는 표준화된 js 초판(ECMAScript 1) 사양이 완성되었고 이를 ECMAScript로 명명되었습니다.

이후 여러 버전들이 발표되었고, 2009년 HTML5와 함께 출연한 표준 사양인 ES5를 공개합니다. 그로부터 6년 뒤, 2015년에는 let/const 키워드, 화살표 함수, 클래스, 모듈 등과 같의 범용 프로그래밍 언어로서 갖춰야 할 기능들을 대거 도입하는 큰 변화가 있었던 ES6를 공개합니다.

역사

  1. Ajax
    1999년, js를 이용하여 서버와 브라우저가 비동기(asynchronous) 방식으로 데이터를 교환할 수 있는 Ajax(Asynchronous JavaScript and XML)가 XMLHttpRequest라는 이름으로 등장했습니다.

    이 덕분에 변경할 필요가 없는 부분까지 렌더링 하는 과정이 사라졌고, 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 렌더링하는 방식이 가능해졌습니다.

  2. jQuery
    2006년, 다소 번거로웠던 DOM(Document Object Model)을 더욱 쉽게 제어할 수 있는 jQuery가 등장했습니다. 상대적으로 배우기 쉽고 직관적이기 때문에 선호하는 개발자들이 많아졌습니다.

  3. V8 JavaScript Engine
    구글 맵스로 js의 가능성이 확인되자 웹 애플리켘이션을 구축하려는 시도가 늘어났고, 자연스레 더욱 빠르게 동작하는 JavaScript Engine의 필요성이 대두되었습니다. 그래서 2008년, 구글의 V8 JavaScript Engine이 등장하였고 이로 인해 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했습니다.

  4. Node.js
    2009년, 구글 V8 JavaScript Engine으로 빌드된 JavaScript runtime environment인 Node.js가 발표되었습니다. 이는 브라우저의 JavaScript Engine에서만 동작하는 js를 브라우저 이외의 환경에서도 동작할 수 있도록 JavaScript Engine을 브러우저에서 독립시킨 실행 환경입니다.

  5. SPA 프레임워크
    모던 웹 애플리케이션은 개발 규모와 복잡도가 상승하여 이전의 개발 방식으로 진행하기에 무리가 있었습니다. 그래서 많은 패턴과 라이브러리가 출현했으며 프레임워크가 등장하게 되었습니다.

    이러한 요구에 CBD(Component Based Development) 방법론을 기반으로 하는 SPA가 대중화되었고, React, Vue.js, Svelte 등 다양한 SPA 프레임워크 및 라이브러리 또한 많은 사용자를 확보하고 있습니다.

ECMAScript

JavaScript는 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도로 지원하는 클라이언트 사이드 Web API을 아우르는 개념입니다. 클라이언트 사이트 Web API는 ECMAScript와는 별도로 World Wide Web Consortium(W3C)에서 별도의 사양으로 관리하고 있습니다. 자세한 내용은 여기를 클릭해서 참고해주세요.

특징

  1. 인터프리터 언어 (interpreter language)
    실행 파일을 생성하지 않고, 인터프리트 단계와 실행 단계가 분리되어 있지 않습니다. 인터프리터는 한 줄씩 중간 코드인 바이트코드로 변환하고 즉시 실행합니다. 이를 반복적으로 실행하기 때문에 코드 실행 속도가 비교적 느립니다.

    (이와 상반되는 컴파일러 언어는 코드를 실행하기 전, 컴파일 타임에 소스코드 전체를 머신 코드로 변환하며 실행 파일을 생성합니다. 이는 단 한번 수행되며 코드 실행 속도가 빠릅니다.)

  2. 멀티 패러다임 프로그래밍 언어
    JavaScript는 imperative(명령형), functional(함수형), prototype-based 객체지향 프로그래밍을 지원합니다.

profile
해피한하루

0개의 댓글