태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


댓글 하나가 운영자에겐 커다란 힘이 됩니다!

 일종의 OOP(object-oriented programming)

보편적인 OOP와의 차이점
- 클래스가 없다.
- 상속(inheritance)을 통해 behaviour reuse

상속에 대한 구현 방식이 일반적인 OOP와 다르다.
- 기존의 객체를 프로토타입(prototypes)으로 삼아 인스턴스 복제(cloning)를 통해서 상속 실현

자바의 상속과 비교해보면
super:sub = prototype:clone


이러한 특징으로 인해 다양한 이름으로 불린다:
class-less, prototype-oriented, or instance-based programming

JavaScript 가 대표적인 사례

프로토타입 기반 프로그래밍의 옹호자의 주장에 따르면
클래스 기반 언어는 개발의 초점을 클래스 분류와 관계 포착에 의미를 두지만
프로토타입 기반 프로그래밍은 행위에 초점을 맞추다가..
(행위에 따른) 전형적인 모습에 기초하여 추후에 클래스를 분류한다.
유사 개념: 오리 인터페이스(Duck Interface)

개인적으로는이러한 분류(Classification)가 정적인 정의에서 출발하는 것보다
훨씬 실효성이 있다고 본다. 추정의 근거는 이러한 방식이 실증적이고
연속적으로 진화할 수 있는 접근이기 때문이다.

실행시점에서 동적으로 타입을 정의하는 루비류의 언어와
상당한 유사점을 갖고 있다.

Unlike the relationship between class and instance in class-based object-oriented languages, the relationship between the prototype and its offshoots does not require that the child object have a memory or structural similarity to the prototype beyond this link.

그리고 위의 내용을 보면 Duck Typing과도 닮아 있고(오리 인터페이스(Duck Interface) 참조)
상태가 클라이언트에게 완전히 Transparent 하다는 것은...
추상화 수준이 다르지만 SOA의 방향과도 매우 흡사한 느낌이다.

As such, the child object can continue to be modified and amended over time without re-arranging the structure of its associated class as in class-based systems. It is also important to note that not only data but also methods can be added or changed. For this reason most prototype-based languages refer to both data and methods as "slots".

위 내용까지 읽어보면 매료된다. (주의하자.)

상속이 실현되는(메소드를 호출하면 프로토타입의 메소드가 불려지는)
메커니즘은 Delegation이라고 부른다. 언어의 런타임이 Dispatching 해주는...

mitosis이라는 생물학적 개념을 차용한 것도 눈에 띈다.
유사분열이라.. 핵분열을 통한 복제.. 복제를 통해 새로운 개체가 탄생하는??
흥미롭다.

장단을 논한 부분을 대략적으로 훑어보면
상속을 하거나/주는 양자의 관계가 강력하지 않다는 것.
상태의 구조는 공유되지 않고, 링크도 약하다.
유연성이라고 요약해버리자. ㅡㅡ;

단점으로는 correctness, safety, predictability, and efficiency. 이런 단어들이 나열된다.
정적 타이핑과 비교해서 이들이 약해진다는..
보수적 혹은 안정적 관점이다.


참고: Prototype-based programming

출처 : http://younghoe.info/193

위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

  1. 왕종선

    | 2009/05/27 15:31 | PERMALINK | EDIT | REPLY |

    프로토타입 기반 프로그래밍 언어는 루아도 있어요
    역시 객체들끼리 복제한 다음 복제된 녀석에서 추가적인 내용을 덧붙여 상속아닌 확장을 해나가는.. 확장된놈을 또 복제..

    대신 퍼포먼스가 C++같은 언어에 비해 굉장히 느리므로 현재로썬 주의해야죠. ^^; 큼직큼직한 부분엔 쓸만.. 작은것이 몇천개 억개 단위로 돌아가는 퍼포먼스 관련 부분엔 비추

Write your message and submit
« PREV : 1 : ... 392 : 393 : 394 : 395 : 396 : 397 : 398 : 399 : 400 : ... 436 : NEXT »