Kekuatan Super Sejati Python
(youtu.be)Berikut adalah ringkasan keynote "Kekuatan Super Sejati Python" yang dibawakan oleh Hynek Schlawack di PYCON UK 2025.
Sebelum memulai presentasi, pembicara memperkenalkan secara singkat perjalanan kariernya, khususnya menyinggung "persahabatan yang penuh kebencian" yang ia alami selama 14 tahun berkiprah di komunitas PyCon.
Transisi dari Python 2 ke 3 (The Python 2 to 3 Migration)
- Latar belakang: Python 3.0 pertama kali dirilis pada 2008, bukan untuk konsumsi umum, melainkan untuk menunjukkan arah tujuan Python dan menerima masukan. Penggunaan mulai direkomendasikan sejak Python 3.2.
- Perubahan utama:
- Pemrosesan string: Python 3 mengubah tipe string bawaan dari byte yang ramah mesin menjadi Unicode yang ramah manusia.
- Penghapusan perilaku implisit: Banyak perilaku implisit yang tanpa sengaja diandalkan pengembang di Python 2, seperti membandingkan string dan angka, dihapus. Hal-hal ini sering memicu bug yang sulit di-debug.
- Peningkatan internasionalisasi: Basis kode Python 2 dipenuhi error decode Unicode, dan Python 3 memperbaiki hal ini sehingga menjadi bahasa yang lebih mendukung internasionalisasi.
- Kesulitan transisi:
- Biaya komunitas: Mem-porting seluruh ekosistem ke Python 3 memerlukan biaya yang sangat besar. Banyak perangkat lunak harus di-port, sementara pada masa itu test coverage belum menjadi hal yang umum.
- Pengembangan basis kode campuran: Kesepakatan tentang cara menulis basis kode hibrida yang berjalan di Python 2 dan Python 3 baru tercapai pada 2012, saat Python 3.3 dirilis.
- Moratorium bahasa: Hampir tidak ada fitur baru yang ditambahkan antara Python 3.0 hingga 3.3, sehingga pengembang kurang terdorong untuk pindah ke Python 3.
- Ketidakpastian: Belum jelas apakah Python 3 akan menjadi versi dominan, dan ada kemungkinan gagal seperti kasus Perl 6.
- Mengapa Python bertahan:
- Masuknya pengguna baru: Python mendapat lebih banyak pengguna baru daripada yang keluar, bahkan ketika bahasa lain (Go, Rust, dan sebagainya) sedang tumbuh.
- Komunitas sains dan engineering: Ilmuwan dan engineer sudah lama menggunakan Python, dan sejak pertengahan 2010-an popularitas Python melonjak di bidang data science. Saat ini, lebih dari separuh pengguna Python memakainya untuk eksplorasi dan pemrosesan data.
- Ekosistem yang sudah ada: Ekosistem library komputasi ilmiah yang kuat seperti NumPy sudah lebih dulu tersedia.
- Kemudahan berinteraksi dengan bahasa terkompilasi lain: Python mudah dihubungkan dengan bahasa terkompilasi lain, sehingga dapat berperan sebagai "lem" yang menyatukan komponen berkinerja tinggi yang ditulis dalam C, C++, Fortran, dan Rust.
- Pemrograman eksploratif: Python sangat cocok untuk pemrograman eksploratif melalui interactive shell (REPL) dan alat seperti Jupyter Notebook.
- Gradualitas (Graduality): Python menyediakan berbagai tingkat rigor. Pengembang bisa bekerja fleksibel saat tahap eksperimen, lalu meningkatkan rigor di tahap produksi dengan alat seperti type hint, linter, dan test. Python juga bisa dipakai untuk berbagai use case, dari memulai di Jupyter Notebook hingga berkembang menjadi web service.
Kekuatan Super Sejati Python: Gradualitas (Graduality)
- Python bukan hanya memiliki hambatan masuk yang rendah, tetapi juga menawarkan beberapa batas atas yang tinggi sehingga pengguna bisa memakainya secara fleksibel sesuai kebutuhan.
- Dua sisi gradualitas:
- Sisi positif: Pengguna dapat memilih tingkat rigor dan kompleksitas yang mereka inginkan. Misalnya, saat menulis skrip bisa bebas tanpa type hint, sementara pada aplikasi skala besar bisa menerapkan pemeriksaan tipe yang ketat.
- Sisi negatif: Menambahkan kasus khusus atau pengecualian ke dalam sistem mungkin memberi kenyamanan jangka pendek bagi pengguna tertentu, tetapi dalam jangka panjang meningkatkan kompleksitas sistem secara keseluruhan. Ia menekankan bahwa "yang mudah tidak selalu sederhana", dan ini terlihat dalam cara packaging Python bekerja.
Contoh Masalah Packaging (Packaging Problem Example)
- Ada dua cara menyusun aplikasi Python: pendekatan 'ad hoc' dan pendekatan 'paket'. Pendekatan paket lebih terdefinisi dengan baik dan memiliki tool bawaan, tetapi karena alasan historis pendekatan ad hoc juga terus didukung.
- Akibatnya, hal-hal seperti
sys.pathmenjadi lebih sulit dipahami, dan fitur sepertipip install --userdapat menimbulkan masalah di namespace global sehingga debugging menjadi lebih sulit. - Tool baru seperti UV pada awalnya hanya mendukung pendekatan paket, tetapi akhirnya juga mendukung proyek ad hoc, yang menambah kompleksitas.
- "Attractive nuisance" seperti ini memberi kenyamanan jangka pendek, tetapi dalam jangka panjang menimbulkan biaya besar bagi komunitas.
Arsitektur Perangkat Lunak (Software Architecture)
- Ia menyoroti kurangnya diskusi tentang arsitektur perangkat lunak di komunitas Python, dan menyebutkan bahwa hal ini disebabkan oleh penolakan terhadap "pola enterprise" serta "ketakutan menjadi Java".
- Kebutuhan: Untuk membangun dan memelihara sistem perangkat lunak yang kompleks, diskusi tentang arsitektur perangkat lunak yang mengatur serta mengelola modul, layer, dan interaksi sangat penting.
- Solusi:
- Komunitas Python seharusnya menghindari mengakhiri percakapan hanya dengan istilah seperti "pythonic" atau "unpythonic".
- Mereka perlu mempelajari dan menerapkan best practice dari komunitas bahasa lain, misalnya domain-driven design.
- Lebih banyak orang perlu berbagi pengetahuan tentang arsitektur perangkat lunak, membuat konten terkait, dan berfokus pada solusi.
Kesimpulan (Conclusion)
- Jangan merasa cemas tentang Python, dan rangkullah berbagai cara menulis Python.
- Cobalah gaya dan tool baru untuk memperluas cara berpikir.
- Setiap opsi memiliki biaya, jadi dampak suatu fitur terhadap seluruh komunitas harus dipertimbangkan dengan hati-hati.
- Selain membuat hal yang sederhana menjadi mudah, perlu lebih banyak upaya untuk membuat hal yang kompleks menjadi mungkin.
- Perlu lebih banyak percakapan tentang arsitektur perangkat lunak, dan pola pikir yang dogmatis harus dipertanyakan untuk membawa Python menuju masa depan yang lebih baik.
Presentasi ini mencakup masa lalu, masa kini, dan masa depan komunitas Python, menekankan "gradualitas" sebagai kekuatan utama bahasa ini, serta memberikan wawasan mendalam tentang tantangan yang dihadapi komunitas dan hambatan budaya yang perlu diatasi.
Untuk menonton videonya, lihat tautan berikut: https://youtu.be/gDvwRpl9erE
3 komentar
Akan jauh lebih nyaman kalau package manager modern bergaya
uvmenjadi standar, tetapi sepertinya memang sulit ya..Di awal masa kuliah, rasanya python 2 masih sedikit lebih dominan, tapi begitu mendekati kelulusan, saya ingat semua orang sudah beralih ke python 3.
Kalau seseorang bekerja di bidang pemrograman, meskipun utamanya memakai Python, kemungkinan besar mereka tetap menguasai setidaknya satu bahasa lain.
Saya tidak paham kenapa, sambil mengatakan Python harus jadi lebih baik, orang terus-menerus berusaha memasukkan fitur atau karakteristik dari bahasa lain.
Sepertinya mereka mengabaikan fakta bahwa kekurangan Python itu justru juga menjadi alasan Python populer.
Python makin lama makin menjadi aneh, rumit, dan rewel.
Rasanya keuntungan memakai Python jadi menghilang.
Bukannya mencoba menjadikan Python seperti Java, kalau memang perlu ya pakai saja Java.
Kalau bukan Java, kan ada juga Kotlin dan Scala.
Meski begitu, saya rasa Python tetap tidak akan mati.
Karena pada dasarnya tidak ada bahasa lain yang bisa dipakai untuk coding semudah ini.