Apa semua keributan tentang Python dan CPython ini (Jython, IronPython) , saya tidak mengerti:
python.org menyebutkan bahwa CPython adalah:
Implementasi "tradisional" dari Python (dijuluki CPython)
pertanyaan Stack Overflow lainnya menyebutkan bahwa:
CPython adalah interpreter byte-code default Python, yang ditulis dalam C.
Sejujurnya saya tidak mengerti arti dari kedua penjelasan tersebut secara praktis, tetapi apa yang saya pikirkan adalah, jika saya menggunakan CPython apakah artinya ketika saya menjalankan contoh kode python, ia mengkompilasinya ke bahasa C dan kemudian mengeksekusi seolah-olah itu adalah C kode
Jadi apa sebenarnya CPython dan bagaimana perbedaannya jika dibandingkan dengan python dan haruskah saya menggunakan CPython dibandingkan Python dan jika demikian apa kelebihannya?
Jawaban:
Jadi apa itu CPython?
CPython adalah implementasi Python asli . Ini adalah implementasi yang Anda unduh dari Python.org. Orang menyebutnya CPython untuk membedakannya dari yang lain, kemudian, implementasi Python, dan untuk membedakan implementasi mesin bahasa dari bahasa pemrograman Python itu sendiri.
Bagian terakhir adalah dari mana kebingungan Anda berasal; Anda harus memisahkan Python-the-language dari apa pun yang menjalankan kode Python.
CPython kebetulan diimplementasikan dalam C. Itu hanya detail implementasi, sungguh. CPython mengkompilasi kode Python Anda menjadi bytecode (transparan) dan menginterpretasikan bytecode itu dalam loop evaluasi.
CPython juga yang pertama mengimplementasikan fitur baru; Pengembangan python-the-language menggunakan CPython sebagai basis; implementasi lainnya mengikuti.
Bagaimana dengan Jython, dll?
Jython , IronPython dan PyPy adalah implementasi "lainnya" saat ini dari bahasa pemrograman Python; ini diimplementasikan dalam Java, C # dan RPython (subset dari Python), masing-masing. Jython mengkompilasi kode Python Anda ke bytecode Java , sehingga kode Python Anda dapat berjalan di JVM. IronPython memungkinkan Anda menjalankan Python di Microsoft CLR . Dan PyPy, yang diimplementasikan dalam (subset dari) Python, memungkinkan Anda menjalankan kode Python lebih cepat dari CPython, yang seharusnya benar-benar meledakkan pikiran Anda. :-)
Sebenarnya kompilasi ke C
Jadi CPython tidak menerjemahkan kode Python Anda ke C dengan sendirinya. Alih-alih, ia menjalankan loop juru bahasa. Ada adalah sebuah proyek yang tidak menerjemahkan kode Python-ish ke C, dan yang disebut Cython . Cython menambahkan beberapa ekstensi ke bahasa Python, dan memungkinkan Anda mengkompilasi kode Anda ke ekstensi C, kode yang dihubungkan ke juru bahasa CPython.
sumber
Anda perlu membedakan antara bahasa dan implementasi. Python adalah bahasa,
Menurut Wikipedia , "Bahasa pemrograman adalah notasi untuk program penulisan, yang merupakan spesifikasi komputasi atau algoritma". Ini berarti bahwa itu hanyalah aturan dan sintaks untuk menulis kode. Secara terpisah kami memiliki implementasi bahasa pemrograman yang dalam kebanyakan kasus, adalah penerjemah atau kompiler yang sebenarnya.
Python adalah bahasa. CPython adalah implementasi dari Python di C. Jython adalah implementasi di Java, dan sebagainya.
Singkatnya: Anda sudah menggunakan CPython (jika Anda mengunduh dari sini ).
sumber
Bahkan saya memiliki masalah yang sama dalam memahami bagaimana CPython, JPython, IronPython, PyPy berbeda satu sama lain.
Jadi, saya bersedia untuk membersihkan tiga hal sebelum saya mulai menjelaskan:
Jika Anda ingin melihat bytecode CPython maka Anda bisa. Begini caranya:
Sekarang, mari kita lihat kode di atas. Baris 1 hingga 6 adalah definisi fungsi. Pada baris 8, kita mengimpor modul 'dis' yang dapat digunakan untuk melihat bytecode Python perantara (atau Anda dapat mengatakan, disassembler untuk bytecode Python) yang dihasilkan oleh CPython (interpreter).
CATATAN : Saya mendapatkan tautan ke kode ini dari saluran #python IRC: https://gist.github.com/nedbat/e89fa710db0edfb9057dc8d18d979f9c
Dan kemudian, ada Jython, yang ditulis dalam Java dan akhirnya menghasilkan kode byte Java. Kode byte Java berjalan pada Java Runtime Environment, yang merupakan implementasi dari Java Virtual Machine (JVM). Jika ini membingungkan maka saya curiga Anda tidak tahu bagaimana Java bekerja. Dalam istilah awam, kode Java (bahasa, bukan kompiler) diambil oleh kompiler Java dan menghasilkan file (yang merupakan kode byte Java) yang dapat dijalankan hanya menggunakan JRE. Hal ini dilakukan agar, begitu kode Java dikompilasi, maka kode itu dapat di-porting ke komputer lain dalam format kode byte Java, yang hanya dapat dijalankan oleh JRE. Jika ini masih membingungkan maka Anda mungkin ingin melihat halaman web ini .
Di sini, Anda mungkin bertanya apakah bytecode CPython portable seperti Jython, saya kira tidak. The bytecode yang dihasilkan dalam pelaksanaan CPython adalah khusus untuk yang interpreter untuk membuatnya mudah untuk eksekusi kode selanjutnya (Saya juga menduga bahwa, produksi bytecode menengah seperti, hanya untuk kemudahan dalam pengolahan dilakukan di banyak penafsir lainnya).
Jadi, dalam Jython, ketika Anda mengkompilasi kode Python Anda, Anda berakhir dengan kode byte Java, yang dapat dijalankan pada JVM.
Demikian pula, IronPython (ditulis dalam bahasa C #) mengkompilasi kode Python Anda ke Common Language Runtime (CLR), yang merupakan teknologi serupa dibandingkan dengan JVM, yang dikembangkan oleh Microsoft.
sumber
Artikel ini menjelaskan secara menyeluruh perbedaan antara implementasi Python yang berbeda. Seperti artikel katakan:
sumber
Python adalah bahasa: seperangkat aturan yang dapat digunakan untuk menulis program. Ada beberapa implementasi bahasa ini.
Apa pun implementasi yang Anda lakukan, mereka melakukan hal yang hampir sama: mengambil teks program Anda dan menafsirkannya, menjalankan instruksinya. Tak satu pun dari mereka mengkompilasi kode Anda ke dalam C atau bahasa lain.
CPython adalah implementasi asli, ditulis dalam C. (Bagian "C" dalam "CPython" mengacu pada bahasa yang digunakan untuk menulis interpreter Python itu sendiri.)
Jython adalah bahasa yang sama (Python), tetapi diimplementasikan menggunakan Java.
Penerjemah IronPython ditulis dalam bahasa C #.
Ada juga PyPy - interpreter Python yang ditulis dengan Python. Buat pilihan Anda :)
sumber
implementation
berarti bahasa apa yang digunakan untuk mengimplementasikan Python dan bukan bagaimana Kode python akan diimplementasikan. Keuntungan menggunakan CPython adalah ketersediaan C Run-time serta integrasi yang mudah dengan C / C ++.Jadi CPython awalnya diimplementasikan menggunakan
C
. Ada percabangan lain untuk implementasi asli yang memungkinkan Python untuk meningkatkan Java (JYthon) atau .NET Runtime (IronPython).Berdasarkan Implementasi yang Anda gunakan, ketersediaan pustaka mungkin bervariasi, misalnya Ctypes tidak tersedia di Jython , sehingga pustaka yang menggunakan ctypes tidak akan berfungsi di Jython. Demikian pula, jika Anda ingin menggunakan Java Class, Anda tidak bisa langsung melakukannya dari CPython. Anda juga membutuhkan lem (JEPP) atau perlu menggunakan Jython (The Java Implementation of Python)
sumber
Anda harus tahu bahwa CPython tidak mendukung multithreading karena Global Interpreter Lock . Ia juga tidak memiliki mekanisme Optimasi untuk rekursi, dan memiliki banyak keterbatasan lain yang coba diisi oleh implementasi dan perpustakaan lain.
Anda harus melihat halaman ini di python wiki.
Lihatlah potongan kode di halaman ini , itu akan memberi Anda ide yang baik tentang apa itu penerjemah.
sumber
Implementasi asli, dan standar, Python biasanya dipanggil
CPython
ketika Anda ingin membandingkannya dengan opsi lain ( dan sekadar "Python" ). Nama ini berasal dari fakta bahwa ia dikodekan dalam portableANSI C language code
. Ini adalah Python yang Anda ambil dari http://www.python.org , dapatkan dengan distribusi ActivePython dan Enthought , dan telah secara otomatis di sebagian besar mesin Linux dan Mac OS X. Jika Anda telah menemukan versi Python yang sudah diinstal pada mesin Anda, itu mungkinCPython
, kecuali perusahaan atau organisasi Anda menggunakan Python dengan cara yang lebih khusus.sumber
Implementasi bahasa pemrograman adalah sistem untuk menjalankan program komputer.
Ada dua pendekatan umum untuk implementasi bahasa pemrograman:
Python adalah bahasa pemrograman tingkat tinggi yang ditafsirkan yang dibuat oleh Guido van Rossum pada tahun 1991.
CPython adalah versi referensi dari bahasa komputasi Python, yang ditulis dalam C yang dibuat oleh Guido van Rossum juga.
Daftar lain dari Implementasi Python
Sumber
sumber