자바스크립트는 왜 프로토타입을 선택했을까
보고 쓰는 글.
처음에는 내용 풀어서 쓰려는 목적이었는데 쓰다보니
방향이 완전히 달라져서 일부주제만 비슷한 별개의 글이라고 생각하면 됩니다.
난이도 조정은 실패ㅠㅠㅠ 한번쯤 써보고 싶었던 주제라 재미는 있었습니다.
**빠른요약**
- 클래스와 프로토타입의 가장 커다란 차이는 객체 생성 방식 [클래스 -> 인스턴스 vs 객체 -> 복사된 객체].
- 가장 큰 공통점은 객체지향이며, 프로그램을 객체라는 단위로 나누고 상호작용하게 하는 것.
- 객체지향의 핵심인 캡슐화를 잘하기 위한 가장 간단한 방법은 추상화를 잘 하는 것.
- 추상화는 데이터 위주의 성질(고전적 OOP), 형태(타입), 상태(데이터 주도 설계)와 관계 중심인 시간(절차지향), 행동(함수형), 정의(논리형), 상황(도메인 주도 설계, AOP) 등으로 나누어 생각할 수 있음.
- 잘 분류하고 설계하기 위해서 사고의 형식을 인식하게 만드는 다양한 범주의 이해가 있다면 좋음 [예) 칸트의 4강 12목].
- 철학과 패러다임
- 절차형: 시간은 대부분의 추상화에 영향을 미치며, Goto처럼 컨텍스트가 섞이게 만드는 문법은 좋지 않음.
- 함수형: 행동의 형태로 나타내려 하기 때문에 타입(형태)와 깊은 연관관계.
- 논리형: 사실과 규칙으로 논리를 구성하고, 질의를 함으로서 술어논리의 결과를 얻을 수 있음.
- 전통적 OOP: 직관적. 하지만 완벽한 속성을 알아내기는 불가능함.
- 데이터 주도 설계: 로직의 상태를 다루려는 함수형과 달리 컴퓨터 자체에서의 상태를 줄이려 시도. 캐시 히트를 높혀서 성능향상을 가져옴.
- 도메인 주도 설계: 전통적 OOP와 달리 도메인과 맥락에 따라 다르게 설계를 함(그림이론-용도의미론과 비슷), 서브도메인의 의존성 주입을 하는 AOP를 사용하면 구현이 편해짐.
- MVP
- 프로토타입 제작: 중요한 기능이 포함되어야 하며 디자이너, 개발자, 재무등의 관점에 따라 달라질 수 있음. 많은 사람들이 중요하다고 생각하는 제품의 유사도에 따라 전형적인 요건.
- MVP: 최소한의 완성도가 보장된 사용이 가능하고, 최종단계로 생각하는 제품과 유사하게 설계해야함.
- 객체지향과 존재
- 플라톤: 보편적 성질이 불변하며 실재하고, 개별적 존재들은 보편적 특성이 결여된 채로 존재한다 주장.
- 아리스토텔레스: 개별적 개체만이 근본적 실체이며, 보편자는 상하/포함 관계에서 나타나는 표상이라 주장.
- 클래스-인스턴스는 플라톤의 이데아론을, 프로토타입-복제된 객체는 아리스토텔레스 실체론과 유사.
**한줄요약**
클래스-인스턴스는 플라톤의 이데아론을, 프로토타입-복제된 객체는 아리스토텔레스의 실체론과 유사
- dc official App
양이 많아서 시간이 좀 걸리긴 했지만 한번쯤은 볼만할 듯요
학교 도덕시간이 생각나네요... - dc App
플라톤, 아리스토텔레스 볼만한 시간이 도덕때밖에 없긴함요
이거 진짜 철학으로 이해하는 게 훨씬 빠른데, 학교에선 맨날 메소드나 스코프 같은거만 줄창 설명하고 있어... 실무에선 맞닥뜨리지도 않을 코드로 숫자값 계산이나 시키고 진짜 개떡같음.
마치 미적분을 설명하려는데 구분구적법이나 극한 부분은 건너뛰고 다항함수의 미분법부터 가르치는 거랑 비슷함
(대충 붕어빵과 틀 어쩌고 하는 내용)
그러면 수능문제는 잘 풀지 몰라도 당장 대학가서 미적분 처음부터 다시 배워야 됨.
붕어빵과 틀로 설명하면 왜째서 굳이 틀로 붕어빵을 찍어내야 하는지 이해를 못하고, 거기다 실세계를 반영한답시고 아키텍쳐적으로 조낸 괴상한 코드를 싸게 됨. 동전출납 시스템 같은것보다 훨씬 복잡한 과제를 내줘야 하는데 교수들 생각이 아직도 C언어 구현 가르치던 수준에 머물러있는거 같음.
그치만 바로 자바코드 짜라고하면 인스턴스, 스태틱은 물론 사용법 자체를 헷갈려하는 사람들이 엄청 많아서 ㅎㅎ
와 이게 이렇게 이어지는 개념이었네
나도 글쓰면서 뭔가 정리된 느낌. 데이터 주도, 도메인 주도등등 추상적이고 개별적으로 이해되던게 잘 끼워맞추어졌음.
스스로의 철학적 소양이 부족함을 배웠습니다 - dc App
철학 넘모 어려워요
대학들은 필수교양에 철학을 넣어라~!