의도적 메타프로그래밍 자동 귀납적 프로그래밍 반영 속성 지향 매크로 템플릿 비구조적 ( 반의어 : 구조적 ) 배열 비결정 병렬 컴퓨팅 프로세스 지향 확률론적 스택 지향 구조적 ( 반의어 : 비구조적 ) 블록 구조 객체 지향 행위자 기반 클래스 기반 병행 프로토타입 기반 관심사의 분리에 따라 : 관점 지향 역할 지향 주체 지향 재귀 심볼릭 값 레벨 ( 반의어 : 함수 레벨 ) [UNK] 프로그래밍 v. d. e. h 프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형 ( 프로토타입 ) 으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다. 프로토타입기반 프로그래밍은 클래스리스 ( class - less ), 프로토타입 지향 ( prototype - oriente
동작 방식을 다시 사용할 수 있다. 프로토타입기반 프로그래밍은 클래스리스 ( class - less ), 프로토타입 지향 ( prototype - oriented ) 혹은 인스턴스 기반 ( instance - based ) 프로그래밍이라고도 한다. 프로토타입 기반 언어의 가장 원조격인 프로그래밍 언어인 셀프는 데이비드 엉거와 랜덜 스미스가 개발했다. 클래스리스 프로그래밍은 최근에 와서 많이 유명해졌는데, 자바스크립트와 모픽 프레임워크를 사용하는 [UNK] 적용되었고, 그 외에 세실, 뉴튼스크립트, 아이오, 무, 리볼, 케보 등에 적용되었다. ( # 프로토타입 기반 언어 목록 참고. ) 목차 1 클래스 기반과의 비교 2 객체 생성 3 위임 4 연쇄 5 비평 6 프로토타입 기반 언어 목록 6. 1 A - J 6. 2 K - O 6. 3 P
정적 타입 시스템을 지지하는 사람들이 동적 타입 시스템에 대하여 우려하는 것과 비슷한 점을 우려하고 있다 ( 자료형 참조 ). 특히, 프로그램의 정확성, 안전성, 예측성, 효율을 떨어뜨린다고 우려한다. 정확성, 안전성, 예측성의 관점에서 보면, 클래스는 타입과 비슷하며, 실제로 대부분의 정적 타입 객체지향 언어에서 클래스는 타입의 역할을 한다. 그리고 클래스의 인스턴스는 주어진 방식대로 동작하리라는 확실한 보장이 된다. 효율성의 관점에서 보면, 클래스를 선언하면 대부분의 컴파일러는 더 효율적인 메서드와 인스턴스 변수 미리보기가 가능하여 최적화하기 쉽게 된다. 셀프 ( 프로그래밍 언어 ) 에서 보면, 클래스기반에 비해서 프로토타입 기반 체계는 수행 속도를 빠르게 하는 컴파일과 인터프리트 기술을 개발하는 데 많은 시간이 걸린다. 예
oo is now the parent of bar. / / If we try to access foo's properties from bar / / from now on, we'll succeed. bar. one / / Resolves to 1. / / The child object's properties are also accessible. bar. three / / Resolves to 3. 자바스크립트 순수 프로토타입 상속의 예제 무에서 객체를 생성할 수 있는 체계는 이미 있던 프로토타입을 복제하지 않고 아무것도 없는 상태에서 새로운 객체를 생성할 수 있게 해 준다. 이런 체계는 새 객체의 특성과 행동을 이미 있던 객체를 참조하지 않고도 지정할 수 있다. 많은 프로토타입기반 언어에서 기본 객체 프로토타입인 Object 프로토타입이 있
방식에서 주로 쓰는 분류상의 원형을 사용하지 않고, 추가적인 기본형을 제공하여'가족 닮음'( family reseemblances ) 라고 하는 유사한 객체들을 모아서 변화를 적용한다. 다른 단점은 이 형태를 세련되게 구현하지 못하면 원형과 복제품이 같은 부분에서 복제품들이 위임 형태에 비해서 메모리가 더 많이 낭비된다는 것이다. 그러나 케보에서 실제로 하고 있는 접근 방식처럼 공유하도록 구현하고 자료는 배후에 두는 방식으로 프로그래밍에 대한 연쇄적 행동이 가능하다 [ 3 ]. 비평 [ 편집 ] 프로토타입기반 시스템을 비판하고 클래스기반 객체 모델을 지지하는 사람들은 프로그래밍 언어의 정적 타입 시스템을 지지하는 사람들이 동적 타입 시스템에 대하여 우려하는 것과 비슷한 점을 우려하고 있다 ( 자료형 참조 ). 특히, 프로그램의 정확성,
입의 행동을 복제하여 새 객체를 생성하는 과정을 거친다. 새 객체는 원본의 모든 특성을 가진다. 이 상태에서 새 객체를 수정할 수 있다. 어떤 체계에서 복제된 자식 객체는 명시적으로 프로토타입과'위임'( delegation ) 이나'닮음'( resemblance ) 으로 연관되어 있다. 그래서 프로토타입을 변경하면 복제품에 영향을 끼친다. 포스와 케보 같은 다른 체계에서는 프로토타입을 번식시키는 이런 방식을 따르지 않고, 대신에 프로토타입을 수정하더라도 복제품에는 영향을 끼치지 않는 연쇄된 형태를 사용하여 원본 객체를 수정하더라도 그 자손으로 자동 번식되지 않는다. [ 2 ] 위임 [ 편집 ] 실행시간에'위임'하는 프로토타입기반의 언어들은 올바른 메서드로 동적 디스패치를 할 수 있
을 이미 있던 객체를 참조하지 않고도 지정할 수 있다. 많은 프로토타입기반 언어에서 기본 객체 프로토타입인 Object 프로토타입이 있는데, 여기에 공통적으로 필요한 메서드가 들어있고, 모든 객체의 마스터 프로토타입으로 사용된다. 무에서 객체를 창조하는 방식의 유용한 한 가지는 새 객체의 슬롯 이름이 최상위의 Object 객체와 네임스페이스 충돌이 일어나지 않는다는 것이다. 모질라 자바스크립트는 객체의 - - proto - - 프로퍼티를 null로 지정하면 이것이 가능하도록 구현되어 있다.'복제'는 원래 있던 객체의 프로토타입의 행동을 복제하여 새 객체를 생성하는 과정을 거친다. 새 객체는 원본의 모든 특성을 가진다. 이 상태에서 새 객체를 수정할 수 있다. 어떤 체계에서
Cel ( 셀 ) ECMAScript ( ECMA스크립트 ) ActionScript ( 액션스크립트 ) [ 4 ] DMDScript E4X JavaScript ( 자바스크립트 ) [ 5 ] JScript ( J스크립트 ) Falcon ( 팰컨 ) Glyphic Script Hula Io ( 아이오 ) Ioke K - O [ 편집 ] Kevo ( 케보 ) Lisaac ( 리삭 ) Logtalk Lua ( 루아 ) MOO ( 무 ) NewtonScript ( 뉴튼스크립트 ) Obliq ( 오블리크 ) Object Lisp [ 6 ] OpenLaszlo ( 오픈라즐로 ) P - Z [ 편집 ] Perl, Class : : Prototyped 모듈 ( module ) 사용 R, pro
프로토타입 기반 프로그래밍 - 위키백과, 우리 모두의 백과사전 프로토타입 기반 프로그래밍 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 프로그래밍 패러다임 행위 에이전트 지향 배열 지향 오토마타 기반 병행 컴퓨팅 상대주의적 프로그래밍 데이터 기반 선언형 ( 반의어 : 명령형 ) 함수형 함수 논리형 순수 함수형 논리형 가추법 Answer set 병행 논리 함수 논리 귀납적 논리 제약 제약 논리 병행 제약 논리 데이터플로 플로 기반 반응형 동적 / 스크립트 사건 기반 함수 레벨 ( 반의어 : 값 레벨 ) 포인트 프리 스타일 연결식 제네릭 명령형 ( 반의어 : 선언형 ) 절차적 객체 지향 문학적 언어 지향 자연어 프로그래밍 규율 지향 도메인 특화 문법 지향 의도적 메타프로그래밍 자동 귀납적 프로그래밍 반영 속성 지향 매크로 템플릿 비구조적 ( 반의어 : 구조적 ) 배열 비결정 병렬 컴퓨팅 프로세스 지향 확률론적 스
을 받는다. 그래서 ECMA스크립트 표준의 4번째판이 자바스크립트를 클래스기반 언어로 만들려고 하고 있다. 게다가 프로토타입기반 체계가 상대적으로 기발하고 별로 사용되지 않고 있으며, 소프트웨어를 개발할 때 널리 퍼지지 못하여 최고관행과 멀기 때문이다. 프로토타입 기반 언어 목록 [ 편집 ] ( ABC 순 ) A - J [ 편집 ] ABCL ( Actor - Based Concurrent Language, 행위자 기반의 병행 언어 ) ABCL / 1, ABCL / R, ABCL / R2, ABCL / c Agora ( 애거러, 아고라 ) Cecil ( 세실 ) Cel ( 셀 ) ECMAScript ( ECMA스크립트 ) ActionScript ( 액션스크립트 ) [ 4 ] DMDScript E4X
프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다. 프로토타입기반 프로그래밍은 클래스리스(class-less), 프로토타입 지향(prototype-oriented) 혹은 인스턴스 기반(instance-based) 프로그래밍이라고도 한다. 프로토타입 기반 언어의 가장 원조격인 프로그래밍 언어인 셀프는 데이비드 엉거와 랜덜 스미스가 개발했다. 클래스리스 프로그래밍은 최근에 와서 많이 유명해졌는데, 자바스크립트와 모픽 프레임워크를 사용하는 스퀵에 적용되었고, 그 외에 세실, 뉴튼스크립트, 아이오, 무, 리볼, 케보 등에 적용되었다.(#프로토타입 기반 언어 목록 참고.)