나는 그런 질문을 던질 SO 형제들 사이에서 더 좋은 곳을 생각할 수 없습니다. 원래 저는 "파이썬이 순수한 OO 언어입니까?" 그러나 용어를 정의하는 동안 사람들이 겪는 어려움과 불편 함을 고려하면서 용어 자체에 대한 명확한 정의를 얻는 것으로 시작하기로 결정했습니다.
앨런 케이 (Alan Kay) 박사의 서신 으로 시작 하는 것이 오히려 공평 할 것이다 (생물학적 유추에서 세포 나 다른 생물체에 대한 영감을 주목하라).
작업에 접근하는 방법은 다음과 같습니다.
- 스몰 토크, 스칼라,
자바등 의 용어를 정의하기에 독특하고 충분한 특정 속성을 보여줄 수있는 (또는 그렇게하지 못하는) 프로그래밍 언어를 나열하여 비교 분석을 제공합니다 (Smalltalk, Scala,Java등은 가능하지만 예제는 가능하지만 IMO는 실제로 완전한 것으로 보이지는 않습니다) 유익 하지도 않음 ) - 공식적인 정의를 제공하십시오 (또는 더 학문적 또는 수학적 스타일로).
- 구체적인 언어의 의미 론적 맥락 또는 사전 프로그래밍 경험에 전적으로 의존하는 철학적 정의를 제공하십시오 (커뮤니티가 성공적으로 설명 할 기회가 있어야 함).
현재 버전 : " 작업과 피연산자를 ( 문법적으로 ) 구별 할 수 있고 각 피연산자의 유형에 대해 유추 할 수 있는 특정 프로그래밍 ( 공식 ) 언어 가이 유형이 객체인지 (OOP의 의미) 아닌지 여부 이 언어에는 객체 인 하나 이상의 유형이있는 한 이러한 언어를 OO 언어로 사용할 수 있습니다. 마지막으로, 모든 언어 유형이 객체 인 경우 이러한 언어를 순수 (강한) OO 언어로 정의합니다. "
가능한 개선을 부탁드립니다. 보다시피 방금 정의를 "객체"라는 용어에 의존하게 만들었습니다.
[편집하다]
또한 유형 언어와 마찬가지로 유형의 개념을 사용합니다 . 데이터 유형 프로그래밍 또는 유형 지향 프로그래밍은 (프로그램 텍스트, 즉 리터럴 및 데이터 변수의 특정 값을 처리하는 방법-유형 안전성으로 발전하는 방법)의 구문 해석 일뿐 아니라 언어 문법에 기인하고 공식적인 방식으로 연구 될 수 있습니다 (수학적 논리 사용) 소위 type systems . 특정 유형 시스템에 소위 범용 유형 을 요구하는 것이 OO 언어의 순도를 정의하는 방법 중 하나입니다 (이를 의미 적으로 확장하는 방법이 있음).
NB
대답하는 방법 :
- 용어 및 개념에 대한 이해를 지원 / 설명하는 책 또는 참조를 지정하면 도움이됩니다 (일반적으로 좋은 정의는 기본을 제외한 모든 종속 개념을 다루거나 참조합니다).
- 가능하다면 답변 / 정의의 들여 쓰기 범주를 명확하게 명시하지 않은 경우 표시하십시오 (위 참조 : 1-언어 예, 2-수학 논리, 3-기술 설명 및 프로그래밍 철학)
- 분류가 중요 unmix 다른 공지 된 방법에서 OO 패러다임 요소 (없고 의해 시도 응답 상태 (기간 순수 OO이 용어 OO에 포함되어 또한 때문에) 혼동은 / 오버랩 그들을 예는 일반적 요소 모듈성이 커버 될 수있다 OO 프로그래밍으로 구현) : OOP와 기능 프로그래밍, 논리적 프로그래밍 (특히 강력하게 특수화 된), Abstarct Data Types (ADT), Modular, Metaprogramming (일반 및 LISP의 매크로 확장 시간)과 OOP를 구별하십시오. 계약 (예 : 에펠), 측면 지향 (AO), (선언적, 기능적 분류와 Dijkstra의 구조적 정의에 대한 역사적 정의가 명확함)
공식적인 정의를 내리기가 어렵다 : 놀랍게도 충분한 논리 (형식) 시스템 (대부분 유형 기반)의 형태로 OOP에 대한 수학적 설명을 제공하고 하나의 개념을 차례로 정의하는 것은 매우 쉽다. 심지어추상적 인 오락 이나 운동보다는 형식 안전 검사 또는 새로운 언어 디자인 측면에 형식주의를 적용하여 더 실용적인 무언가를 시도 할 수도 있습니다( 직관적 유형 이론 , 종속 유형 , 독립적으로 람다 미적분학으로 FOL 형식주의에서OOP의 조회 구성)카테고리 이론을 사용하여). 여기서 중요한 점은 의심 할 여지없이어쩌면 일정 비율의 발견을 제외하고 - 같은 제형은 IMO 강하게 가능성이 처음 불완전 (컴퓨터 공학) OOP의 이해 및 이후 거의 액세스 할 수있는 (따라서 거의 프로그래밍 세계에 뒤로 기여하지 결국 대부분의 지역에서 (결함) 바이어스되는 응용 프로그램의 존재에 의해 공식적으로 세계에서 백업 대중적인 언어로 통합 ).
그렇습니다. 정의 만이 아니라 "좋은"정의를 정확하게 제시하기는 어렵습니다. 그러나 나는 당신의 경험과 직접적인 개입 때문에 여기에 이것을 묻는 것에 긍정적입니다.