11 poin oleh GN⁺ 2025-11-27 | 2 komentar | Bagikan ke WhatsApp
  • Dalam pekerjaan data non-deep-learning seperti analisis, visualisasi, dan peringkasan data, Python memang cukup fungsional, tetapi pengalaman penggunaannya cenderung rumit dan mudah menjadi tidak efisien
  • Di berbagai kasus di laboratorium, berulang kali terlihat bahwa dibanding R, Python membutuhkan lebih banyak kode dan waktu bahkan untuk transformasi grafik sederhana dan perhitungan statistik
  • Bahkan saat memakai pandas, matplotlib, dan NumPy, sintaks, indexing, tanda kurung, dan struktur method chaining sering membuat pengguna terjebak pada detail implementasi (logistics) alih-alih logika
  • Sebaliknya, tidyverse di R memungkinkan alur pemrosesan data diekspresikan hampir setingkat bahasa alami, sehingga logika kerja lebih mudah langsung diterjemahkan ke dalam kode
  • Sebagai bahasa untuk data science, Python memiliki keterbatasan struktural dalam memisahkan logika dan logistik, dan ini berasal dari desain bahasa serta ekosistemnya

Perbandingan pengalaman penggunaan Python dan R di dunia nyata

  • Anggota laboratorium bebas memilih bahasa, tetapi lebih banyak yang memakai Python, dan pola bahwa mereka tidak bisa cepat menangani permintaan analisis tambahan yang sederhana muncul secara konsisten
    • Pergantian visualisasi seperti boxplot → violin plot, histogram → density plot, atau line chart → heatmap pun tidak mudah dilakukan seketika
    • Pekerjaan yang selesai dalam beberapa baris di R terasa di Python seperti “harus kembali ke meja dan menulis ulang kodenya”
  • Bahkan saat mengajar bersama ahli Python, perbedaan besar dalam panjang dan kompleksitas kode dibanding R tetap terlihat
    • Reaksi seperti “kenapa harus serumit ini?” berulang dalam banyak situasi, dan tampaknya ini bukan soal kemampuan individu, melainkan perbedaan struktural pada arsitektur bahasa dan library
    • Untuk logika yang sama, Python memerlukan indexing, pemisahan data, penyusunan ulang, dan penggabungan beberapa method sehingga strukturnya menjadi panjang
    • Tidyverse di R dapat mengekspresikannya secara langsung dengan rangkaian alami seperti filter → group_by → summarize

Mengapa Python dipakai luas dan apa batasannya

  • Posisi Python di data science lebih didasarkan pada penyebaran historis, sifat serbaguna, dan besarnya ekosistem daripada kecocokan uniknya
    • Di bidang deep learning, Python memang jelas menjadi pusat berkat PyTorch dan ekosistem AI
    • Namun, untuk pembersihan data, eksplorasi, visualisasi, dan pemodelan statistik, ketidaknyamanan tetap banyak terasa
  • Popularitasnya disebut “hampir seperti kecelakaan sejarah (historical accident)”, dan beratnya struktur bahasa dibanding R berulang kali terlihat lewat berbagai contoh
Iklan

Syarat bahasa data science yang baik

  • Untuk pekerjaan yang berpusat pada eksplorasi data, peringkasan, fitting model, dan visualisasi, yang paling penting adalah lingkungan interaktif, biaya setup rendah, dan iterasi cepat
    • Dibanding bahasa terkompilasi, bahasa interpreter berbasis skrip lebih cocok
    • Yang diprioritaskan bukan performa, melainkan kesederhanaan kode, penurunan risiko error, dan minimisasi beban berpikir
    • Jika perlu, cukup tulis ulang hanya sebagian operasi ke bahasa berperforma tinggi seperti Rust, bukan seluruhnya
  • Secara realistis, bahasa yang bisa dipertimbangkan adalah R dan Python
    • Matlab, Mathematica, dan sejenisnya bersifat komersial atau ekosistemnya terbatas
    • Julia memang sering disebut, tetapi penulis belum cukup menggunakannya sehingga menahan diri untuk menilai

Masalah “logika vs logistik”

  • Bahasa analisis data harus memisahkan apa yang ingin dihitung (logika) dari bagaimana menghitungnya (logistik)
    • Jika harus memikirkan tipe data, indeks, loop, atau perakitan manual, berarti kita sudah terikat pada logistik
  • Dalam contoh Palmer Penguins, tidyverse di R mengekspresikan perhitungan rata-rata dan simpangan baku dengan alur yang mendekati bahasa alami
    • Tidak perlu membongkar aliran data lalu merakitnya kembali
    Iklan
  • pandas memang menyediakan fungsi serupa, tetapi penentuan string, tanda kurung, method chaining, reset_index, dan pekerjaan tambahan lain membuat keterbacaan dan kesederhanaannya menurun
  • Jika pekerjaan yang sama diimplementasikan hanya dengan Python murni
    • Menyusun loop → membuat group key → membagi data → menghitung rata-rata → menghitung varians → menghitung simpangan baku → menyusun ulang → mengurutkan, dan seterusnya
    • Semua harus ditangani secara manual, sehingga menjadi contoh khas ketika kode logistik mendominasi logika

Kesimpulan dan gambaran isi lanjutan

  • Dalam analisis data, Python berulang kali menunjukkan masalah struktural yang membuat pengguna lebih fokus pada detail implementasi daripada logika
    • Ini tampak sebagai hasil gabungan dari sifat bahasa itu sendiri, keterbatasan desain library, dan kebiasaan di seluruh ekosistem
  • Pada tulisan lanjutan, penulis akan membahas penyebab teknis yang lebih konkret mengapa Python membuat analisis data lebih sulit dibanding R

Sudut pandang tambahan untuk diskusi dan perbandingan (termasuk masukan pembaca)

  • Ada pendapat bahwa tidyverse bisa lebih panjang daripada base R, tetapi tetap kuat dari sisi ekspresivitas, konsistensi, dan abstraksi pemrosesan data
  • Di sisi lain, ada pula sanggahan bahwa R sangat tidak nyaman dari sisi pengembangan perangkat lunak seperti modularisasi, testing, dan implementasi CLI
  • Python unggul dalam pengalaman developer seperti logging, virtual environment, packaging, dan struktur class, tetapi
    • matplotlib dinilai memiliki desain yang tidak intuitif,
    • pandas memiliki sintaks yang tidak konsisten,
    • scikit-learn sering disebut punya masalah desain
  • Beberapa pendapat bahkan melihat Python sebagai “bahasa untuk dengan cepat memproduksi kode yang tidak stabil dan berkualitas rendah”, dan menyebut bahwa pengembangan berkelanjutan lebih cocok menggunakan bahasa bertipe statis

2 komentar

 
kaydash 2025-11-28

Jika kompleksitas dan volume data meningkat sehingga diperlukan pemrosesan terdistribusi bertahap, sekaligus pengolahan melalui data tidak terstruktur, model terstruktur, dan LLM, bukankah justru bahasa ini yang paling cocok karena use case-nya juga banyak?

 
GN⁺ 2025-11-27
Opini Hacker News
  • Memberikan berbagai contoh transformasi, seperti mengganti boxplot menjadi violin plot, atau line plot menjadi heatmap
    Sebenarnya diskusi ini lebih tentang matplotlib daripada Python
    Jika ingin desain ala ggplot di Python, bisa memakai plotnine
    Alasan kode R terlihat lebih ringkas adalah karena evaluasi non-standar (non-standard evaluation) di R
    Python tidak mengizinkan perluasan seperti ini di tingkat bahasa
    Untuk pembahasan terkait, lihat Computing on the language

    • Pada akhirnya ini adalah cerita tentang perbedaan Python vs R
      Evaluasi non-standar memang nyaman di lingkungan interaktif, tetapi saat menulis kode analisis yang kompleks justru menjadi kelemahan
      Pekerjaan sederhana pun kadang harus dilakukan dengan cara memutar
    • Sulit melihat peletakan pipe di akhir kalimat dalam kode R
      Menurut saya, menaruh operator pipe di depan seperti Elixir lebih baik
      Python juga bisa meniru sintaks serupa dengan trik seperti getattr, tetapi pada akhirnya ini lebih merupakan masalah desain API pustaka daripada bahasa
    • “Bagaimana kalau melakukan pekerjaan logistik di R tanpa pustaka?” Membayangkannya saja sudah mengerikan
      R mudah hanya jika ada pustaka dan recipe, kalau tidak, benar-benar sulit, dan kebanyakan orang tidak melakukannya sama sekali
    • Untuk tujuan seperti ini, seaborn cocok
      Ia mengabstraksikan ketidaknyamanan matplotlib sambil tetap menyediakan fitur yang kaya
      Tutorial Seaborn
    • Pada akhirnya, inti pembahasannya tampaknya bukan soal Python, melainkan tentang hal-hal yang bisa dilakukan R tetapi tidak bisa dilakukan Python
  • Heran kenapa dalam bahasa pemrograman tabel bukan objek kelas satu
    Kebanyakan bahasa mengharuskan orang mempelajari API terpisah seperti pandas atau polars untuk menangani tabel
    Di R, data.frame cukup dekat dengan objek kelas satu, tetapi dalam praktiknya orang lebih sering memakai tibble dari dplyr
    Bahasa ekspresi untuk menangani data tabel masih belum distandardisasi
    Polars dan dplyr berbagi filosofi yang mirip, tetapi pada akhirnya SQL tampak seperti satu-satunya dasar bersama
    Python memang tidak sempurna, tetapi menurut saya R juga sama

    • Rasanya ada banyak struktur yang hilang di tingkat bahasa
      Struktur seperti tabel, matriks, graf, state machine tidak didukung di level bahasa sehingga pemanfaatannya terbatas
      Alat yang tersedia secara bawaan dalam bahasa menentukan “jalur indah” bahasa tersebut
      Dulu key-value store juga merupakan pustaka eksternal, tetapi sekarang sudah seperti standar
    • Bahasa seperti Q, Rye, dan Lil memperlakukan tabel sebagai tipe data kelas satu yang sesungguhnya
      Saya memperkirakan suatu hari bahasa-bahasa arus utama juga akan menyerap pemrograman berbasis tabel seperti ini
      Bahasa Q, artikel perbandingan Rye, alat eksperimen Lil
    • tibble dan data.table mewarisi data.frame, sehingga fungsi dasar R tetap bisa bekerja apa adanya
      Konversi di antara ketiga objek itu juga sangat sederhana
    • Ketika ukuran tabel membesar menjadi 1 juta, 1 miliar, atau 1 triliun baris, sifat masalahnya berubah total
      Tidak mudah merancang API standar yang bisa menangani perbedaan skala sebesar ini dengan elegan
    • data.table di R sangat bagus
      Hanya saja dplyr menang dalam dokumentasi dan onboarding sehingga memperoleh adopsi industri
  • Inti tulisannya lumayan, tetapi sayang penulis terlalu cepat membuka dasar argumennya
    R kuat untuk pemrosesan data frame, tetapi lemah untuk manajemen file dan maintainability
    Jika pekerjaan seperti itu banyak, Python lebih baik, dan jika kecepatan juga penting, pilihan akan condong ke Julia
    Pemilihan bahasa akan berubah sesuai prioritas masing-masing
    Saya sering melihat mahasiswa mencoba menyelesaikan masalah non-tabular seperti graf dengan pandas; dalam situasi seperti itu, pemilihan alat perlu dipikirkan ulang

    • Contoh kode Python di artikel kurang tepat
      Dengan numpy, perhitungan rata-rata dan varians sudah tersedia sebagai bawaan
      Python dan R punya tingkat kesulitan belajar yang mirip, tetapi keunggulan Python ada pada kemampuan integrasi dengan aplikasi lain
    • Bagian kedua dari tulisan itu bisa dilihat di sini
    • Saya sendiri memakai Python dan R kurang lebih setengah-setengah
      Saat memproses file besar, Python lebih cocok; saat menganalisis data ringkasan, R lebih efisien
      Setiap bahasa memang sebaiknya dipakai sebagai alat yang tepat untuk konteksnya
  • Sebagai programmer Python, saya juga pernah memakai R, dan Python adalah “bahasa yang melakukan hampir semuanya dengan cukup baik, tetapi tidak sempurna”
    Jika Anda melakukan analisis data sepanjang hari, masuk akal untuk mempelajari R
    R adalah bahasa yang dirancang sesuai dengan cara berpikir ahli statistik
    Awalnya terasa asing, tetapi perubahan cara berpikir itu justru membantu
    Meski begitu, saya tetap bekerja sebagian besar di Python

  • Melakukan data science dengan pandas itu mungkin, tetapi terasa kasar dan rumit
    Dengan polars memang sedikit membaik, tetapi saat memakai duckdb semuanya benar-benar berubah
    Saya menjalankan kueri SQL langsung di notebook dan menganalisis file parquet
    Mencampur sel SQL dan sel Python membuat kode menjadi lebih rapi
    Saat melihat perbandingan Python vs R di akhir tulisan, saya sempat berpikir, “bukankah ini akan jauh lebih baik jika ditulis dengan SQL?”

    • Saya lebih suka pendekatan berpusat pada data frame daripada SQL, semuanya selesai di dalam bahasa
    • Saya cukup sering memakai polars, sepertinya saya juga harus mencoba duckdb
  • Contoh Python terakhir terlalu bertele-tele tanpa perlu
    Dengan defaultdict dan statistics.stddev, hasilnya bisa jauh lebih ringkas

    • Menarik bahwa ia memasukkan koreksi Bessel secara manual
      Sering kali orang mengimplementasikannya tanpa mempertimbangkan apakah koreksi itu memang bermakna
      Sebenarnya ini lebih tepat disebut sample_std_dev
    • itertools.groupby juga bisa dipakai
      Kodenya memang tidak menjadi pendek, tetapi bisa mengungkapkan maksud dengan lebih jelas
    • Kode aslinya lebih mudah dibaca
      Tidak baik mengorbankan keterbacaan hanya demi menulis lebih singkat
  • Saya mencoba mengimplementasikan contoh yang sama dengan TidierData.jl di Julia, dan hasilnya hampir identik dengan versi R
    Sintaks makro seperti @chain, @group_by, @summarize mirip dengan tidyverse di R

  • Saya kurang memahami keluhan penulis
    Bahwa Python tidak dioptimalkan untuk data science adalah fakta yang sudah jelas
    Python bukan DSL, dan bahkan MATLAB yang memang dirancang untuk komputasi ilmiah pun bukan bahasa yang populer
    Bahasa yang baik lebih seperti kota yang nyaman ditinggali daripada cuaca yang sempurna
    Python seperti “kota Nordik yang makmur meski cuacanya kurang bagus”
    Topik tulisannya terasa agak clickbait sehingga menurut saya tidak menghasilkan diskusi yang produktif

  • Saya berharap Julia dipakai lebih luas
    Dulu saya mengimplementasikan ulang algoritme untuk makalah psikometrik dengan Julia, dan hasilnya berjalan tiga kali lebih cepat daripada MATLAB
    Tautan makalah terkait

    • Saya penasaran seberapa penting penghematan waktu 40 menit itu terhadap keseluruhan jadwal penulisan makalah
  • Contoh terakhir lebih terlihat seperti kode Python yang tidak realistis, semacam sindiran anti-Python
    Mengimplementasikan sendiri simpangan baku itu setingkat tugas kuliah S1
    Dalam praktiknya, baik R maupun Python sama-sama menjalankan loop seperti ini di dalamnya

    • Saya paham tulisan itu berfokus pada konteks laboratorium penelitian
      Tetapi di lingkungan industri nyata, Python jauh lebih mudah untuk berkolaborasi dengan tim engineering
      Saya pernah menerapkan kode R ke production, dan hasilnya sangat rapuh
      R luar biasa untuk exploratory data analysis (EDA), tetapi tidak cocok untuk pengembangan perangkat lunak skala besar