devthewild

흥미로운 ECMAScript 제안들

RSS에 글이 뜸해질 때는 Coven을 보는데, Hacker News, /r/programming (Reddit의 프로그래밍 서브레딧- 게시판 개념) 등 사이트 4개의 추천 상위 글을 실시간으로 가져오는 곳이다. 다른 곳에도 공유하긴 했지만, 여기 올라온 글 중에서 흥미로운 ES의 제안(제안-초안-후보-마감의 단계 중 첫 번째)에 해당하는 것 2개를 소개하려고 한다.

1. "use strong" mode in ES6

ES5의 "use strict"를 포함하는 개선된(빡쎈) 버전이다. V8의 경우 예측할 수 있는 경우에는 최적화된 컴파일러를, 아닌 경우에는 일반 컴파일러를 실행한다고 되어있는 이 있었는데, 다른 구현체들의 정확한 internal은 잘 모르겠지만 컨셉 자체는 다른 곳에도 적용가능해보인다. 다시 말해서, 프로그램 흐름과 객체 상태를 제약해서 유지보수를 편하게 하고 성능을 좋게 한다는 아이디어에 대한 구체적인 제약들이다. 대표적으로 vardelete를 금지하는 문법상 제약이 있다. var를 금지하는 대신 let을 사용해서 lexical scope의 범위를 줄여서 컴파일러나 사람이 생각해야하는 양을 줄이겠다는 것으로 보인다. 그리고 delete를 금지하면 객체의 형태가 고정 (seal)되어 형태에 대한 정보를 재사용하고 예측가능해진다. (참고, ES6의 Object.freezeObject.seal의 차이에 대한 답변)

2. ES2016 Observable

ES6의 Generator와 ES7의 async/await를 합치면 비슷한 구현은 가능하지만, async generator의 경우에 IO에는 적합하지만 Push(Event, WebSocket) 등에는 적합하지 않는다. 즉 async는 producer를 observable은 consumer를 만들 때 적합하다(하지만 이해를 잘못한 것인지 슬라이드에는 반대로 되어있다). 사실 이게 들어갈 확률은 매우 적어 보이지만, 요즘 듣고 있는 Coursera의 reactive programming에서 Rx에 대한 내용이 나오다 보니 그쪽으로 관심이 생겨서 RxJS도 써보고 싶은데 마침 이 제안을 발견해서 기억에 남았다.


ps 1, 이것들 말고도 hn/reddit에 추천 상위로 올라온 게 더 있지만 재미가 없었는지 키워드도 기억나지 않는 게 많다.

ps 2, 흥미로운 것들을 발견하면 실시간으로 트위터에 올리고 있다. @devthewild

ps 3, 구직중