brunch

You can make anything
by writing

C.S.Lewis

by 김지영입니다 Apr 02. 2018

엘프의 외계어 배우기

자바스크립트에 대해 알아봅시다. - 제2화

지난 시간에 이어 자바스크립트에 대해 계속 알아봅시다. 지난 시간에 자바스크립트에 대해서 알아보면서 여러운 용어들, 특히나 이게 우리말이 오히려 한자/한글이 섞여있다 보니 의미 전달이 더 애매하다는 걸 깨달았습니다. 그리고 '위키백과'가 정말 말을 어렵게 하는구나라는 큰 깨달음이... 조금 더 쉽게 풀어서 설명해주면 좋은데 위키백과의 설명은 그것만으로는 한참 부족하더군요. 위키백과 외의 여러 가지 검색이 필요합니다.


그렇다면 한글로 검색하지 않고 영문으로 검색하여 구글 번역기를 돌려서 의미를 파악해보면 어떨까요? 이전 시간에서처럼 구글에서 JavaScript로 검색하여 위키피디아에 나오는 내용을 읽어보았습니다.

역시 모르는 용어는 많지만 영어임에도 불구하고 조금 더 이해가 되는 것은 저만의 느낌일까요? "너는 영어를 원래 잘하잖아!!!"라고 뭐라고 하실 분들을 위해 영문을 구글 번역기로 돌려보았습니다.

"JavaScript는 종종 JS로 약칭되며, 높은 수준high-level해석된interpreted 프로그래밍 언어입니다. 그것은 또한 역동적이고, 약하게 타이핑 된 약한 타입weakly typed이며, 프로토 타입 기반prototype-based다중 패러다임multi-paradigm으로 특징 지워지는 언어입니다. HTML과 CSS 외에도 JavaScript는 World Wide Web 콘텐츠 엔지니어링의 세 가지 핵심 기술 중 하나입니다. 동적 웹 페이지를 대화식으로 만들고 비디오 게임을 포함한 온라인 프로그램을 제공하는 데 사용됩니다. 대부분의 웹 사이트에서 이 API를 사용하고 있으며 모든 최신 웹 브라우저는 내장 JavaScript 엔진을 사용하여 플러그인을 필요로 하지 않고 이를 지원합니다. 많은 JavaScript 엔진 각각은 ECMAScript 사양을 기반으로 하는 JavaScript의 다른 구현을 나타내며 일부 엔진은 사양을 완전히 지원하지 않으며 ECMA 이외의 추가 기능을 지원하는 많은 엔진을 지원합니다."


나머지 설명도 번역을 해 보았습니다.

"다중 패러다임 언어인 JavaScript는 이벤트 중심, 기능적 및 필수적 (객체 지향 및 프로토 타입 기반 포함) 프로그래밍 스타일을 지원합니다. 텍스트, 배열, 날짜, 정규식 및 DOM 조작에 대한 API를 가지고 있지만 언어 자체에는 네트워킹, 저장소 또는 그래픽 기능과 같은 I / O가 포함되어 있지 않습니다. 호스트 환경. 언어 자체에는 네트워킹, 저장 영역 또는 그래픽 기능과 같은 입출력이 포함되지 않으며 임베디드 되는 호스트 환경에 의존합니다.

처음에는 웹 브라우저에서 클라이언트 측만 구현되었지만 이제 JavaScript 엔진은 웹 서버 및 데이터베이스의 서버 측, 워드 프로세서 및 PDF 소프트웨어와 같은 비 웹 프로그램 및 런타임에 포함된 많은 다른 유형의 호스트 소프트웨어에 포함됩니다. 데스크탑 위젯을 포함하여 모바일 및 데스크톱 응용 프로그램을 작성하는 데 JavaScript를 사용할 수 있게 해주는 환경입니다.

언어 이름, 구문 및 각각의 표준 라이브러리를 포함하여 JavaScript와 Java 사이에는 강력한 외부적 유사성이 있지만 두 언어는 구별되며 디자인면에서 크게 다릅니다. JavaScript는 Self 및 Scheme과 같은 프로그래밍 언어의 영향을 받았습니다."


구글 번역기는 한 단락(pharagraph)씩 나눠서 돌리는 것이 훨씬 더 번역이 잘 되는 듯합니다. 문장이 길어서 제대로 번역되지 않은 부분은 따로 떼어서 돌려보면 나름 잘 됩니다. 가급적 재번역이 필요한 부분만 (이 경우에는 but 이하) 재번역을 하는 것이 깔끔합니다.


자, 그럼 지난 시간에 공부했던 것들은 잊어버리고(사실 기억하고 싶지만 이미 잊어버렸...) 앞으로는 영어 공부도 할 겸 가급적 영어로 찾아보도록 하겠습니다(제가 임의로 번역을 하지 않고 공부하는 다른 분들을 위해 구글 번역기를 그대로 사용하겠습니다). 다시 여기에서 모르는 용어들을 찾아보도록 합시다.


첫 번째 문단에서 우선 '높은 수준high-level'은 어떤 것을 의미하는지 찾아보았습니다.

"컴퓨터 과학에서 고급 프로그래밍 언어는 컴퓨터의 세부 묘사가 강한 추상화 된 프로그래밍 언어입니다. In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer."


여기에서 더 깊이 있게 알아보지는 맙시다. 우리는 고수준 언어에 대해서 공부하려는 것이 아니고 자바스크립트에 대해서 공부하는 것이니까요. 그렇지만 조금 더 이해하기 위해서 다음 문장을 읽어봤더니 저수준 언어에 비해서 사용하기 쉽고 자동화를 통해서 프로세스를 단순화하고 더 이해할 수 있다고 하네요~ 우리 같은 머글들이 그럴 수 있다는 게 아니라 프로그래머가 그럴 수 있다는 거겠죠? 여하튼, '고수준 언어'라는 건 아무래도 컴퓨터의 언어보다는 사람의 언어에 더 가까운가 봅니다.


'해석된(interpreted) 프로그래밍 언어'라는 말이 등장합니다. 어떤 의미로 쓰인 걸까요?

"해석된 언어는 프로그래밍 언어의 한 유형으로 프로그램을 기계 언어로 컴파일하지 않고도 대부분의 구현이 직접적으로 그리고 자유롭게 명령을 실행합니다."


컴파일은 이전 시간에 '스크립트 언어'에 대해서 찾아보면서도 나왔던 것인데요, 하나의 프로그래밍 언어를 다른 언어로 바꿔주는 거라고 하는데, 쉽게 말해서 기계가 알아들을 수 있는 코드로 번역한다는 뜻인가 봐요. 그렇다면 인터프리트(인터프리터) 언어는 번역 과정이 필요 없다는 걸까요? 그렇지는 않을 듯합니다. 영어의 원 뜻을 알면 이해가 조금 더 편할 듯한데요, compile이나 translate이 문서의 번역을 말한다면 interpret는 '말의 번역, 즉 통역'을 말하거든요. 문서의 번역에 비해 실시간으로 이루어지고 서로 통하지 않는 두 언어 구사자 사이에서 그 언어를 이해하여 전달하는 과정을 말합니다. 그러니 여기에서 말하는 '해석된 프로그래밍 언어'란 바로바로 기계가 이해하도록 해서 실행될 수 있도록 한다는 뜻인가 봅니다.    

*참고 : 위키피디아에 따르면 컴파일 언어와 인터프리터 언어의 구별이 모호하고 정의를 분명히 할 수가 없다고 하네요. 현대 프로그래밍 언어 구현에서는 플랫폼이 두 가지 옵션을 제공하는 것이 점점 더 인기가 있다고 합니다.


'약하게 타이핑 된(weakly typed)'...이라니 뭔가 자판을 살살 쳤다는 뜻인가요? ㅎㅎㅎ 이건 명백히 번역 오류인 듯합니다. 저기서 말하는 typed이 '타이핑되었다'라기 보다는 '타입화 되었다' 혹은 '~유형'을 나타내는 것 같아요. 쉽게 말해서, '약한 타입(유형)'! 자바스크립트는 약한 타입이야~ 움하하 여하튼 깊이 있게는 모르겠지만 언어가 '강한 타입'과 '약한 타입'으로 설계(?)된다는 것을 알았습니다.


자, 이제 '프로토 타입 기반prototype-based'에 대해 알아볼 차례입니다. 

오호라. 지난번 공부하면서도 나왔던 '객체object'에 대한 이야기가 나오는군요. 이건 솔직히 공부할 부분이 많은 듯한데요. "프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다. 프로토타입 기반 프로그래밍은 클래스리스(class-less), 프로토타입 지향(prototype-oriented) 혹은 인스턴스 기반(instance-based) 프로그래밍이라고도 한다." 이렇게만 봐도 다시 찾아봐야 하는 용어가 잔뜩입니다. 일단 '프로토타입 기반'은 지난번에 찾았던 정의를 다시 한번 보는 것으로 넘어갑니다.


그런데 object는 '객체'가 맞나요? '개체'가 맞나요? 객체지향이라고 하는 것으로 알고 있는데, 구글 번역기는 '개체 지향'이라고 하네요~ 


"멀티 패러다임 프로그래밍 언어는 하나 이상의 프로그래밍 패러다임을 지원하는 프로그래밍 언어입니다. 다중 패러다임 언어의 핵심 아이디어는 프로그래머가 다양한 패러다임의 구조를 자유롭게 섞어 다양한 스타일로 작업할 수 있는 프레임워크를 제공하는 것입니다. 이러한 언어의 디자인 목표는 프로그래머가 일에 가장 적합한 도구를 사용할 수 있게 하여 단일 패러다임이 모든 문제를 가장 쉽고 효율적으로 해결할 수는 없다는 것을 인정하는 것입니다."

'다중 패러다임multi-paradigm'에 대해서 mozilla developer network에 있는 정의입니다. 패러다임에 대해서도 따로 알아봐야겠지만 지금 현재는 자바스크립트가 프로토타입 기반의 다중(멀티) 패러다임 언어라는 사실만 기억하도록 합니다.


자! 그럼 어디 한번 정리해볼까요?

자바스크립트는 사용하기 쉽고 자동화를 통해서 프로세스를 단순화할 수 있으며 이해하기 쉬운 언어이며, 컴파일이 필요 없이 바로바로 기계가 이해하고 실행될 수 있는 언어이다. 예를 들어 청사진 따위 필요 없이 바로 집을 만들기에 적합한 프로그래밍 언어이며, 하나 이상의 패러다임을 지원해서 프로그래머가 자유롭게 섞어 적합한 스타일을 쓸 수 있게 해주는 언어이다. 하나의 패러다임으로 모든 문제를 쉽고 효율적으로 해결할 수 없다는 걸 인정해!!!

응???


to be continued...



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari