문제

나는 최근에 읽고있다 스택이없는 파이썬 그리고 그것은 바닐라 cpython에 비해 많은 장점이있는 것 같습니다. 그것은 무한 재귀, 마이크로 스레드, 연속 등과 같은 멋진 기능을 모두 가지고 있으며 동시에 cpython보다 빠릅니다 (약 10%, 파이썬 위키 믿어야한다) 그리고 그것과 호환됩니다 (적어도 버전 2.5, 2.6 및 3.0).

이 모든 것이 사실이 되기에는 너무 좋아 보인다. 하지만, 탄 스타 아프, 나는 파이썬 커뮤니티에서 스택리스에 대한 열정이 많지 않으며 PEP 219 결코 실현되지 않았습니다. 왜 그런 겁니까? Stackless의 단점은 무엇입니까? 스택이없는 옷장에 어떤 해골이 숨겨져 있습니까?

(Stackless는 실제 동시성을 제공하지 않고 동시 방식으로 더 쉬운 프로그래밍 방법을 제공한다는 것을 알고 있습니다. 실제로 나를 괴롭히지 않습니다.)

도움이 되었습니까?

해결책

위키의 "스택리스가 10% 더 빠른 곳"이 어디에서 왔는지 모르겠지만 다시는 그 성능 숫자를 측정하려고 시도한 적이 없습니다. 나는 Stackless가 그렇게 큰 차이를 만들기 위해 무엇을하는지 생각할 수 없습니다.

Stackless는 여러 조직/정치적 문제가있는 놀라운 도구입니다.

첫 번째는 역사에서 나옵니다. Christian Tismer는 약 10 년 전에 결국 무엇이 쌓이지 않았는지 이야기하기 시작했습니다. 그는 자신이 원하는 것에 대한 아이디어를 가지고 있었지만 자신이하고있는 일과 사람들이 왜 그것을 사용해야하는지 설명하는 데 어려움을 겪었습니다. 그의 배경은 코 루틴과 같은 아이디어에 관한 CS 교육이 없었기 때문에 그의 프레젠테이션과 토론이 매우 구현 지향적이기 때문에 아직도 계속해서 고관절이없는 사람은 누구나 해결책을 사용하는 방법을 이해하기가 어렵 기 때문입니다. 그들의 문제.

이런 이유로 초기 문서는 열악했습니다. 타사 기고자로부터 최고를 사용하여 사용하는 방법에 대한 설명이있었습니다. PYCON 2007에서 나는에 대해 이야기했다.스택리스 사용"Pycon Survey Numbers에 따르면, 꽤 잘 진행되었습니다. Richard Tew는 이것들을 수집하고 업데이트하는 훌륭한 일을했습니다. stackless.com, 새로운 파이썬 릴리스가 등장 할 때 분포를 유지합니다. 그는 직원입니다 CCP 게임, 스택리스를 게임 시스템의 필수 부분으로 사용하는 Eve Online 개발자.

CCP 게임은 또한 사람들이 Stackless에 대해 이야기 할 때 사용하는 가장 큰 실제 사례입니다. Stackless의 주요 자습서는 Grant Olson 's입니다.Stackless Python을 사용한 동시 프로그래밍 소개", 그것은 게임 지향적이기도합니다. 나는 이것이 게임이 게임 지향적이라는 점에서 게임 지향적이라는 비뚤어진 아이디어를 제공한다고 생각합니다.

또 다른 어려움은 소스 코드였습니다. 원래 형태로 Python의 많은 부분에 대한 변화가 필요했으며, 이로 인해 Python 리드 인 Guido Van Rossum이 조심 스러웠습니다. 그 이유 중 일부는 Call/CC에 대한 지원이었으며 나중에 "더 높은 수준의 형태가있을 때 GOTO를 지원하는 것과 너무 비슷한 것"이라고 제거되었습니다. 나는이 역사에 대해 확실하지 않으므로이 단락을 "너무 많은 변화를 요구하는 데 사용 된 스택리스"로 읽으십시오.

나중에 릴리스에는 변경이 필요하지 않았으며 Tismer는 Python에 계속 포함되도록 계속 추진했습니다. 약간의 고려 사항이 있었지만 공식적인 입장 (내가 아는 한)은 Cpython이 Python 구현 일뿐 만 아니라 참조 구현으로 의미하며 Jython이 구현할 수 없기 때문에 Stackless 기능이 포함되지 않는다는 것입니다. 또는 철 파이썬.

에 대한 계획은 전혀 없습니다.코드 기반의 중요한 변경". Arafangion 's (주석 참조)의 인용문 및 참조 하이퍼 링크는 대략 2000/2001입니다. 구조적 변화는 오랫동안 완료되었으며 위에서 언급 한 것입니다. 이제는 안정적이고 성숙하며 약간의 조정만으로도 마찬가지입니다. 지난 몇 년 동안 코드 기반에.

Stackless의 마지막 한계 - Stackless에 대한 강력한 옹호자는 없습니다. Tismer는 이제 깊이 관여하고 있습니다 pypy, 파이썬 용 파이썬 구현입니다. 그는 Pypy에서 스택리스 기능을 구현했으며 Stackless 자체보다 훨씬 우수하다고 생각하며 Pypy가 미래의 길이라고 생각합니다. Tew는 Stackless를 유지하지만 옹호에 관심이 없습니다. 나는 그 역할을하는 것을 고려했지만 어떻게 수입을 얻을 수 있는지 알 수 없었습니다.

Stackless에서 훈련을 원한다면 자유롭게 저에게 연락하십시오! :)

다른 팁

이 토론을 찾는 데 꽤 오래 걸렸습니다. 그 당시 나는 Pypy를 사용하지 않았지만 건강이 갑자기 갑자기 멈출 때까지 Psyco와 2 년간의 일을했습니다. 나는 이제 다시 활동하고 대체 접근 방식을 설계하고 있습니다. Europython 2012에서 발표 할 것입니다.

대부분의 Andrews 진술은 정확합니다. 약간의 추가 사항 :

Stackless는 10 년 전 CPYTHON보다 훨씬 빠릅니다. 통역사 루프를 최적화했기 때문입니다. 당시 Guido는 준비가되지 않았습니다. 몇 년 후, 사람들은 비슷한 최적화와 점점 더 나은 것을 수행하여 예상대로 Stackless가 약간 느리게 만듭니다.

포함시 : 글쎄, 처음에 나는 매우 푸르고 Stackless가 갈 길이라고 확신했습니다. 나중에, 거의 포함시킬 수 있었을 때, 나는 그것에 대한 관심을 잃었고, 부분적으로 좌절감을 느끼고 부분적으로 스택을 통제하기 위해 이런 식으로 머무르도록 선호했습니다.

이 주장이 사용될 수있는 다른 예가 있기 때문에 "기타 구현이 할 수는 없다"와 같은 주장은 항상 나에게 절름발이라고 느꼈다. 나는 그것에 대해 더 잘 잊어 버리고 Guido와 좋은 우정을 유지하면서 내 자신의 배포판을 가지고 있다고 생각했습니다.

한편 상황이 다시 변하고 있습니다. 나는 pypy를 위해 일하고 있고 스택리스는 연장이 때때로 나중에 그것에 대해 이야기 할 때

건배 - 크리스

내가 올바르게 기억한다면, Stackless는 공식 Cpython에 포함 될 예정 이었지만 Stackless의 저자는 Cpython 사람들에게 그렇게하지 말라고 말했습니다. 왜냐하면 그는 코드 기반을 크게 변경할 계획이기 때문입니다. 그는 나중에 통합을 원했기 때문입니다. 프로젝트가 더 성숙했습니다.

나는 또한 여기서 답에 관심이 있습니다. 나는 Stackless와 약간 연주했으며 표준 파이썬에 좋은 추가 기능이있는 것처럼 보입니다.

Python이 다른 스택으로 변경하려는 경우 PEP 219는 C 코드에서 Python 코드를 호출하는 데 잠재적 인 어려움을 언급합니다. 이를 감지하고 방지하는 방법이 필요합니다 (C 스택을 쓰레기를 피하기 위해). 그래도 이것이 다루기 쉬운 것이라고 생각합니다. 그래서 나는 왜 Stackless가 그 자체로 서 있어야하는지 궁금합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top