우리가 필요로하는 것은 고도의 동시 알고리즘을위한 자연스러운 추상화입니다. 액터 (Erlang 생각 : thinkers)는이 방향으로 나아가고 있지만, 모든 사람들에게 맞는 해결책은 아닙니다. fork/join 또는 map/reduce와 같은 좀 더 구체적인 추상화는 일반적인 문제에 더 쉽게 적용 할 수 있습니다.
이러한 동시성 추상화의 모든 트릭은 함수 스타일 프로그래밍이 필요하다는 것입니다. 병행 성은 공유 된 가변 상태와 잘 맞지 않습니다. 그들이 말했듯이 "자물쇠는 유해한 것으로 간주됩니다". 대부분의 개발자는 엄격한 필수 배경에서 왔기 때문에 비공유 연속성 전달 방식으로 전환하는 것은 종종 매우 어려울 수 있습니다.
덧붙여 말하자면 동시성 추상화와 관련하여 Clojure는이 방향에서 매우 흥미로운 기능을 가지고 있습니다. 그것은 일종의 액터를 가질뿐만 아니라 전역 적 원자 참조 메커니즘과 함께 트랜잭션 메모리 모델 (데이터베이스라고 생각하십시오)을 정의합니다. 이 두 기능을 사용하면 동시 운영이 잠금 또는 경쟁 조건에 대해 걱정할 필요없이 "변경 가능한"상태를 공유 할 수 있습니다.
결국 교육에 나옵니다. 동시성 추상화에 필요한 이론적 인 작업 중 많은 부분이 이미 완료되었습니다.이를 받아 들일 필요가 있습니다.불행하게도 Erlang과 Haskell이 증명했듯이 때로는 최고의 아이디어가 극단적 인 프린지 인구로 추방됩니다. Scala와 Clojure와 같은 노력이 기존의 지원이 잘 된 플랫폼 (JVM)에 몰래 들어가기 때문에 고급 추상화를 주류로 가져 오는 데 성공할 수 있기를 바랍니다.
우리는 많은 작업을 병렬로 수행 할 때와 마찬가지로 실제 생활 솔루션 (알고리즘)을 컴퓨터 언어로 변환해야합니다. OOP가 절차 적 코딩을 위해 코딩 한 것처럼. OOP는 절차 적 코딩보다 실제 코딩 스타일입니다. 그래서 나는 그런 종류의 해결책을 원합니다. –