12 Pythons untuk setiap kebutuhan pemrograman

Saat Anda memilih Python untuk pengembangan perangkat lunak, Anda memilih ekosistem bahasa yang besar dengan banyak paket yang mencakup semua jenis kebutuhan pemrograman. Namun selain pustaka untuk segala hal mulai dari pengembangan GUI hingga pembelajaran mesin, Anda juga dapat memilih dari sejumlah runtime Python — dan beberapa runtime ini mungkin lebih cocok untuk kasus penggunaan yang Anda miliki daripada yang lain.

Berikut adalah tur singkat distribusi Python, dari implementasi standar (CPython) ke versi yang dioptimalkan untuk kecepatan (PyPy), untuk kasus penggunaan khusus (Anaconda, ActivePython), untuk runtime bahasa yang berbeda (Jython, IronPython), dan bahkan untuk pemotongan- eksperimen tepi (PyCopy, MesaPy).

CPython

CPython adalah implementasi referensi Python, versi standar yang dilihat oleh semua inkarnasi Python lainnya. CPython ditulis dalam C, seperti yang tersirat dari namanya, dan diproduksi oleh kelompok inti yang sama yang bertanggung jawab atas semua keputusan tingkat atas tentang bahasa Python.

Kasus penggunaan CPython

Karena CPython adalah implementasi referensi Python, CPython adalah yang paling konservatif dalam hal pengoptimalannya. Ini memang disengaja. Pemelihara Python ingin CPython menjadi implementasi Python yang paling kompatibel dan terstandarisasi secara luas.

CPython adalah pilihan terbaik Anda ketika kompatibilitas dan kesesuaian dengan standar Python lebih penting daripada kinerja mentah dan masalah lainnya. CPython juga berguna bagi ahli yang ingin bekerja dengan Python dalam inkarnasi paling mendasarnya, dan yang bersedia melupakan kemudahan tertentu. 

Misalnya, dengan CPython, Anda harus melakukan sedikit pengangkatan lagi untuk menyiapkan lingkungan virtual. Distro lain (Anaconda, khususnya) menyediakan lebih banyak otomatisasi di sekitar pengaturan ruang kerja.

Batasan CPython

CPython tidak memiliki pengoptimalan kinerja yang ditemukan di edisi lain dari Python. Tidak ada kompiler JIT (just-in-time) asli, tidak ada pustaka matematika yang dipercepat, dan tidak ada penambahan pihak ketiga demi kinerja. Itu semua adalah hal yang dapat Anda tambahkan sendiri, tetapi tidak dikelompokkan. Sekali lagi, semua ini adalah desain, untuk memastikan kompatibilitas maksimum dan untuk memungkinkan CPython berfungsi sebagai implementasi referensi, tetapi itu berarti pengoptimalan kinerja apa pun tergantung pada pengembang.

Selanjutnya, CPython hanya menyediakan seperangkat alat dasar untuk bekerja dengan Python. Manajer paket pip, misalnya, memperoleh dan menginstal paket dari repositori paket PyPI asli Python. Pip bahkan akan menginstal binari yang telah dikompilasi (melalui format distribusi roda) jika disediakan oleh pengembang, tetapi tidak akan menginstal dependensi apa pun yang mungkin dimiliki paket di luar PyPI. 

Video terkait: Bagaimana Python membuat pemrograman lebih mudah

Sempurna untuk TI, Python menyederhanakan banyak jenis pekerjaan, dari otomatisasi sistem hingga bekerja di bidang-bidang mutakhir seperti pembelajaran mesin.

Anaconda Python

Anaconda, diproduksi oleh Anaconda, Inc. (sebelumnya Continuum Analytics), dirancang untuk pengembang Python yang membutuhkan distribusi yang didukung oleh penyedia komersial dan dengan rencana dukungan untuk perusahaan. Kasus penggunaan utama untuk Anaconda Python adalah matematika, statistik, teknik, analisis data, pembelajaran mesin, dan aplikasi terkait.

Kasus penggunaan Anaconda Python

Anaconda menggabungkan banyak pustaka yang paling umum digunakan dalam karya Python komersial dan ilmiah — SciPy, NumPy, Numba, dan sebagainya — dan membuat lebih banyak lagi perpustakaan tersebut dapat diakses melalui sistem manajemen paket khusus.

Anaconda menonjol dari distribusi lain dalam cara mengintegrasikan semua bagian ini. Saat diinstal, Anaconda menyediakan aplikasi desktop — Anaconda Navigator — yang membuat setiap aspek lingkungan Anaconda tersedia melalui GUI yang nyaman. Menemukan komponen, menjaganya tetap mutakhir, dan bekerja dengannya jauh lebih mudah di luar kotak dengan Anaconda daripada dengan CPython.

Keuntungan lainnya adalah cara Anaconda menangani komponen dari luar ekosistem Python jika diperlukan untuk paket tertentu. The condamanajer paket, yang dibuat khusus untuk Anaconda, gagang menginstal kedua paket Python dan pihak ketiga, persyaratan perangkat lunak eksternal.

Batasan Anaconda Python

Karena Anaconda menyertakan begitu banyak pustaka yang berguna, dan bahkan dapat menginstal lebih banyak dengan hanya beberapa penekanan tombol, ukuran instalasi Anaconda bisa jauh lebih besar daripada CPython. Instalasi CPython dasar berjalan sekitar 100MB; Instalasi Anaconda dapat berkembang hingga berukuran gigabyte. Ini bisa menjadi masalah dalam situasi di mana Anda memiliki kendala sumber daya.

Salah satu cara untuk mengurangi jejak kaki Anaconda adalah dengan memasang Miniconda, versi Anaconda yang dipreteli yang hanya mencakup bagian minimum mutlak yang diperlukan untuk bangun dan berjalan. Anda kemudian dapat menambahkan paket ke Miniconda sesuai keinginan Anda, dengan memperhatikan berapa banyak ruang yang digunakan setiap bagian.

ActivePython

Seperti Anaconda, ActivePython dibuat dan dikelola oleh perusahaan nirlaba — dalam hal ini, ActiveState, yang memasarkan sejumlah runtime bahasa bersama dengan Komodo IDE multi-bahasa.

Kasus penggunaan ActivePython

ActivePython ditujukan untuk pengguna perusahaan dan ilmuwan data — orang yang ingin menggunakan Python, tetapi tidak ingin menghabiskan banyak tenaga untuk merakit dan mengelola instalasi Python. ActivePython menggunakan pippengelola paket reguler Python , tetapi juga memasok beberapa ratus pustaka umum sebagai paket terverifikasi, bersama dengan beberapa pustaka umum dengan dependensi pihak ketiga seperti Intel Math Kernel Library.

Batasan ActivePython

Ada satu kelemahan potensial pada pendekatan ActivePython untuk menangani paket dengan dependensi eksternal. Jika Anda ingin mengupgrade ke versi yang lebih baru dari sebuah proyek dengan dependensi yang kompleks (misalnya, TensorFlow), Anda juga perlu mengupgrade penginstalan ActivePython. Dalam lingkungan di mana pengembangan cenderung terkait dengan versi proyek tertentu, ini bukan masalah. Namun dalam lingkungan di mana pengembangan cenderung untuk melacak versi mutakhir, hal ini dapat menimbulkan masalah.

PyPy

Pengganti drop-in untuk interpreter CPython, PyPy menggunakan kompilasi just-in-time (JIT) untuk mempercepat eksekusi program Python. Bergantung pada tugas yang dilakukan, peningkatan kinerja bisa sangat dramatis. 

Kasus penggunaan PyPy

Keluhan umum tentang Python pada umumnya, dan CPython pada khususnya, adalah kecepatan. Secara default, Python berjalan beberapa kali lebih lambat dari C, terkadang ratusan kali lebih lambat. PyPy JIT-mengkompilasi kode Python ke bahasa mesin, memberikan kecepatan rata-rata 7,7x lebih cepat dari CPython. Beberapa tugas berjalan 50x lebih cepat. 

Bagian terbaiknya adalah sedikit atau tanpa upaya yang diperlukan dari pihak pengembang untuk membuka kunci keuntungan ini. Tukar CPython untuk PyPy, dan sebagian besar sudah selesai.

Batasan PyPy

PyPy selalu berkinerja terbaik dengan aplikasi Python "murni". Paket Python yang berinteraksi dengan pustaka C, seperti NumPy, juga tidak bernasib karena cara PyPy meniru antarmuka biner asli CPython. Seiring waktu, bagaimanapun, pengembang PyPy telah mengurangi masalah ini, dan membuat PyPy jauh lebih kompatibel dengan sebagian besar paket Python yang bergantung pada ekstensi C. Singkatnya, dukungan untuk ekstensi C masih terbatas, tetapi jauh lebih sedikit daripada sebelumnya.

Kelemahan lain yang mungkin terjadi dengan PyPy adalah ukuran runtime. Runtime CPython inti pada Windows, tidak termasuk pustaka standar, sekitar 4MB, sedangkan runtime PyPy sekitar 32MB. Perhatikan juga bahwa PyPy telah lama menekankan cabang 2.x Python, jadi, misalnya, PyPy untuk Python 3.x saat ini tersedia untuk Windows hanya dalam versi uji beta 32-bit. (PyPy tersedia dalam versi 64-bit untuk Python 2.x dan 3.x untuk Linux dan MacOS.)

Jython

JVM (Java Virtual Machine) berfungsi sebagai runtime untuk banyak bahasa selain Java. Daftar panjang termasuk Groovy, Scala, Clojure, Kotlin, dan, ya, Python, melalui proyek Jython.

Kasus penggunaan Jython

Jython mengkompilasi kode Python 2.x ke bytecode JVM dan menjalankan program yang dihasilkan di JVM. Dalam beberapa kasus, program yang dikompilasi Jython akan berjalan lebih cepat daripada program yang dikompilasi dengan CPython, tetapi tidak selalu.

Keuntungan terbesar yang diberikan Jython adalah interoperabilitas langsung dengan ekosistem Java lainnya. Java digunakan lebih luas dari Python. Menjalankan Python di JVM memungkinkan pengembang Python untuk memanfaatkan ekosistem perpustakaan dan kerangka kerja yang sangat besar yang tidak akan dapat mereka gunakan. Dengan cara yang sama, Jython mengizinkan pengembang Java menggunakan pustaka Python. 

Batasan Jython

Kelemahan terbesar Jython adalah ia hanya mendukung cabang 2.x Python. Dukungan untuk Python 3.x sedang dalam pengembangan tetapi telah berlangsung selama beberapa waktu. Sejauh ini belum ada yang dirilis.

Perhatikan juga bahwa sementara Jython membawa Python ke JVM, itu tidak membawa Python ke Android. Karena saat ini tidak ada port Jython ke Android yang sesuai, Jython tidak dapat digunakan untuk mengembangkan aplikasi Android.

IronPython

Sama seperti Jython adalah implementasi Python pada JVM, IronPython adalah implementasi Python pada .Net runtime, atau CLR (Common Language Runtime). IronPython menggunakan DLR (Dynamic Language Runtime) dari CLR untuk memungkinkan program Python berjalan dengan tingkat dinamisme yang sama seperti yang mereka lakukan di CPython.

Kasus penggunaan IronPython

Seperti Jython, IronPython adalah jembatan. Kasus penggunaan besar adalah interoperabilitas antara Python dan semesta .Net. Rakitan .Net yang ada dapat dimuat dalam program IronPython menggunakan impor asli dan sintaks manipulasi objek Python. Dimungkinkan juga untuk mengkompilasi kode IronPython ke dalam sebuah rakitan dan menjalankannya sebagaimana adanya atau memanggilnya dari bahasa lain. Namun, perhatikan bahwa MSIL (Microsoft Intermediate Language) dalam rakitan tidak dapat langsung diakses dari bahasa .Net lainnya, karena tidak sesuai dengan Spesifikasi Bahasa Umum.

Batasan IronPython

Seperti Jython, IronPython saat ini hanya mendukung Python 2.x. Namun, pekerjaan sedang dilakukan untuk membuat implementasi IronPython 3.x.

WinPython

Sesuai dengan namanya, WinPython merupakan sebuah distro Python yang dibuat khusus untuk pengguna Microsoft Windows. Edisi sebelumnya CPython untuk Windows tidak dirancang dengan baik, dan sulit bagi pengguna Windows untuk memanfaatkan sepenuhnya ekosistem Python. Edisi Windows CPython telah meningkat dari waktu ke waktu, tetapi WinPython masih menawarkan banyak hal yang tidak ditemukan di CPython.

Kasus penggunaan WinPython

Daya tarik utama WinPython adalah bahwa ini adalah edisi Python yang berdiri sendiri. Ini tidak harus diinstal pada mesin tempat ia berjalan; itu hanya perlu diurai ke dalam direktori. Ini membuat WinPython berguna dalam kasus di mana perangkat lunak tidak dapat diinstal pada sistem tertentu, dalam skenario di mana runtime Python yang telah dikonfigurasi perlu didistribusikan bersama dengan aplikasi untuk dijalankan di atasnya, atau di mana beberapa edisi Python perlu dijalankan berdampingan tanpa mengganggu satu sama lain.

WinPython juga memaketkan banyak paket berorientasi data science — NumPy, Pandas, SciPy, Matplotlib, dll — sehingga mereka dapat langsung digunakan, tanpa langkah penginstalan tambahan. Juga disertakan adalah kompiler C / C ++, karena banyak mesin Windows tidak menyertakannya, dan banyak ekstensi Python memerlukan atau dapat menggunakannya.

Batasan WinPython

Salah satu batasan WinPython adalah bahwa itu mungkin menyertakan terlalu banyak secara default untuk beberapa kasus penggunaan. Untuk mengatasinya, pembuat WinPython menyediakan versi "nol" dari setiap edisi WinPython, yang hanya berisi pemasangan produk seminimal mungkin. Lebih banyak paket dapat ditambahkan nanti, baik dengan pipalat Python sendiri atau utilitas WPPM WinPython.

Python Portable

Python Portable adalah runtime CPython dalam paket mandiri. Itu berasal dari koleksi PortableDevApps dari aplikasi mandiri yang serupa.

Kasus penggunaan Python Portable

Seperti WinPython, Python Portable menyertakan banyak paket untuk komputasi ilmiah — Matplotlib, Numba, SymPy, SciPy, Cython, dan lainnya. Juga seperti WinPython, Python Portable berjalan tanpa perlu diinstal secara resmi pada host Windows; itu dapat hidup di direktori mana pun atau di drive yang dapat dilepas. Juga termasuk Spyder IDE dan pengelola paket pip Python, sehingga Anda dapat menambah, mengubah, atau menghapus paket sesuai kebutuhan.

Batasan Python Portable

Tidak seperti WinPython, Python Portable tidak menyertakan kompiler C / C ++. Anda harus menyediakan kompiler C untuk menggunakan kode yang ditulis dengan Cython (dan karenanya dikompilasi ke C).

Distribusi Python eksperimental

Distribusi ini membuat perubahan signifikan pada Python — baik karena mereka menggunakan Python sebagai titik awal untuk sesuatu yang benar-benar baru, atau karena mereka membuat perubahan strategis pada Python standar. Pada umumnya, ular piton ini belum direkomendasikan untuk penggunaan produksi. 

Jika Anda hidup dengan basis kode Python 2.x di masa mendatang, Anda mungkin ingin melihat artikel kami tentang distribusi Python eksperimental yang menjaga Python 2.x tetap hidup.

MicroPython

MicroPython menyediakan subset minimal dari bahasa Python yang dapat berjalan pada perangkat keras yang sangat rendah seperti mikrokontroler. MicroPython mengimplementasikan Python 3.4 dengan beberapa perbedaan. Sangat mudah untuk menulis kode MicroPython jika Anda tahu Python, tetapi kode yang ada mungkin tidak berjalan sebagaimana adanya.

Pycopy