최근 Smalltalk에 대한 소개가 나에게 '순수한'객체 지향 스타일의 응용과 이점에 대해 깨닫게했습니다. 이전에 Ruby에서이 이점을 보았습니다. 비 객체 지향적 인 존재가 if
, unless
등의 구조가 존재하는 것 같았지만 모든 것을 통과하지 못하는 것처럼 보였습니다. 대신 부울 & 컬렉션에 흐름 제어 방법을 사용하고, 어떤 절차 스타일의 흐름 제어 (블록 또는 뭔가 비슷한 통해 기능 포함) '모든 것은 객체이다'처럼 여기 순수한으로가장 순수한 객체 지향 언어는 무엇입니까?
, 나는 것들에 대해 이야기하고있다.
그러나 스몰 토크 (Smalltalk) 같은 언어에서도 객체 지향적이지 않은 것으로 두드러집니다. 예를 들어, 특별한 문법 (': is :'또는 유사한 메소드 대신에 : =)을 사용하지 않고 변수 할당을 수행하는 것이 가능하지 않고 함수에서 값을 반환하는 것은 '속한 것 같지 않은^연산자를 필요로합니다 '어떤 대상에게.
이 스타일을 더 많이 수행하는 언어가 있습니까?
순도의 이점은 무엇입니까? 순결은 모스 탯이 절차상의 관점에서 이해하기가 너무 어렵 기 때문에 하스켈이 다른 함수 언어보다 훨씬 더 높은 학습 곡선을 갖도록 만든다. –
@Chris : 그렇습니다.하지만 일단 모나드를 얻으면 * 멋진 상태가됩니다. 다른 한편으로는,이 질문은 순결의 문제를 조금 더 멀리 운반하는 것처럼 보입니다. 물론, 반환 값을 떨어 뜨릴 수 있고 객체 상태를 통과하기 위해 그런 종류의 통신이 필요합니다. 'self.result'), 프로그래머가 모든 것을 가능한 한 작게 유지하려고 시도하는 이유가 있습니다. 게다가 어떤 객체 속성을 그 값으로 정의하지 않는 한 리턴 값이 없기 때문에 메소드 체인을 깨뜨릴 수 있습니다.하지만 우리는 다시 마술로 돌아갑니다. 그리고 그 목록은 계속됩니다. – delnan
이 점에있어서 순수성은 매우 장황하고 잠재적으로 성능이 좋지 않을 수 있다는 것을 완전히 인식하고 있지만 매우 작고 일관된 룰 세트를 갖는 언어에서도 상당한 이점이 있습니다. 그렇다고해도 좋은 것을 너무 많이 모범으로 삼았을지라도 극단적 인 것을 취한 언어를 찾고 싶습니다. – donalbain