4 poin oleh GN⁺ 2025-08-20 | Belum ada komentar. | Bagikan ke WhatsApp
  • Pendekatan pemrograman dari kiri ke kanan menjaga program tetap dalam keadaan valid segera setelah kode diketik, sehingga dukungan alat seperti pelengkapan otomatis di editor dapat dimaksimalkan
  • List comprehension Python menghambat pelengkapan otomatis karena variabel belum dideklarasikan dan tidak adanya inferensi tipe
  • Rust dan JavaScript memungkinkan program disusun secara alami dari kiri ke kanan, sehingga penggunaan variabel dan penelusuran metode terasa lebih intuitif
  • Gaya fungsional di C dan Python menghambat pengalaman menulis kode yang efisien karena nama fungsi atau strukturnya sulit ditemukan
  • Pada logika yang kompleks, kode yang berkembang dari kiri ke kanan lebih mudah dibaca, serta lebih baik dalam pemeliharaan dan skalabilitas

Pemrograman dari Kiri ke Kanan

Kode harus valid segera saat diketik


Batasan list comprehension Python

  • Sintaks list comprehension Python words_on_lines = [line.split() for line in text.splitlines()] menimbulkan masalah karena harus mengakses variabel yang belum dideklarasikan (line), sehingga editor tidak dapat memberikan pelengkapan otomatis atau inferensi tipe dengan baik
  • Dalam proses mengetik kode secara bertahap
    • jika mengetik words_on_lines = [line.sp, editor tidak mengetahui tipe line sehingga tidak bisa merekomendasikan metode
    • juga lebih sulit mendeteksi potensi kesalahan seperti salah ketik nama variabel (lime dan sebagainya)
  • Untuk mendapatkan rekomendasi yang benar, pengguna harus menulis kode yang belum selesai, dan proses itu terasa tidak intuitif dan tidak nyaman

Penyusunan dari kiri ke kanan di Rust

  • Contoh Rust (let words_on_lines = text.lines().map(|line| line.split_whitespace());) menunjukkan bahwa
    • bersamaan dengan deklarasi fungsi anonim, saat variabel (line) pertama kali muncul, itu langsung dianggap sebagai deklarasi, sehingga pelengkapan otomatis dan rekomendasi metode segera tersedia
    • bahkan metode split_whitespace juga mudah ditemukan berkat rekomendasi otomatis
  • Pendekatan ini membuat program selalu tetap dalam keadaan yang setidaknya valid secara parsial, sehingga IDE atau editor dapat mendukung proses menulis kode secara real-time

Progressive Disclosure dan kegunaan API

  • Progressive Disclosure adalah prinsip desain yang membuat pengguna hanya menghadapi kompleksitas sesuai kebutuhan, dan ini juga bisa diterapkan pada pemrograman
    • Contoh: mirip dengan UX pengolah kata yang hanya menampilkan opsi terkait saat menambahkan gambar
  • Bahasa C kurang memiliki dukungan seperti ini
    • karena semua fungsi yang terkait dengan FILE *file tidak dapat dijelajahi lewat file., pengguna harus menghafal pola nama fungsi (fread, fclose, dan sebagainya), sehingga sulit menemukan fitur
    • sebaliknya, dalam bahasa yang ideal, fungsi terkait bisa ditemukan secara bertahap dengan mudah melalui rekomendasi metode dari file.

Perbedaan dalam ketercarian fungsi dan metode

  • Perbandingan antara contoh Python map(len, text.split()) dan JavaScript text.split(" ").map(word => word.length)
    • di Python, nama fungsi seperti len, length, atau size tidak selalu dapat diperkirakan, sehingga harus mencoba beberapa kemungkinan untuk mengetahui mana yang benar-benar bekerja
    • di JavaScript, cukup mengetik .l setelah word. dan editor akan menampilkan metode seperti length, sehingga ketercarian lebih tinggi
    • fungsi tingkat tinggi seperti map juga membuat nilai hasil dan tipe data yang dikembalikan langsung tampak jelas

Keunggulan penulisan terstruktur pada logika yang kompleks

  • Untuk logika yang kompleks (kode Python panjang dengan filter dan lambda yang bertumpuk)
    • pengguna harus berulang kali memeriksa awal dan akhir kode, dan pencocokan kondisi maupun tanda kurung dapat menyebabkan penurunan keterbacaan serta kesulitan dalam memahami kode
  • Dalam versi JavaScript dengan logika yang sama, kode dapat dibaca dan dipahami secara berurutan dari atas ke bawah dan dari kiri ke kanan

Prinsip inti

Kode harus valid pada setiap saat ketika diketik

  • Bahkan saat hanya mengetik text, program tetap berada dalam keadaan valid
  • Setelah menulis text.split(" "), lalu melanjutkannya dengan .map(word => word.length), secara keseluruhan keadaan menengahnya selalu valid
  • Pola penulisan kode seperti ini meningkatkan kemungkinan dukungan real-time dari editor, dan dalam lingkungan REPL hasilnya juga bisa langsung diperiksa

Kesimpulan

  • Desain API dan bahasa harus mendukung pengetikan kode secara alami dari kiri ke kanan sambil memungkinkan terbentuknya program yang valid di setiap tahap perantara
  • Desain API yang baik adalah kunci untuk meningkatkan pengalaman menulis kode seperti ini

Belum ada komentar.

Belum ada komentar.