본문 바로가기
IT_Developers/Node.js

Deno - node를 만들었던 라이언달의 새로운 언어

by 고코더 2019. 11. 22.

노드가 아쉬워서 새로 프로그램을 만들었어요. 흔한 천재의 취미


안녕하세요.
고코더 입니다.




 1.수학자 출신 천재 프로그래머 라이언 달은  노드JS 리더 자리를 넘기고 조이엔트 마저 떠났습니다. 그가 창시한 노드JS에 대한 아쉬움이 있었던거 같습니다.  JSConf EU 2018에서 Node.js에 후회했던 10가지(10 Things I Regret About Node.js)를 발표하면서 새로운 서버사이드 언이인 Deno를 발표하였습니다.

 2.Node.js를 창시한 천재 개발자 라이언 달이 생각한 아쉬운 점은 이렇습니다. 

1. Promises를 고집하지 못한 것
2. 보안 문제
3. GN으로 빌드 시스템을 업데이트 하지 못한 것
4. 빌드시스템에 C++대신 FFI를 제공하지 못한 것
5. Package.json으로 인한 NPM 의존도
6. 모듈 시스템에 폴더화로 인한 파일 증가
7. node_modules 구조로 인한 알고리즘에 복잡함 
8. Require 문법에서의 .js를 쓰지 않은 실수
9. index.js의 실수


 3.그리고 C++에서 개발된 노드와 달리 Rust로 개발 하였고 이벤트 루프는 libuv에서 tokio로 교체되었습니다.
typescript를 런타임으로 가지게 되었습니다. 많은 부분에서 변화가 일어났고 새로운 언어가 탄생하였습니다.
하지만 deno가 상용화 될려면 언제가 될지 모릅니다. 혹은 정착된 노드의 자리를 뺐을 수 없을지도 모릅니다.
그렇기 때문에 갑자기 사라질 노드에 대해 걱정하시지 말고 지금 할 수 있는 최선의 언어를 공부하면서
deno를 기대하면 됩니다.

 4. Deno에서 작성된 Hello Deno

const start = async () => {
  const body = new TextEncoder().encode("Hello, Deno!\n");

  for await (const req of serve(":8080")) {
    req.respond({ body });
  }
};


start();

1번라인 : node_modules 폴더에 다운로드된 패키지를 호출하는 방식이 아니라 URL을 지정하는 방식으로 실행시에 해당 장소에서 자동으로 모듈을 설치하는 방식으로 변경 
6번 라인 : promise 도입으로 async, await를 사용할 수 있게 되었습니다. 


마무리


공부할게 너무 많아요 그만 만들어요..


댓글