공학의 정의가 정확히 뭔지는 모르겠지만

공학의 목적이 생산성을 증대시키는것이라는건 확실함




생산성을 증대시키기 위해선 자동화해야함

자동화가 되어야 작은 인풋으로 원하는 아웃풋을 낼수있음

작은 손짓발짓으로 자동 차가 움직이는것처럼..




그리고 자동화를 하기위해서는 추상화를 해야함

열현상을 열역학으로 추상화해서 증기기관을 만든것처럼..





예를들어 메이플스토리 플레이 엔지니어링을 한다고 치면

메이플 플레이 생산성을 높히겠다는 의미이고

그렇게 하기위해선 매크로를 만들어서 자동화해야하고

매크로를 만들기 위해선 메이플 플레이를 공격, 맵이동, 포션사용, 포션구매 등등으로 추상화해야함





사람은 추상화를 너무나도 자연스럽게 수행함

사물의 인식부터가 고도의 추상화임

소파, 편의점의자, 시디즈의자를 각각 인식할때

등받이, 받침대, 발로 이루어진 플라톤의 이데아속 추상화된 의자로 인식하기 때문에

새로운 의자를 보더라도 그게 의자인지 아닌지, 의자라면 어떻게 상호작용하는지 바로바로 파악할수있음






그런데 추상화의 정의를 보면 여러 표상으로부터 공통된 본질을 추출하는것이라고 함

즉 대상을 모델(본질)과 뷰(표상)로 나누는것임

MVC, MVVM같은 MV* 아키텍쳐는 대상을 뷰와 모델로 분리해서

추상화 => 자동화 => 생산성증대를 가능토록 해주는 아키텍쳐였던것임..





객체지향(혹은 인터페이스)이 온갖언어에서 쓰이는 이유는 모델(객체)와 뷰(인스턴스)를 나눠주기 때문임


프론트 프레임웤 세상을 앵귤러 리엑트 뷰지스가 잡아먹은것은 웹앱의 모델과 뷰를 파악하고 다루기 쉽게 만들었기때문임

그래프큐엘이 그 큰 복잡성에도 불구하고 사람들을 유혹하는 이유는 웹 프로토콜에 자연스럽게 모델과 뷰를 제공해주기 때문임





리엑트와 웹개발의 관계는 수학과 엔지니어링의 관계와 유사함

둘다 대상(우주 / 웹앱)의 모델과 뷰를 쉽고 자연스럽게 나누도록 도와줌..