2014-05-14 2 views
0

Chapter 1 of Programming in Scala에서 인용 : 스칼라 - 액터 모델이 OO와 함수형 프로그래밍을 혼합의 예는 왜?

은 ... 스칼라 함수 값이 객체입니다. 기능 유형은 서브 클래스에 의해 상속 될 수있는 클래스 있습니다. 이 학술 능률이보다 더 아무것도 보이지 않는다 수도 있지만, 확장 성을위한 깊은 결과를 초래한다. 사실 이전에 표시된 배우의 개념은 기능과 객체의 통일없이 구현 을 수 없었다.

나는 저작자 개념이 객체 지향 및 함수형 프로그래밍을 통합하지 않으면 구현 될 수 없다고 말하는 이유를 이해하지 못합니다. 누군가 설명 할 수 있을까요? 저자는 배우 개념이 통합 OO 및 기능없이 구현 될 수 없다고 이유를

actor { 
    var sum = 0 
    loop { 
     receive { 
     case Data(bytes)  => sum += hash(bytes) 
     case GetSum(requester) => requester ! sum 
     } 
    } 
    } 
+0

액터 모델이 처음 얼랑에 구현에 성장 언어, [스칼라가있다] .. 낚시 줄에 미끼로 더주의해야한다 가장 명확하게 OO 언어가 아닙니다. 필자는 저자가이 책에서 논의 된 특정 구현만을 언급하고 있다고 생각한다. – wingedsubmariner

+0

저작자의 "판매"포인트는 언어 내에서 최상위 클래스 값 (즉, 언어의 다른 값과 같은 * 기능 및 * 조작 기능 *의 능력)을 가지므로 얼랑 액터 개념을 다시 구현함으로써 덕분입니다 동일한 * 구문 * 및 * 의미 론적 *에 가깝게 구현할 수 있었지만, 일등 함수가 없으면 불가능했습니다. – didierc

+0

@wingedsubmariner : 사실이 아닙니다. 배우 모델은 1973 년 Carl Hewitt에 의해 고안되었고, 첫 번째 Actor Language는 1975 년 Carl Hewitt가 만든 PLASMA입니다. Erlang은 80 년대에 만들어졌습니다. 실제로 얼랑 (Erlang)의 설계자는 그들이 설계 한 후에도 실제로 배우 모델에 대해 알지 못했습니다. 조 암스트롱 (Joe Armstrong)이 자신의 논문을 썼을 때만 그들은 배우 모델을 독자적으로 다시 발명했다는 것을 깨달았습니까? –

답변

1

"나는 아주 이해가 안 : 예를 들어

, 여기에 체크섬 계산기 서비스를 구현하는 간단한 스칼라 배우 프로그램 작성."

저자는 하지 사실에서 (스칼라 나중에 장 주소와 같은 개념의 숫자를 가지고는하지만) 오히려 ..

.. 그 견적에 "Functional Programming" 말을했다 이전에 보여 배우의 개념은 기능이 통일없이 구현 및 객체되지 않았을 수 있습니다.

이것의 주요 의미는 기능 First-Class이며 같은 값의 임의의 다른 유형으로 건네 줄 수 있다는 것이다 - 이것은 결국 이러한 "반응"으로, 콜백 함수가 적합하다.

그러나, 실제로 도시 한 예에서는 나타나지 않는다 "기능과 통일 개체"음 전혀들이 아래에 통합되는 경우에도 (심지어 패턴 매칭 함수 산출). 따라서, 인용

했다 당신이

+0

그는 인용문에서 말하지 않지만, 텍스트에서 두 줄을 읽으면 분명히 의미합니다. – didierc

관련 문제