Kohustuslik vs deklaratiivne programmeerimine - erinevus on selgitatud lihtsas inglise keeles

Kodeerimisõpetajana on minu kohus saata programmeerijad uutmoodi mõtlema. Suur nihe mõtlemises toimub siis, kui läheme üle imperatiivselt deklaratiivsele programmeerimisele.

Kui mu õpilased on JavaScripti õppinud, tutvume funktsionaalse programmeerimise ja deklaratiivses kodeerimisstiilis kasutatavate massiivimeetoditega. Siin hakkavad nende ajud hüppama ja kohisema ning sulama nagu vahukommid tule kohal.

Mis on kohustuslik programmeerimine?

Algajana olete tõenäoliselt enamasti kodeerinud imperatiivses stiilis: annate arvutile juhiste kogumi, mida järgida ja arvuti teeb lihtsalt järgitavas järjestuses seda, mida soovite.

Kujutage ette, et meil on nimekiri maailma kõige sagedamini kasutatavatest paroolidest:

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

Meie rakendus kontrollib registreerumisel kasutaja parooli ega luba neil sellest loendist parooli luua.

Kuid enne seda tahame seda nimekirja täpsustada. Meil on juba kood, mis ei võimalda kasutajal registreeruda vähem kui 9 tähemärgi pikkuse parooliga. Nii et kontrollimise kiirendamiseks võime selle loendi taandada vaid 9-kohalistele paroolidele.

Peaksime kirjutama:

// using the passwords constant from above let longPasswords = []; for (let i = 0; i = 9) { longPasswords.push(password); } } console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. Loome tühja nimekirja nimega longPasswords.
  2. Seejärel kirjutame tsükli, mis töötab nii mitu korda, kui algses passwordsloendis on paroole .
  3. Siis saame parooli praeguse tsükli iteratsiooni indeksist.
  4. Seejärel kontrollime, kas see parool on suurem kui 9 tähemärki või sellega võrdne.
  5. Kui see on nii, siis lisame selle longPasswordsnimekirja.

Programmeerimise üks hädavajalik külg on asjaolu, et selle üle on lihtne mõelda. Nagu arvuti, saame ka samm-sammult jälgida.

Mis on deklaratiivne programmeerimine?

Kuid kodeerimisel on veel üks mõtteviis - kui protsess pidevalt määratleda, mis asjad on. Seda nimetatakse deklaratiivseks programmeerimiseks.

Imperatiivse ja deklaratiivse programmeerimisega saavutatakse samad eesmärgid. Need on lihtsalt erinevad viisid koodi mõtlemiseks. Neil on oma eelised ja puudused ning on mõlema kasutamist.

Kuigi kohustuslikku programmeerimist on algajatele lihtsam põhjendada, võimaldab deklaratiivne programmeerimine meil kirjutada loetavama koodi, mis kajastaks seda, mida me täpselt näha tahame. Koos heade muutujate nimedega võib see olla võimas tööriist.

Nii et selle asemel, et anda arvutile samm-sammult juhiseid, kuulutame välja, mida me tahame, ja määrame selle mõne protsessi tulemusele.

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

Nimekiri longPasswordson määratletud (või deklareeritud) kui passwordsfiltreeritud loend ainult paroolide puhul, mis on suuremad või võrdsed 9 tähemärgiga.

JavaScripti funktsionaalsed programmeerimismeetodid võimaldavad meil asju puhtalt deklareerida.

  • See on paroolide loend.
  • See on loetelu ainult pikkadest paroolidest. (Pärast jooksmist filter.)
  • See on id-idega paroolide loend. (Pärast jooksmist map.)
  • See on üks parool. (Pärast jooksmist find.)

Üks deklaratiivse programmeerimise tugevusi on see, et see sunnib meid kõigepealt küsima, mida me tahame. Just nende uute asjade nimetamisel muutub meie kood väljendusrikkaks ja selgesõnaliseks.

Ja kui meie kaasarendajad tulevad ja vaatavad meie koodi, saavad nad vigu hõlpsamini leida:

"Te nimetate seda muutujat" indeksiks ", mis paneb mind ootama numbrit, kuid näen, et selle tulemus filteron massiiv. Mis sellest saab? "

Julgustan õppijaid kirjutama deklaratiivset koodi nii tihti kui võimalik, määratledes pidevalt (ja tehes ümberdefineerimise), mis asjad on.

Selle asemel, et kogu imperatiivset protsessi peas hoida, saate selge määratlusega oma käes hoida käegakatsutavamat asja .

Mike Zetlow on 10x Code Campi juhendaja .