2011-08-29 15 views
11

최근 Smalltalk에 대한 소개가 나에게 '순수한'객체 지향 스타일의 응용과 이점에 대해 깨닫게했습니다. 이전에 Ruby에서이 이점을 보았습니다. 비 객체 지향적 인 존재가 if, unless 등의 구조가 존재하는 것 같았지만 모든 것을 통과하지 못하는 것처럼 보였습니다. 대신 부울 & 컬렉션에 흐름 제어 방법을 사용하고, 어떤 절차 스타일의 흐름 제어 (블록 또는 뭔가 비슷한 통해 기능 포함) '모든 것은 객체이다'처럼 여기 순수한으로가장 순수한 객체 지향 언어는 무엇입니까?

, 나는 것들에 대해 이야기하고있다.

그러나 스몰 토크 (Smalltalk) 같은 언어에서도 객체 지향적이지 않은 것으로 두드러집니다. 예를 들어, 특별한 문법 (': is :'또는 유사한 메소드 대신에 : =)을 사용하지 않고 변수 할당을 수행하는 것이 가능하지 않고 함수에서 값을 반환하는 것은 '속한 것 같지 않은^연산자를 필요로합니다 '어떤 대상에게.

이 스타일을 더 많이 수행하는 언어가 있습니까?

+0

순도의 이점은 무엇입니까? 순결은 모스 탯이 절차상의 관점에서 이해하기가 너무 어렵 기 때문에 하스켈이 다른 함수 언어보다 훨씬 더 높은 학습 곡선을 갖도록 만든다. –

+2

@Chris : 그렇습니다.하지만 일단 모나드를 얻으면 * 멋진 상태가됩니다. 다른 한편으로는,이 질문은 순결의 문제를 조금 더 멀리 운반하는 것처럼 보입니다. 물론, 반환 값을 떨어 뜨릴 수 있고 객체 상태를 통과하기 위해 그런 종류의 통신이 필요합니다. 'self.result'), 프로그래머가 모든 것을 가능한 한 작게 유지하려고 시도하는 이유가 있습니다. 게다가 어떤 객체 속성을 그 값으로 정의하지 않는 한 리턴 값이 없기 때문에 메소드 체인을 깨뜨릴 수 있습니다.하지만 우리는 다시 마술로 돌아갑니다. 그리고 그 목록은 계속됩니다. – delnan

+1

이 점에있어서 순수성은 매우 장황하고 잠재적으로 성능이 좋지 않을 수 있다는 것을 완전히 인식하고 있지만 매우 작고 일관된 룰 세트를 갖는 언어에서도 상당한 이점이 있습니다. 그렇다고해도 좋은 것을 너무 많이 모범으로 삼았을지라도 극단적 인 것을 취한 언어를 찾고 싶습니다. – donalbain

답변

8

- 그리고 "자기"언어에서, 조금 더 갈 않습니다 할당에 관해서는 최소한. 자기 자신을 프로그래밍하지 않았기 때문에 나는 그것보다 더 말할 수 없다. self와 비슷한 또 다른 새로운 언어는 Slate이며 프로토 타입이기도하며 할당을 위해 메시지 전송을 사용합니다.

2

에펠, 스몰 토크, 그리고 Smalltalker (여기 다른 답변을 많이 비교) 당신이 후에 무엇인지 이해 긴 시간으로 루비 http://www.jvoegele.com/software/langcomp.html

+2

Smalltalk은 질문에서 논의되고 해산되었습니다. 루비는 스몰 토크보다 훨씬 더 하이브리드이다 (예를 들어'call/cc '와 같은 기능적 특징을 가지고있다). 질문을 읽어보십시오. – delnan

+0

그 링크는 실제로 훌륭한 리소스입니다. – donalbain

+0

그것은 10 년 전에 훌륭한 자원이었습니다. – fdreger