Python, Cython, Jython, RPython

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)?

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 :)

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

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

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)
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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1