JavaScript - An High-Level Overview of JavaScript

신동환·2022년 3월 29일

js

목록 보기
6/18

1. What is JavaScript..?

  • JavaScript는 높은 수준의 객체지향, 멀티패러다임 프로그래밍언어
  • 인터프리터 or JIT(just-in-time)로 컴파일된 동적 단일 스레드 및 first-class functions 그리고 a non-blocking event loop concurrency model

멀티패러다임 = 논리형, 함수형, 객체지향등 여러가지의 패러다임을 지원한다는 의미로 멀티패러다임이라 칭한다

인터프리터 = 런타임 이후 행 단위로 해석하며 프로그램을 구동시키는 방식 (컴파일과는 대조대는 방식)

JIT(just-in-time) 컴파일러 = 바이트코드를 컴퓨터 프로세서(CPU)로 직접 보낼 수 있는 명령어(원시 시스템 코드)로 바꾸는 프로그램 (원시 시트템 코드로 변환되는 과정이 실시간으로 일어난다고 하여 just-in-time이라 칭한다)

First-Class Functions(FCF) = 'First-Class Citizens(FCC)'으로 취급되는 기능. 함수가 argument로 전달이 되고, function에서 함수를 return하거나 변수에 함수를 할당할 수 있다는 것을 의미한다

Fisrt-Class Citizen(FCC) = FCC는 argument로 전달이 가능하고 function내 에서 return 될 수 있으며 변수에 할당 가능한 객체들을 의미한다

// 변수에 대입
const foo = function() {
	console.log("footer");
};
foo();

// 함수를 인자로 전달
function hello() {
	return "hello world!";
};
function greeting(hellofunc, name) {
	console.log(hellofunc() + name);
};
greeting(hello, "JavaScript!");

// 함수 반환
const sayHello = function() {
	return function() {
    	console.log("Hello!");
    }
};
const helloFunc = sayHello();
helloFunc();
sayHello()();

1-1. High-level

  • 프로그램이 실행 될 때 컴퓨터에서는 하드웨어 자원(RAM, CPU)이 필요하게 되고 이 자원을 통해 새로운 변수를 만든다고 했을 때 Low-level 언어인 C에서는 리소스 관리를 수동으로 제어가 필요하다
  • 반면 High-level 언어인 JavaScript, Python은 리소스 관리가 자동으로 이루워진다

1-2. Garbage-collected

  • 기본적으로 garbage-collection은 JavaScript 내부 엔진에 존재하는 알고리즘으로 오래된 미사용 objects를 컴퓨터 메모리에서 삭제한다

1-3. Interpreted or just-in-time compiled

  • 모든 프로그램들은 0과1로 이루어져 있는데 이를 machine code로 불린다
  • 우리는 사람이 읽을 수 있는 JavaScript code를 작성하고 이를 machine code로 번역이 필요하게 되는데 번역 단계에서는 interpreting 할 수도 compiling 할 수도 있다

1-4. Multi-paradigm

  • paradigm: 코딩 스타일과 기술을 지시하는 코드 구조의 접근법과 사고방식

  • 유명한 paradigm 3가지
    1-4-1. Procedural programming = 절차적 프로그래밍
    1-4-2. Object-oriented programming (OPP) = 객체 지향 프로그래밍
    1-4-3. Functional programming (FP) = 함수형 프로그래밍

  • paradigm의 두가지 분류: Imperative(명령형) or Declarative(선언형)

...

1-5. Single-threaded and Non-blocking event loop

  • Concurrency model: JavaScript 엔진은 동시에 일어나는 다중작업을 어떻게 처리하는지..?
  • JavaScript는 single thread로 실행된다. 그래서 한번에 한 가지 작업만 수행합니다.
  • if.. long-running task일 경우 event loop를 사용하여 long-running task을 'background'에서 작업을 실행하고 작업이 완료되면 다시 메인 스레드로 다시 배치합니다.
profile
안녕하세요! Hello, World!

0개의 댓글