WIT – NTS UIT Blog

[번역] The State of JavaScript in 2015

Posted by in Research, Tech

Jimmy Breck-McKye Twitter:@jbreckmckye Jimmy Breck-McKye는 프론트엔드 개발자입니다. Breck-McKye가 자신의 블로그에 쓴 글로 2014년 12월 첫째 주  JavaScript Weekly에 올라온 The State of JavaScript in 2015를 번역한 글입니다. —– 요즘 JavaScript 세계는 춘추전국시대 같다. 감당할 수 없는 속도로 새로운 프레임워크와 기술이 쏟아지고 사라진다. 나는 사람들이 이 상황을 새로운 방법으로 헤쳐나갈 것으로 본다. 내 예상에 앞으로 개발자들은 Angular.js, Ember 같은 단일 프레임워크가 아닌 입맛대로 조합할 수 있는 작은 라이브러리를 사용해서 변화가 가져올 위험을 줄이고 서로 다른 문제를 개별적으로 해결하는 방향으로 나갈 것이다. 많은 사견이 들어가 있는 글이지만 끝까지 읽어보길 바란다. 춘추전국시대 2014년을 마무리하는…read more

[번역] ECMA-262-3 in detail. Chapter 6. Closures.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 6. Closures. by Dmitry Soshnikov 소개(Introduction) 이번에는 JavaScript의 아주 중요한 개념인 클로저(Closures)에 대해서 알아보겠다. 그 동안 여러 번 이야기했던 내용으로 새로운 것은 아니지만, 이론적인 관점에서 조금 더 깊이 있게 들여다 보고 ECMAScript가 어떻게 클로저를 다루는지 설명할 생각이다. 이번 챕터를 이해하려면 스코프 체인(Scope chain)과 변수 객체(Variable Object)의 개념을 알아야하기 때문에,  이전에 공부했던 내용을 다시 한 번 정리하고 넘어가자. 일반 이론(General theory) 바로 ECMAScript의 클로저를 논의하기 전에, 함수형 프로그래밍의 일반 이론에서 정의하고 있는 내용을 구체화 할 필요가 있다. 다들 알고 있듯이, 함수형 언어에서(ECMAscript는 함수형 언어의 패러다임과…read more

0

[번역] Static Memory Javascript with Object Pools

Posted by in Research

이번에 Static Memory Javascript with Object Pools라는 html5rocks의 아티클을 번역했다. 제목만 보고 상당히 흥미로울 것 같아서 무작정 번역을 시작했는데 막상 번역해놓고 보니 별로 재미가 없어서 실망했다. 하지만 누군가에게는 흥미로운 주제일지도. JavaScript는 Garbage Collector라는 메모리 관리 기술을 이용하기 때문에 개발자가 직접 메모리를 관리할 수 없다. 이 포스트는 Object Pool을 만들어서 우회적으로 메모리를 관리하는 기법을 설명하고 있다. 원문에 memory churn을 설명하는 부분이 있다. memory churn은 “메모리 할당/해제가 빈번하게 일어나는 현상“을 말한다. 이걸 뭐라고 번역해야할 지 한참 고민하다가, 다빈치 소프트웨어의 “도창욱”님의 의견들 받아들여서 “메모리 변동”이라고 적었다.  아무리 생각해도 메모리 변동은 부정적 의미가 너무 약한…read more

0

[번역] Performance Tips for JavaScript in V8

Posted by in Research

일전에 JavaScript Interperter에 대해서 공부를 하다가 V8에 관심이 생겨서 html5rocks.com의 “Performance Tips for JavaScript in V8″을 번역했다. 다른 일들에 치여서 지금은 V8 스터디를  그 언젠가로 미뤄둔 상태지만…  좋은 날이 오면 꼭 다시 V8을 공부해보고 싶다. 이 포스트는 Daniel Clifford가 2012년 Google I/O에서발표한  V8 위에서 돌아가는 JavaScript 애플리케이션의 성능 향상을 위해 적용할 수 있는 몇 가지 팁 중의 일부를 다루고 있다. 실제 발표 내용이 궁금해서 동영상을 찾아봤다. 처음에는 영어 리스닝 연습하겠다고 자막없이 봤는데, 하는 이야기가 내 귀에 전혀 들리지 않아서 결국은 유투브 캡션으로 자막달고 봐야했다는 슬픈 전설이 있다. 발표에서 Daniel Clifford는 좋은…read more

0

[번역] ECMA-262-3 in detail. Chapter 5. Functions.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 5.Functions. by Dmitry Soshnikov 소개(Introduction) 이번 글에서는 ECMAscript의 객체 중에 하나인 함수(Function)를 알아보고, 함수에는 어떠한 것들이 있는지 설명한다. 함수가 콘텍스트의 변수 객체(Variables object)에 어떠한 영향을 미치며, 각 함수의 스코프 체인에는 무엇이 들어가는지도 알아볼 계획이다. 다음과 같은 질문을 자주 받는다. 첫 번째 함수,

  일반적인 방식으로 작성한 두 번째 함수.

  “두 함수는 뭐가 다르죠?” 또는 “왜 아래 함수는 괄호로 감싼 거예요?” 와 같은 질문을 받기도 한다.

  이 글은 이전 챕터와 관련있기 때문에, 아래에 나오는 내용을 제대로 이해를 하려면 Chapter 2. Variable…read more

0

[번역] ECMA-262-3 in detail. Chapter 4. Scope chain.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 4. Scope chain.. by Dmitry Soshnikov 소개(Introduction) 변수 객체를 살펴보았던 두 번째 챕터에서 보았듯이, 실행 콘텍스트의 데이터(변수, 함수 선언 그리고 함수의 형식 매개변수)는 변수 객체의 프로퍼티로 저장된다. 그리고 콘텍스트로 진입할 때 매번 초기값을 갖는 변수 객체를 생성하며, 코드 실행 단계에서 값을 갱신한다는 사실도 배웠다. 이 챕터에서 실행 콘텍스트와 직접적으로 관련있는 내용 한 가지를 더 자세히 알아볼텐데, 이번 주제는 바로 스코프 체인(scope chain)이다. 정의(Definitions) 간략하게 요점만 살펴보면, 스코프 체인은 대게 중첩 함수와 관련이 있다. 다들 알고 있듯이, ECMAScript는 중첩 함수를 허용하며 심지어 부모 함수가 이러한…read more

0

[번역] ECMA-262-3 in detail. Chapter 3. This.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 3. This. by Dmitry Soshnikov 소개(Introduction) 이 글에서는 실행 콘텍스트와 관련있는 내용을 더 자세하게 알아볼 것이다. 이번 주제는 this 키워드다. 사례에서 보듯이, 이 주제는 상당히 어려워서 종종 다른 실행 콘텍스트의 this 값을 처리할 때 이슈를 만들곤 한다. 많은 프로그래머가 프로그래밍 언어의 this 키워드가 객체 지향 프로그래밍과 관련이 있다고 생각한다. 정확하게는 생성자를 이용해서 새롭게 만들어진 객체를 참조한다고 생각한다. ECMAScript에도 이 개념은 정의되어 있다. 그러나 앞으로 보게 될 것처럼, ECMAScript는 this의 정의를 오직 생성한 객체로 제한하지 않는다. 자, 그러면 ECMAScript에서 사용하는 this의 정확한 의미를 살펴보자. 정의(Definitions) this는…read more

0

[번역] ECMA-262-3 in detail. Chapter 2. Variable object.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 2. Variable object by Dmitry Soshnikov 소개(Introduction) 프로그램을 개발할 때 우리는 항상 함수와 변수를 선언하고 이것을 이용해서 성공적으로 시스템을 구축한다. 그런데 인터프리터는 어떻게, 어디에서 데이터(함수, 변수)를 찾을까? 우리가 필요한 객체를 참조할 때 무슨 일이 일어나는 걸까? 많은 ECMAScript 프로그래머들이 변수와 실행 콘텍스트가 서로 밀접하게 연관되어 있다는 사실을 알고 있다.  

  또한 현재 버전의 ECMA 스펙에서는 오직 “함수” 코드의 실행 콘텍스트만이 격리된 유효범위(scope)를 만들 수 있다는 것도 알고 있다. 이것은 C/C++의 경우와는 반대이다. 예를 들어 보면, ECMAScript의 for 루프 블럭은 지역 콘텍스트를 만들지 않는다….read more

0

[번역] ECMA-262-3 in detail. Chapter 1. Execution Contexts.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 1. Execution Contexts by Dmitry Soshnikov 소개 이 글은 ECMAScript의 실행 콘텍스트(execution contexts), 그리고 실행 콘텍스트와 관련있는 실행 코드(Executable code)에 대해서 이야기 한다. 정의 ECMAScript의 실행 코드로 제어가 전달되면, 이 제어는 실행 콘텍스트으로 진입한다. 실행 콘텍스트(Execution context, 이하 EC)는 실행 가능한 코드의 유형을 나누고 구별하기 위해서, ECMA-262 스펙이 정의하고 있는 추상적인 개념이다. 표준은 기술적인 관점에서 정확한 실행 콘텍스트의 구조와 종류를 정의하고 있지는 않다. 구체적인 내용은 표준 스펙을 구현하는 ECMAScript 엔진이 처리해야 할 문제이다. 활성화된 실행 콘텍스트들은 논리적으로 스택의 형태를 구성하고 있다.  스택의 바닥(bottom)에는 항상 전역 문맥(global…read more

0