Community

자바스크립트의 철학(본질)을 이해해보기.

작년에 읽었던 글이긴하지만 참 도움이 많이되고 인상깊었던 글이라 공유하고 싶은 글입니다. 아직 읽어보지 않으셨다면 일독을 권합니다. JS를 이해하는데 도움이 될 것 같아요. Javascript를 이해하기 어렵게하는 몇가지 개념들이 있죠. 예를 들면 프로토타입, 실행문맥, 호이스팅, this. 저도 그렇고 많은 분들이 개념서나 다양한 설명글을 통해 텍스트 그대로 암기하거나 공부한 경험이 있을 것 같습니다. 이 글에서는 Java와 Javascript가 각각 세상을 해석하는 방법으로 채택한 철학 이론으로 그 컨셉을 설명하고 있어요. JS가 세상을 바라보는 방법에 대해 생각하다보면 위에서 언급한 이해하기 어려웠던 개념들이 그자체로 왜 그렇게 작동하기로 했는지 좀 더 이해할 수 있게 되는 것 같습니다. 본문의 각 언어에 깃든 철학의 컨셉 설명을 요약해보자면... Java는 플라톤, 아리스토텔레스의 이분법적 세계관을 기반으로한 '분류(Classification)' 개념으로 세상을 바라봅니다. '추상적/구체적'으로 세상을 나눠 바라보는 이분법적 세계관은 Java의 class 키워드로 정의되는 클래스와 new 키워드로 구체화하는 인스턴스로 구현되어있습니다. 대상을 구분하는 방법으로는 '분류'라는 개념으로 속성을 기반으로 대상을 구분합니다. Java에서는 class와 속성을 통해 대상을 추상화하고 정의합니다. Javascript는 Java가 채택한 '분류(Classification)'으로 세상을 바라보는 방법을 반박하는 철학을 채택합니다. 세상의 모든 대상이 속성만으로 정의하기 어렵다는 것이죠. 글에서는 '예술'이라는 개념을 몇가지 속성만으로 분류해 정의할 수 있냐고 설명합니다. JS는 Roch의 프로토타입 이론을 채택해 세상을 해석합니다. 이 이론은 2가지 기반이 되는 이론이 있는데요. - 의미 사용 이론: 대상의 의미는 상황, 맥락에 의해 결정됩니다. - 가족 유사성 이론: 한 가족의 구성들이 '가족'으로 분류되지만 모두가 완전히 동일한 속성을 가지지는 않는다. 다시 말해, 모두가 똑같이 생기지는 않았다. 프로토타입 이론은 어떤 개념에 대한 원형(prototype)을 정하고 원형과 다른 대상의 속성을 추가해나가며 정의합니다. 다른 속성이 많이 추가될수록 원형과 점점 다른 대상으로 볼 수 있습니다. 글에서는 예시로 원형을 참새. 부엉이 --> 타조 순으로 점점 원형과 멀어진다로 설명합니다.(가족 유사성) 다만, 같은 참새와 부엉이더라도 누가(조류학자, 어린아이,...) 대상을 정의하냐에 따라 그 의미가 달라질 수 있다고합니다.(의미 사용 이론) 이 내용은 JS의 실행 컨텍스트로 이어지는 개념이라고 볼수있습니다. JS에서는 prototype 속성을 통해 대상을 정의하고 자유롭게 속성을 추가해나갈수 있죠. Java와 다른 점으로 꼽힐 수 있고 안정성적인 측면에서 불리하다고 언급되기도 하는데, JS의 철학을 통해 이유를 생각해보니 불안정성만으로 치부하기엔 좀 억울한 생각이들었습니다. 제가 요약한 내용 이후로 글에서는 실제 JS 코드를 기반으로 철학의 컨셉이 녹아든 JS에 대해 설명합니다. Java나 JS나 모두 우리는 개발 language라고 하죠. 언어학에는 우리가 어떤 언어를 사용하느냐에 따라 우리의 지각과 사고가 달라진다는 '사피어-워프 가설'이 있다고합니다. 어쩌면 우리도 주로 사용하는 개발 언어에 따라 세상을 바라보는 생각에 조금은 영향을 받을지도 모르겠네요.

알림

알림이 없습니다