Python, Cython, Jython, RPython

Python, Cython, Jython, RPython
viGor
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 4 lata
  • Postów:48
0

Cześć, czy jest tu ktoś, kto mógłby w miarę zwięźle wytłumaczyć charakterystykę języków/technologii podanych w temacie? Jak wygląda "przepisanie" języka python na C(Cython)?

IK
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 2 lata
2

Teoretycznie Python to jezyk programowania, czy inaczej: specyfikacja jezyka programowania. Najpopularniejsza implementacja (na ktora zwyczajowo tez sie mowi Python) to CPython, czyli interpreter napisany w C.

Jython to interpreter napisany w Javie.

Cython to kompilowany superset Pythona, czyli Python ze sterydami - mozna w nim pisac jak w C uzywajac skladni Pythona. Teoretycznie kazdy kod napisany w Pythonie powinien bez zmian przejsc przez kompilator Cythona.

RPython to podzbior Pythona, z tego co kojarze celem ograniczenia pewnych funkcji bylo wycisniecie jak najlepszego performance'u, poniewaz RPython to narzedzie stworzone z mysla o pisaniu interpreterow. PyPy jest napisany w RPythonie - czyli jest interpreterem Pythona napisanym w Pythonie :)

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około godziny
1

Można jeszcze dołożyć https://github.com/graalvm/graalpython - na razie mocno w powijakach, więc kompatybilność i wydajność pozostawiają wiele do życzenia, ale już (oprócz uruchamiania stanardowego kodu Pythonowego) umożliwia polyglot programming: https://github.com/graalvm/graalpython/blob/master/docs/user/POLYGLOT.md


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4935
0

Jak wygląda "przepisanie" języka python na C(Cython)?

Zobacz na przykład tutaj:
https://pythonprogramming.net/introduction-and-basics-cython-tutorial/
A jak to działa w praktyce, np., tutaj:
https://lion137.blogspot.com/2020/02/how-to-speed-up-python-edit-distance.html


AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
0
  1. Warto zerknąć na C-API zwykłego Pythona, choćby pobieżnie, by zrozumieć "jak to chodzi". Bogato opisane w oficjalnej dokumentacji "Extending and Embedding"
  2. Był/jest jeszcze dotnetowy Python zwany IronPython, chyba już odstawiony na bok i coś się robi na Graalu (informacja nieoficjalna)

Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
Wibowit
coś się robi na Graalu - no przecież napisałem o co dokładnie chodzi
kbi64
  • Rejestracja:prawie 18 lat
  • Ostatnio:7 miesięcy
  • Lokalizacja:Wielkopolska
0

CPython jest napisany w C, źródła są na GitHubie. Mi jako elektronikowi z wykształcenia bardzo przyjemnie jest przejść z C na Pythona, bardzo upraszcza wiele procesów, zarządza dobrze pamięcią (zainteresuj się porównaniem zarządzaniem pamięcią w Pythonie i w Javie albo C#, jakie są różnice). Można wyróżniać mnóstwo zalet tego języka, żałuję że wcześniej się nim nie zainteresowałem.

Wibowit
zainteresuj się porównaniem zarządzaniem pamięcią w Pythonie i w Javie albo C#, jakie są różnice - takie, że w Javie i C# mamy tylko tracing GC, a w CPythonie hybrydę tracing GC + reference counting, bo samo zliczanie referencji w ogólności zawodzi (prowadzi do wycieków pamięci).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.