Memahami prinsip algoritma desain part 4
Algorithm
Mengerti Alat-Alat!
Sangat mudah untuk berpikir bahwa ini perlu dikatakan. Namun, ada perbedaan antara "mengetahui bagaimana menulis jQuery" dan "memahami jQuery". Memahami alat Anda berarti bahwa Anda memahami apa yang setiap baris kode tidak, baik langsung (nilai kembali fungsi atau efek dari metode) dan secara implisit (berapa banyak overhead yang berhubungan dengan menjalankan fungsi perpustakaan, atau yang paling efisien metode untuk concatenating string). Untuk menulis algoritma yang besar, penting untuk mengetahui kinerja fungsi-tingkat yang lebih rendah atau utilitas, bukan hanya nama dan pelaksanaan dari mereka.
Memahami Lingkungan
Merancang algoritma efisien adalah usaha penuh keterlibatan. Melampaui pemahaman alat Anda sebagai bagian mandiri, Anda juga harus memahami cara mereka berinteraksi dengan sistem yang lebih besar di tangan. Misalnya, untuk memahami JavaScript dalam aplikasi tertentu seluruhnya, adalah penting untuk memahami DOM dan kinerja JavaScript di skenario cross browser, kecepatan bagaimana memori yang tersedia mempengaruhi rendering, struktur server (dan tanggapan mereka) Anda dapat berinteraksi dengan, serta segudang pertimbangan lain yang tak berwujud, seperti skenario penggunaan.
Mengurangi Beban Kerja yang
Secara umum, tujuan dari desain algoritma untuk menyelesaikan pekerjaan dalam langkah-langkah yang lebih sedikit. (Ada beberapa pengecualian, seperti Bcrypt hashing.) Ketika Anda menulis kode Anda, mempertimbangkan semua operasi sederhana komputer adalah mengambil untuk mencapai tujuan. Berikut adalah daftar sederhana untuk memulai pada jalur untuk desain algoritma yang lebih efisien:
Kesimpulan
Jika Anda tidak tahu apa algoritma itu di awal artikel ini, mudah-mudahan, sekarang, Anda memiliki pemahaman yang lebih konkret dari istilah yang agak sulit dipahami. Sebagai pengembang profesional, adalah penting bahwa kita memahami bahwa kode kita menulis dapat dianalisis dan dioptimalkan, dan penting bahwa kita mengambil waktu untuk melakukan analisis ini kinerja kode kita.
Apa menyenangkan latihan soal algoritma Anda telah menemukan? Mungkin pemrograman dinamis "knapsack problem", atau "drunken walk"? Atau mungkin Anda tahu dari beberapa praktek terbaik dari rekursi di Ruby yang berbeda dari fungsi yang sama diterapkan di Python.
#ini adalah postingan terakhir dalam memahami prinsip desain algoritma
Sangat mudah untuk berpikir bahwa ini perlu dikatakan. Namun, ada perbedaan antara "mengetahui bagaimana menulis jQuery" dan "memahami jQuery". Memahami alat Anda berarti bahwa Anda memahami apa yang setiap baris kode tidak, baik langsung (nilai kembali fungsi atau efek dari metode) dan secara implisit (berapa banyak overhead yang berhubungan dengan menjalankan fungsi perpustakaan, atau yang paling efisien metode untuk concatenating string). Untuk menulis algoritma yang besar, penting untuk mengetahui kinerja fungsi-tingkat yang lebih rendah atau utilitas, bukan hanya nama dan pelaksanaan dari mereka.
Memahami Lingkungan
Merancang algoritma efisien adalah usaha penuh keterlibatan. Melampaui pemahaman alat Anda sebagai bagian mandiri, Anda juga harus memahami cara mereka berinteraksi dengan sistem yang lebih besar di tangan. Misalnya, untuk memahami JavaScript dalam aplikasi tertentu seluruhnya, adalah penting untuk memahami DOM dan kinerja JavaScript di skenario cross browser, kecepatan bagaimana memori yang tersedia mempengaruhi rendering, struktur server (dan tanggapan mereka) Anda dapat berinteraksi dengan, serta segudang pertimbangan lain yang tak berwujud, seperti skenario penggunaan.
Mengurangi Beban Kerja yang
Secara umum, tujuan dari desain algoritma untuk menyelesaikan pekerjaan dalam langkah-langkah yang lebih sedikit. (Ada beberapa pengecualian, seperti Bcrypt hashing.) Ketika Anda menulis kode Anda, mempertimbangkan semua operasi sederhana komputer adalah mengambil untuk mencapai tujuan. Berikut adalah daftar sederhana untuk memulai pada jalur untuk desain algoritma yang lebih efisien:
- Gunakan fitur bahasa untuk mengurangi operasi (variabel caching, chaining, dll).
- Mengurangi berulang lingkaran bersarang sebanyak mungkin.
- Mendefinisikan variabel di luar loop bila memungkinkan.
- Menggunakan loop pengindeksan otomatis (jika tersedia) bukannya pengindeksan manual.
- Gunakan teknik pengurangan pintar, seperti membagi rekursif dan menaklukkan dan optimasi query, untuk memperkecil ukuran proses rekursif.
Belajar Teknik Lanjutan
Tidak ada cara yang lebih baik untuk menjadi seorang desainer algoritma yang lebih baik daripada memiliki pemahaman yang mendalam dan penghargaan untuk algoritma.
- Ambil satu atau dua jam setiap minggu dan membaca The Art of Computer Programming.
- Coba Facebook Programming Challenge atau Google Codejam .
- Belajar untuk memecahkan masalah yang sama dengan teknik algoritmik yang berbeda.
- Tantang diri Anda dengan pelaksana dibangun di fungsi bahasa, seperti .Sort () , dengan operasi tingkat yang lebih rendah.
Jika Anda tidak tahu apa algoritma itu di awal artikel ini, mudah-mudahan, sekarang, Anda memiliki pemahaman yang lebih konkret dari istilah yang agak sulit dipahami. Sebagai pengembang profesional, adalah penting bahwa kita memahami bahwa kode kita menulis dapat dianalisis dan dioptimalkan, dan penting bahwa kita mengambil waktu untuk melakukan analisis ini kinerja kode kita.
Apa menyenangkan latihan soal algoritma Anda telah menemukan? Mungkin pemrograman dinamis "knapsack problem", atau "drunken walk"? Atau mungkin Anda tahu dari beberapa praktek terbaik dari rekursi di Ruby yang berbeda dari fungsi yang sama diterapkan di Python.
#ini adalah postingan terakhir dalam memahami prinsip desain algoritma







