Sebagai seorang programmer Python awal, apakah itu ide yang baik untuk membangun dan memahami perpustakaan saya sendiri sebelum melompat ke perpustakaan pihak ketiga canggih yang berisi fungsi yang saya butuhkan?
Beberapa proyek (misalnya kerangka kerja web seperti Django) mungkin terlalu besar untuk pendekatan ini. Tetapi proyek lain (misalnya Web Crawler, pustaka grafik, pengurai HTML) tampaknya layak.
Saya khawatir ketergantungan awal pada perpustakaan pihak ketiga akan menghambat pertumbuhan saya.
Catatan: pertanyaan ini dan pertanyaan ini tampaknya lebih berfokus pada programmer yang berpengalaman, yang mungkin lebih fokus pada efisiensi penggunaan kembali daripada manfaat belajar. Pertanyaan saya, saya pikir, difokuskan pada pemula.
python
third-party-libraries
MikeRand
sumber
sumber
Jawaban:
Ini selalu merupakan trade-off.
Sebagai programmer pemula, Anda harus bertanya pada diri sendiri dua pertanyaan ketika mempertimbangkan menggunakan kembali kode vs menciptakan kembali roda persegi:
Jika Anda tidak harus menyelesaikan proyek Anda, tidak apa-apa memutar roda Anda pada masalah kompleks yang sudah diselesaikan orang lain, karena Anda akan belajar sesuatu. Tetapi Anda mungkin akan pindah ke hal lain sebelum Anda "selesai," yang mungkin atau mungkin tidak penting bagi Anda. Proyek-proyek lain akan mulai terlihat berkilau cepat ketika Anda berada di atas kepala Anda pada domain kompleks yang terlihat sederhana sampai Anda mulai mencoba menyelesaikannya sendiri.
Jangan terobsesi melepaskan kendali karena Anda tunduk pada cara berpikir orang lain; lebih fokus pada apa yang ingin Anda capai.
Jika tujuan Anda adalah untuk menulis parser HTML karena Anda ingin memahami cara kerja parser, lakukanlah. Jika tujuan Anda adalah untuk menulis parser HTML karena Anda ingin membersihkan input pengguna atau mengubah beberapa bit HTML acak, Anda mungkin berfokus pada hal yang salah, karena Anda mungkin lebih tertarik pada aplikasi parsing daripada parsing itu sendiri . Jika Anda merasa ingin menulis parser HTML karena Anda tidak ingin meluangkan waktu untuk memahami perpustakaan orang lain, Anda mungkin membuang-buang waktu, karena, setidaknya dalam kasus ini, saya jamin orang lain telah menghabiskan lebih banyak waktu mencari tahu bagaimana untuk menyelesaikan masalah ini secara efektif daripada yang Anda miliki. Dalam kasus yang benar-benar sepele, Anda dapat menghemat waktu dengan tidak menggunakan kembali kode, tetapi dalam kasus yang rumit, kecuali perpustakaan yang Anda gunakan menyebalkan atau kemampuan Anda untuk membaca dokumentasi dan sampel kode menyebalkan,
Di sisi lain, saya akan mengatakan bahwa itu layak untuk menulis perpustakaan grafik Anda sendiri, karena Anda akan lebih fokus pada transfer, algoritma mendasar dan struktur data yang Anda akan dapat terapkan ke domain lain, bahkan jika Anda akhirnya menggunakan perpustakaan orang lain saat Anda mengatasi masalah itu.
sumber
Kebanyakan pemrogram pemula sangat meremehkan kompleksitas masalah. Ini mengarah ke banyak situasi yang tidak menyenangkan, tetapi saya akan fokus hanya pada satu: mereka menolak banyak perpustakaan pihak ketiga karena "kembung" atau "terlalu rumit". Kemudian mereka mencoba menulis kode mereka sendiri untuk melakukan pekerjaan yang sama, dan membuat kekacauan total, karena mereka tidak mengantisipasi semua hal yang harus mereka tangani.
Ambil web crawling dan parsing HTML. Anda tampaknya memiliki sikap yang biasa-biasa saja terhadap tugas-tugas itu - yang membuat saya percaya bahwa Anda tidak pernah mencoba melakukannya pada skala yang sangat kecil. Berikut ini daftar singkat dari masalah potensial yang perlu dihadapi oleh perayap web nyata:
sumber
Itu salah.
Ketergantungan awal pada perpustakaan pihak ketiga akan mengajarkan cara kerja perpustakaan yang baik.
Pengembangan prematur selalu membuang-buang waktu. Menulis perpustakaan Anda sendiri tanpa mempelajari (dengan menggunakan) perpustakaan yang ada dengan hati-hati akan membuat Anda menemukan kembali roda - buruk - untuk sisa karir Anda.
Saya telah menghabiskan banyak waktu untuk membersihkan kekacauan itu.
sumber
Kalimat ini, yang merupakan kalimat pertama sangat logis bagi saya:
Bagaimana Anda percaya bahwa Anda dapat secara efektif menulis perpustakaan fungsionalitas lanjut (kata Anda) sebagai pemula yang akan benar, fitur lengkap dan diuji sebagai perpustakaan yang ada?
Ini bahkan tidak menyebutkan jumlah besar waktu yang Anda buang untuk menciptakan kembali sebuah roda yang tidak Anda mengerti sebagai seorang pemula, pada akhirnya akan meninggalkan ketika jika Anda beruntung Anda menyadari bahwa Anda berada di atas kepala Anda, dan harus belajar tetap keluar dari perpustakaan.
Ambil parsing HTML misalnya, Anda menyebutkan ini layak, tidak ada cara Anda bisa melakukan pekerjaan yang lebih baik daripada Beautiful Soup sebagai pemula. Polos dan sederhana Anda akan gagal. Hal-hal yang Anda anggap layak memiliki masalah kompleksitas besar yang tidak Anda perhitungkan, Anda tidak tahu domain masalah secara cukup detail untuk memahami kompleksitas, Anda pasti akan gagal hanya dari itu.
Pendapat saya adalah mempelajari apa yang telah dilakukan orang lain dan sudah menyelesaikan masalah Anda untuk Anda, sampai Anda tidak dapat menemukan sesuatu yang mengatasi masalah Anda.
sumber
Ini hanya pendapat saya, tapi saya sarankan membangun perpustakaan Anda sendiri untuk kode yang cukup sederhana dan dapat digunakan kembali. Untuk hal yang lebih kompleks, Anda dapat menggunakan perpustakaan pihak ke-3, yang telah dibangun dan diuji secara menyeluruh (semoga!). Membuat perpustakaan yang kuat bisa sangat memakan waktu, tergantung apa itu. Saya yakin Anda akan mendapatkan banyak latihan pemrograman hanya dengan membangun aplikasi Anda!
sumber
Lihat pertanyaan serupa ini, jawabannya relevan:
/programming/991487/how-to-assemble-a-project-with-software-products-and-your-own-code
sumber