Pengaturcaraan Imperatif vs Deklaratif - Perbezaan yang dijelaskan dalam Bahasa Inggeris Plain

Sebagai pengajar pengekodan, adalah tugas saya untuk menghantar pengaturcara ke dunia berfikir dengan cara baru. Pergeseran pemikiran yang besar berlaku ketika kita beralih dari pengaturcaraan penting ke deklaratif.

Setelah pelajar saya mempelajari JavaScript asas, kami akan membahas pengaturcaraan fungsional dan kaedah larik yang digunakan dalam gaya pengekodan deklaratif. Di sinilah otak mereka mula muncul dan mendesis dan meleleh seperti marshmallow di atas api.

Apa itu Pengaturcaraan Imperatif?

Sebagai pemula, anda mungkin kebanyakannya dikodkan dalam gaya penting: anda memberi komputer satu set arahan untuk diikuti dan komputer melakukan apa yang anda mahukan dalam urutan yang mudah diikuti.

Bayangkan kita mempunyai senarai kata laluan yang paling biasa digunakan di dunia:

const passwords = [ "123456", "password", "admin", "freecodecamp", "mypassword123", ];

Aplikasi kami akan memeriksa kata laluan pengguna semasa mendaftar dan tidak membenarkan mereka membuat kata laluan dari senarai ini.

Tetapi sebelum melakukannya, kami ingin memperhalusi senarai ini. Kami sudah mempunyai kod yang tidak membenarkan pengguna mendaftar dengan kata laluan yang panjangnya kurang dari 9 aksara. Oleh itu, kita boleh mengurangkan senarai ini hanya dengan kata laluan yang mempunyai 9 aksara atau lebih untuk mempercepat pemeriksaan kita.

Sebagai kesan, kami akan menulis:

// using the passwords constant from above let longPasswords = []; for (let i = 0; i = 9) { longPasswords.push(password); } } console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. Kami membuat senarai kosong yang dipanggil longPasswords.
  2. Kemudian kami menulis gelung yang akan dijalankan seberapa banyak kali terdapat kata laluan dalam passwordssenarai asal .
  3. Kemudian kami mendapat kata laluan pada indeks lelaran gelung yang sedang kami gunakan.
  4. Kemudian kami memeriksa sama ada kata laluan itu lebih besar atau sama dengan 9 aksara.
  5. Sekiranya ada, kami memasukkannya ke dalam longPasswordssenarai.

Salah satu kelebihan penting pengaturcaraan adalah hakikat bahawa ia mudah difikirkan. Seperti komputer, kita dapat mengikuti langkah demi langkah.

Apa itu Pengaturcaraan Deklaratif?

Tetapi ada cara lain untuk berfikir tentang pengekodan - sebagai proses untuk sentiasa menentukan perkara apa. Ini disebut sebagai pengaturcaraan deklaratif.

Pengaturcaraan Imperatif dan deklaratif mencapai matlamat yang sama. Mereka hanya berbeza cara memikirkan kod. Mereka mempunyai kelebihan dan kekurangan dan ada masanya untuk menggunakan kedua-duanya.

Walaupun pengaturcaraan penting lebih mudah difikirkan untuk pemula, pengaturcaraan deklaratif membolehkan kita menulis kod yang lebih mudah dibaca yang mencerminkan apa yang sebenarnya ingin kita lihat. Digabungkan dengan nama pemboleh ubah yang baik, ia boleh menjadi alat yang hebat.

Oleh itu, daripada memberikan arahan langkah demi langkah kepada komputer, kita menyatakan apa yang kita mahukan dan kita memberikannya kepada hasil dari beberapa proses.

// using the passwords constant from above const longPasswords = passwords.filter(password => password.length >= 9); console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

Senarai longPasswordsdidefinisikan (atau diisytiharkan) sebagai senarai yang passwordsdisaring hanya untuk kata laluan yang lebih besar daripada atau sama dengan 9 aksara.

Kaedah pengaturcaraan fungsional dalam JavaScript membolehkan kita menyatakan sesuatu dengan bersih.

  • Ini adalah senarai kata laluan.
  • Ini adalah senarai kata laluan yang panjang sahaja. (Selepas berlari filter.)
  • Ini adalah senarai kata laluan dengan id. (Selepas berlari map.)
  • Ini adalah kata laluan tunggal. (Selepas berlari find.)

Salah satu kekuatan pengaturcaraan deklaratif adalah bahawa ia memaksa kita untuk bertanya apa yang kita mahukan terlebih dahulu. Dalam penamaan perkara baru ini, kod kita menjadi ekspresif dan eksplisit.

Dan apabila rakan pembangun kami datang dan melihat kod kami, mereka dapat mencari pepijat dengan lebih mudah:

"Anda memanggil pemboleh ubah ini 'indeks' yang membuat saya mengharapkan angka, tetapi saya melihat ia adalah hasil filteryang mengembalikan array. Ada apa dengan itu? "

Saya mendorong pelajar untuk menulis kod deklaratif sekerap mungkin, sentiasa menentukan (dan melakukan refactoring untuk mentakrifkan semula) perkara apa.

Bukannya memegang keseluruhan proses penting dalam kepala anda, anda boleh memegang lebih ketara perkara dalam kepala anda dengan definisi yang jelas.

Mike Zetlow adalah Lead Instructor di 10x Code Camp .