Hướng dẫn which one is a python implementation - cái nào là triển khai python

Triển khai Python

Một "việc triển khai" của Python nên được thực hiện có nghĩa là một chương trình hoặc môi trường cung cấp hỗ trợ cho việc thực hiện các chương trình được viết bằng ngôn ngữ Python, như được trình bày bởi triển khai tham chiếu CPython.

Đã có và có một số gói phần mềm riêng biệt cung cấp những gì chúng ta nhận ra là Python, mặc dù một số gói giống như phân phối hoặc biến thể của một số triển khai hiện có hơn là triển khai ngôn ngữ hoàn toàn mới.

Biến thể Cpython

Đây là các triển khai dựa trên lõi thời gian chạy Cpython (triển khai Python tham chiếu thực tế), nhưng với hành vi hoặc tính năng mở rộng trong một số khía cạnh.

  • Trình liên kết Crosstwine - Một sự kết hợp của CPython và thư viện bổ sung cung cấp hiệu suất được cải thiện (hiện đang độc quyền)

  • Python không chồng - Cpython với sự nhấn mạnh vào đồng thời bằng cách sử dụng Tasklets và kênh (được sử dụng bởi DSPYTHON cho Nintendo DS)

  • PYSTON - Một ngã ba của Cpython, ban đầu được phát triển tại Dropbox nhưng bây giờ bởi các nhà phát triển độc lập, tập trung vào hiệu suất bao gồm cả việc nhanh chóng byte và một JIT nhẹ.

  • Cinder, một ngã ba của Cpython bằng Instagram, chứa một số tối ưu hóa như viết lại mã byte và trình biên dịch JIT theo phương thức.

  • Pyjion, một phần mở rộng JIT cho CPython biên dịch mã Python thành CIL (.NET) và thực thi nó trên CLR.

  • UNLADEN -SWALLOW - "Một nhánh tối ưu hóa của Cpython, dự định sẽ tương thích hoàn toàn và nhanh hơn đáng kể", ban đầu được xem xét để hợp nhất với Cpython đối tượng với PEP 3146, nhưng bây giờ

  • WPYTHON - Việc thực hiện lại Cpython bằng cách sử dụng "wordcode" thay vì mã byte

  • Egenix Pyrun - Thời gian chạy Python (Thư viện CPyThon + STD) được nén thành một nhị phân 3-4MB duy nhất

  • X -Python - Thông dịch viên C Python được viết bằng Python; Hữu ích cho mục đích giáo dục. Ngoài ra còn có trình gỡ lỗi mã byte cho nó

  • Falcon - Máy đăng ký Python được vận chuyển dưới dạng mô -đun mở rộng

Giảm biến thể Python

Chúng cung cấp một tập hợp con của thư viện ngôn ngữ đầy đủ + tiêu chuẩn, để sử dụng trong các kịch bản nhúng (xem thêm Chủ đề nhúngPhonthon)

  • Micropython - Python cho vi điều khiển (chạy trên Pyboard và vi khuẩn BBC)

  • Circuitpython - Chi nhánh của Micropython của Adafruit

Cũng xem các phần trên các trình biên dịch và tiện ích mở rộng Python bên dưới, một số trong đó sẽ đủ điều kiện là các biến thể CPython.

Thực hiện khác

Đây là những hình thức lại của ngôn ngữ Python không phụ thuộc vào (hoặc nhất thiết phải tương tác với) lõi thời gian chạy CPython. Nhiều người trong số họ tái sử dụng (một phần lớn) triển khai thư viện tiêu chuẩn.

Lưu ý rằng hầu hết các dự án này chưa đạt được tuân thủ ngôn ngữ. Tuy nhiên, nhiều trong số này có mục tiêu và tính năng hoặc chạy trong một số môi trường nhất định khiến chúng trở nên thú vị về mặt riêng của họ. Các triển khai duy nhất được biết là tương thích với một phiên bản nhất định của ngôn ngữ là Ironpython, Jython và Pypy.

Thực hiện làm việc

Các triển khai sau đây có thể không toàn diện hoặc thậm chí hoàn chỉnh, nhưng ít nhất có thể được cho là đang hoạt động ở chỗ bạn có thể chạy các chương trình điển hình với chúng rồi:

  • Pypy - Python trong Python, bao gồm một trình biên dịch JIT theo dõi

  • Jython - Python trong Java cho nền tảng Java

  • IronPython - Python trong C# cho thời gian chạy ngôn ngữ chung (CLR/.NET) và phiên bản cộng đồng IronPython của dự án FEPY (IPCE)

  • Graalpython-Python trong Java, sử dụng trình biên dịch đúng lúc Graal và Khung triển khai phiên dịch Truffle

  • SkyBison - Một C ++ từ việc triển khai Python 3.8 bằng cách sử dụng GC di chuyển, các lớp ẩn và một mẫu JIT.

  • Brython - Một cách để chạy Python trong trình duyệt thông qua bản dịch sang JavaScript

  • Clpython - python trong lisp chung

  • HOTPY - Một máy ảo cho Python hỗ trợ tối ưu hóa và dịch mã byte (sang mã gốc) bằng cách sử dụng thông tin loại được thu thập trong thời gian chạy

  • PYJS - (Pyjama chính thức) Trình biên dịch Python to JavaScript cộng với khung Web/GUI

  • Pymite - Python cho các thiết bị nhúng

  • PYVM-Bộ phần mềm và máy ảo liên quan đến Python cung cấp hệ thống "không gian người dùng" gần như khép kín

  • Rapydscript - Ngôn ngữ giống như Python biên soạn cho JavaScript

  • Snappy - "Một tập hợp con của ngôn ngữ Python đã được tối ưu hóa để sử dụng trong các thiết bị nhúng năng lượng thấp" (dường như độc quyền)

  • TinyPy - Một triển khai tối giản của Python trong 64K mã

  • Transcrypt-Python 3.6 đến trình mua trước JavaScript với mã nạc và nhanh được tạo ra, Sourcemaps, Minification tích hợp, kiểm tra loại tĩnh tùy chọn, hỗ trợ JSX

Thực hiện dự kiến

Các triển khai sau đây là các công trình rõ ràng đang được tiến hành; Họ có thể không thể chạy các chương trình điển hình:

  • BERP - Việc triển khai Python 3 trong Haskell, cung cấp môi trường tương tác cũng như trình biên dịch

  • Phpython - Một thông dịch viên Python được viết bằng PHP

  • Pyjaco - Trình biên dịch Python to JavaScript tương tự như PYJ nhưng nhẹ hơn

  • Pystacho, giống như Skulpt, Python trong JavaScript

  • https://web.archive.org/web/20041206021225if_/http://www.twistedmatrix.com/users/z3p/files/pyvm2.py Danh sách năm 2003

  • Skulpt - Python trong JavaScript

  • Typhon - Một triển khai Python dựa trên Rubinius

  • Violet - Một triển khai nhanh chóng của Python

Phần mở rộng

Đây thường là một phần của CPython (hoặc một số triển khai khác) nhưng thay đổi hành vi của việc thực hiện:

  • PSYCO-Một trình biên dịch chuyên dụng đúng lúc cho CPython, bị bỏ rơi, chỉ hoạt động cho CPython 2.6.

Trình biên dịch

Các trình biên dịch này thường thực hiện một cái gì đó gần với Python, mặc dù một số trình biên dịch có thể áp đặt các hạn chế làm thay đổi bản chất của ngôn ngữ:

  • Cython-Một trình biên dịch Python-to-C tối ưu hóa được sử dụng rộng rãi, trình tạo mô-đun mở rộng CPython và ngôn ngữ trình bao bọc cho các thư viện bên ngoài ràng buộc. Tương tác với thời gian chạy Cpython và hỗ trợ nhúng CPython vào các nhị phân độc lập.

  • Nuitka-Trình biên dịch Python-to-C ++ sử dụng libpython vào thời gian chạy, thử một số tối ưu hóa thời gian biên dịch và thời gian. Tương tác với thời gian chạy Cpython.

  • MyPyC biên dịch mã python được gõ đầy đủ vào phần mở rộng C, dựa trên MyPy.

  • 2c-python-Trình biên dịch Python-to-C tĩnh, rõ ràng dịch mã byte cpython sang c

  • Compyller - Một nỗ lực để "chuyển đổi mã byte thành cụm x86" (hiện đã bị bỏ rơi)

  • GCC Python Front-end-Một nỗ lực đang tiến triển để biên dịch mã Python trong cơ sở hạ tầng GCC

  • PYC - Thực hiện phân tích tĩnh để biên dịch các chương trình Python, sử dụng các kỹ thuật tương tự để làm giảm da

  • Red Skin-Trình biên dịch Python-to-C ++, được giới hạn trong một tập hợp con được gõ một cách ngầm định của ngôn ngữ mà nó có thể tự động suy ra các loại hiệu quả thông qua phân tích toàn bộ chương trình

  • Unpython - Trình biên dịch Python to C bằng cách sử dụng các chú thích loại

  • VOC - Một bộ chuyển đổi chuyển đổi mã byte Python thành mã byte Java.

Máy gia tốc số

  • Numba - Trình biên dịch thời gian chạy tối ưu hóa Numpy -Aware cho Python

  • Pythran - Trình biên dịch trước thời hạn cho một tập hợp con của Python với trọng tâm là máy tính khoa học

  • Copperhead-Python song song dữ liệu hoàn toàn chức năng, biên dịch cho các phụ trợ đa lõi và GPU

  • Parakeet - Trình biên dịch thời gian chạy cho một tập hợp số của Python

Ngôn ngữ tương tự nhưng khác biệt

Các ngôn ngữ này không cố gắng tương thích trực tiếp ngay cả với một tập hợp con Python, chọn cung cấp bộ tính năng của riêng họ:

  • Alore - một ngôn ngữ có thể biên dịch với việc gõ tùy chọn và cú pháp lấy cảm hứng từ Python/Ruby; Một cây cầu Alore-Python được lên kế hoạch; Nỗ lực phát triển đã được chuyển sang MyPy (xem bên dưới)

  • Cobra

  • Converge - Lấy cảm hứng từ Python, Haskell, Icon và SmallTalk, cung cấp các macro có thể được đánh giá tại thời gian biên dịch

  • Delight - dựa trên ngôn ngữ lập trình D

  • Genie - Dựa trên cùng một nền tảng (GTK+, Gnome) như ngôn ngữ lập trình Vala, được cho là lấy cảm hứng từ Boo

  • mypy - python với gõ tĩnh tùy chọn và một số loại suy luận cục bộ

  • MYTHON - Một biến thể có thể mở rộng của ngôn ngữ lập trình Python, rõ ràng là một mặt trước cho Cpython

  • NIM - được gõ tĩnh, biên dịch thành C, C ++ và JS, có các loại được tham số hóa, macro, v.v.

  • Pythonect - Một ngôn ngữ định hướng dữ liệu áp dụng cú pháp biểu thức Python cơ bản, được triển khai trong Python và được tích hợp với môi trường Python

  • Ngôn ngữ được bảo mật của Roket - Một trình thông dịch cho ngôn ngữ giống như Python cho các ứng dụng trong đó mong muốn thực thi "Python bị hạn chế"

  • Serpent - Lấy cảm hứng từ Python, hỗ trợ thu gom rác thời gian thực và nhiều máy ảo trong các luồng riêng biệt (thông tin thêm)

  • Serpentine - Ngôn ngữ có cú pháp giống như Python cho máy ảo Dalvik

  • Wirbel-Một ngôn ngữ có thể biên dịch với các hạn chế tương tự đối với da (tên được gõ tĩnh, danh sách không thể trộn các yếu tố của các loại khác nhau), không còn tích cực phát triển kể từ 2011-07-21

So sánh:

  • So sánh Genie và Wirbel và Genie và Python bằng nhà phát triển chính của phân phối chó con Linux

  • Một số mẫu mã Genie cho thấy sự khác biệt giữa ngôn ngữ đó và các biến thể Python khác

Hướng dẫn chủ đề

  • EmbeddedPython

  • Pythondistributions

(Vui) Python tiền xử lý

Thậm chí còn có một số phương ngữ lưỡi của Python mà bạn có thể tìm thấy niềm vui.

  • Giống như, Python

  • Lolpython

Các dự án học thuật

Việc triển khai và biên dịch Python đã là chủ đề của nhiều bài báo và luận văn khác nhau. Những người rõ ràng chưa được phát triển được liệt kê ở đây:

  • QGEN: Một dịch giả Python to Qt/C ++ - một người dịch đơn giản được mô tả trong luận án của một bậc thầy từ năm 2004

  • Starkiller - Một dịch giả Python to C ++ được mô tả, cùng với đánh giá về các công cụ đương đại, trong luận án của một bậc thầy từ năm 2004 (trang web của tác giả)


Trang này nhằm mục đích thay thế một người trước đây được duy trì là "ghi chú cá nhân của Cameron Laird về các loại thực hiện Python". Cũng được quan tâm sẽ được tích hợp ngôn ngữ, trong số các biến thể khác, đề cập đến việc nhúng python trong các ngôn ngữ khác.


Loại hình

Việc triển khai Python là gì?

Triển khai Python. Một "việc triển khai" của Python nên được thực hiện có nghĩa là một chương trình hoặc môi trường cung cấp hỗ trợ cho việc thực hiện các chương trình được viết bằng ngôn ngữ Python, như được trình bày bởi triển khai tham chiếu CPython.a program or environment which provides support for the execution of programs written in the Python language, as represented by the CPython reference implementation.

Việc triển khai Python nào là tốt nhất?

CPYThon cung cấp mức độ tương thích cao nhất với các gói Python và các mô -đun mở rộng C.Nếu bạn đang viết mã Python nguồn mở và muốn tiếp cận đối tượng rộng nhất có thể, việc nhắm mục tiêu Cpython là tốt nhất.Để sử dụng các gói dựa vào các tiện ích mở rộng C để chức năng, CPython là tùy chọn triển khai duy nhất của bạn.. If you are writing open source Python code and want to reach the widest possible audience, targeting CPython is best. To use packages which rely on C extensions to function, CPython is your only implementation option.

Python được thực hiện ở đâu?

Tất cả các phiên bản của ngôn ngữ Python được triển khai trong C vì CPython là triển khai tham chiếu.in C because CPython is the reference implementation.

Lợi thế lớn Python là gì?

Python tăng năng suất;Sự đơn giản của nó cho phép các nhà phát triển tập trung vào việc giải quyết các vấn đề thay vì nghiên cứu cú pháp của hành vi ngôn ngữ.Họ có thể hoàn thành rất nhiều với rất ít mã.Đây có lẽ là một trong những lợi thế lớn nhất của Python.boosts productivity; its simplicity allows developers to concentrate on solving problems rather than studying syntax of the language behavior. They can get a whole lot done with very less code. This is probably one of the biggest advantages of Python.