Imperative vs Declarative Programming - η διαφορά που εξηγείται στα Απλά Αγγλικά

Ως εκπαιδευτής κωδικοποίησης, είναι καθήκον μου να στέλνω προγραμματιστές στον κόσμο να σκέφτονται με νέους τρόπους. Μια σημαντική αλλαγή στη σκέψη εμφανίζεται όταν αλλάζουμε από επιτακτικό σε δηλωτικό προγραμματισμό.

Μόλις οι μαθητές μου μάθουν τη βασική JavaScript, εξετάζουμε τον λειτουργικό προγραμματισμό και τις μεθόδους πίνακα που χρησιμοποιούνται σε ένα δηλωτικό στυλ κωδικοποίησης. Αυτό είναι όπου οι εγκέφαλοί τους αρχίζουν να σκάουν και να τσιμπάνε και να λιώνουν σαν marshmallows πάνω από μια φωτιά.

Τι είναι ο Imperative Programming;

Ως αρχάριος, πιθανότατα έχετε κωδικοποιήσει ως επί το πλείστον ένα επιτακτικό στυλ: δίνετε στον υπολογιστή ένα σύνολο οδηγιών που πρέπει να ακολουθήσετε και ο υπολογιστής κάνει ό, τι θέλετε με μια ακολουθία εύκολη στην παρακολούθηση.

Φανταστείτε ότι έχουμε μια λίστα με τους πιο συχνά χρησιμοποιούμενους κωδικούς πρόσβασης στον κόσμο:

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

Η εφαρμογή μας πρόκειται να ελέγξει τον κωδικό πρόσβασης του χρήστη κατά την εγγραφή και να μην τους επιτρέψει να δημιουργήσουν έναν κωδικό πρόσβασης από αυτήν τη λίστα.

Αλλά πριν το κάνουμε αυτό, θέλουμε να βελτιώσουμε αυτήν τη λίστα. Έχουμε ήδη έναν κωδικό που δεν επιτρέπει στον χρήστη να εγγραφεί με κωδικό πρόσβασης μικρότερο από 9 χαρακτήρες. Έτσι μπορούμε να μειώσουμε αυτήν τη λίστα σε κωδικούς πρόσβασης που έχουν 9 χαρακτήρες ή περισσότερους για να επιταχύνουμε τον έλεγχο.

Εντυπωσιακά, γράφουμε:

// using the passwords constant from above let longPasswords = []; for (let i = 0; i = 9) { longPasswords.push(password); } } console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. Δημιουργούμε μια κενή λίστα που ονομάζεται longPasswords.
  2. Στη συνέχεια, γράφουμε έναν βρόχο που θα εκτελείται όσες φορές υπάρχουν κωδικοί πρόσβασης στην αρχική passwordsλίστα.
  3. Στη συνέχεια, λαμβάνουμε τον κωδικό πρόσβασης στο ευρετήριο της επανάληψης βρόχου στον οποίο είμαστε επί του παρόντος.
  4. Στη συνέχεια, ελέγχουμε εάν αυτός ο κωδικός πρόσβασης είναι μεγαλύτερος ή ίσος με 9 χαρακτήρες.
  5. Εάν είναι, το βάζουμε στη longPasswordsλίστα.

Ένα από τα πλεονεκτήματα του επιτακτικού προγραμματισμού είναι το γεγονός ότι είναι εύκολο να το σκεφτούμε. Όπως ένας υπολογιστής, μπορούμε να ακολουθήσουμε βήμα προς βήμα.

Τι είναι ο δηλωτικός προγραμματισμός;

Αλλά υπάρχει ένας άλλος τρόπος σκέψης για την κωδικοποίηση - ως μια διαδικασία συνεχούς προσδιορισμού των πραγμάτων. Αυτό αναφέρεται ως δηλωτικός προγραμματισμός.

Ο εντυπωσιακός και δηλωτικός προγραμματισμός επιτυγχάνει τους ίδιους στόχους. Είναι απλώς διαφορετικοί τρόποι σκέψης για τον κώδικα. Έχουν τα οφέλη και τα μειονεκτήματά τους και υπάρχουν φορές να χρησιμοποιούν και τα δύο.

Αν και ο επιτακτικός προγραμματισμός είναι πιο εύλογος για αρχάριους, ο δηλωτικός προγραμματισμός μας επιτρέπει να γράφουμε πιο αναγνώσιμο κώδικα που να αντικατοπτρίζει τι ακριβώς θέλουμε να δούμε. Σε συνδυασμό με καλά ονόματα μεταβλητών, μπορεί να είναι ένα ισχυρό εργαλείο.

Έτσι, αντί να δώσουμε στον υπολογιστή οδηγίες βήμα προς βήμα, δηλώνουμε τι θέλουμε και το αντιστοιχίζουμε στο αποτέλεσμα κάποιας διαδικασίας.

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

Η λίστα του longPasswordsορίζεται (ή δηλώνεται) ως η λίστα passwordsφιλτραρισμένων μόνο κωδικών πρόσβασης μεγαλύτερων ή ίσων με 9 χαρακτήρες.

Οι λειτουργικές μέθοδοι προγραμματισμού σε JavaScript μας επιτρέπουν να δηλώνουμε καθαρά πράγματα.

  • Αυτή είναι μια λίστα κωδικών πρόσβασης.
  • Αυτή είναι μια λίστα μόνο μεγάλων κωδικών πρόσβασης. (Μετά την εκτέλεση filter.)
  • Αυτή είναι μια λίστα κωδικών πρόσβασης με αναγνωριστικά. (Μετά την εκτέλεση map.)
  • Αυτός είναι ένας μοναδικός κωδικός πρόσβασης. (Μετά την εκτέλεση find.)

Ένα από τα πλεονεκτήματα του δηλωτικού προγραμματισμού είναι ότι μας αναγκάζει να ρωτήσουμε τι θέλουμε πρώτα. Στην ονομασία αυτών των νέων πραγμάτων ο κώδικάς μας γίνεται εκφραστικός και σαφής.

Και όταν οι συνάδελφοί προγραμματιστές μας έρχονται και δουν τον κώδικά μας, μπορούν να βρουν σφάλματα πιο εύκολα:

«Καλείτε αυτή τη μεταβλητή« ευρετήριο »που με κάνει να περιμένω έναν αριθμό, αλλά βλέπω ότι είναι το αποτέλεσμα του filterοποίου επιστρέφει έναν πίνακα. Τι συμβαίνει με αυτό?"

Ενθαρρύνω τους μαθητές να γράφουν δηλωτικό κώδικα όσο το δυνατόν συχνότερα, καθορίζοντας συνεχώς (και επαναπροσδιορίζοντας τον επαναπροσδιορισμό) ποια είναι τα πράγματα.

Αντί να κρατάτε μια ολόκληρη επιτακτική διαδικασία στο κεφάλι σας, μπορείτε να κρατάτε ένα πιο απτό πράγμα στο κεφάλι σας με έναν σαφή ορισμό.

Ο Mike Zetlow είναι ο επικεφαλής εκπαιδευτής στο 10x Code Camp .