Funktsionaalne vs objektorienteeritud vs protseduuriline programmeerimine

Sellel nädalal antud intervjuu käigus küsiti minult, mis vahe on funktsionaalsel, objektorienteeritud ja protseduurilisel programmeerimisel ning kui aus olla, siis ma ei teadnud tegelikult, kuidas sellele küsimusele vastata (ja see oli esimene kord, kui ma seda kuulsin) protseduurilise programmeerimise kohta ...). Nii otsustasin täna teha mõned uuringud ja (proovida) aru saada, millised on peamised erinevused.

Alustame mõne määratlusega:

„Funktsionaalne programmeerimine (FP) on programmeerimisparadigma - arvutiprogrammide struktuuri ja elementide ülesehitamise stiil -, mis käsitleb arvutamist matemaatiliste funktsioonide hindamisena ja väldib muutuvat olekut ja muudetavaid andmeid.“ - Vikipeedia

„Objektorienteeritud programmeerimine (OOP) on“ objektide ”kontseptsioonil põhinev programmeerimise paradigma, mis võib sisaldada andmeid väljade kujul, mida sageli nimetatakse atribuutideks; ja kood protseduuride vormis, mida sageli nimetatakse ka meetoditeks. ”- Vikipeedia

Protseduuriline programmeerimine on programmeerimise paradigma, mis tuleneb struktureeritud programmeerimisest ja põhineb protseduurikõne kontseptsioonil. Protseduurid, mida nimetatakse ka rutiinideks, alamprogrammideks või funktsioonideks, sisaldavad lihtsalt teostatavate arvutustoimingute seeriat. ”- Vikipeedia

Ok, nii et see on sissejuhatus, kuid tutvustame pisut lähemalt.

Esiteks, mis on programmeerimise paradigma? See on programmeerimisstiil, tarkvara arendamise mõtteviis. Programmeerimisparadigma ei viita konkreetsele keelele, vaid pigem programmeerimisviisile, metoodikale. Mõnes keeles on mõnes paradigmas kirjutamine lihtne, teistes aga mitte. Lisateavet leiate Vikipeedia artiklist.

Mõelgem nüüd kolmele programmeerimisparadigmale, mis meid tänapäeval huvitavad:

Protseduuriline programmeerimine (PP), tuntud ka kui sisemine programmeerimine, võtab ülalt alla lähenemisviisi. See on juhendite loendi kirjutamine, et arvutisse öelda, mida samm-sammult teha. See tugineb protseduuridele või rutiinidele.

Objektorienteeritud programmeerimine (OOP) on andmete ja käitumise objektidesse kapseldamine. OOP-rakendus kasutab objektide kogumit, mis teab, kuidas teatud toiminguid teha ja kuidas rakenduse muude elementidega suhelda. Näiteks võib objektiks olla inimene. Sellel inimesel oleks nimi (see oleks objekti omadus) ja ta teaks, kuidas kõndida (see oleks meetod). Meetodit OOP-s võib pidada protseduuriks PP-s, kuid siin kuulub see kindlale objektile. Teine oluline OOP aspekt on klassid. Klassi võib pidada objekti kavandiks.

Funktsionaalne programmeerimine (FP) on andmete edastamine funktsioonilt funktsioonile funktsiooni saamiseks tulemuse saamiseks. FP-s käsitletakse funktsioone andmetena, mis tähendab, et saate neid kasutada parameetritena, tagastada, luua funktsioone teistest funktsioonidest ja luua kohandatud funktsioone. Raamprogrammi funktsioonid peavad olema puhtad funktsioonid, nad peaksid vältima jagatud olekut ning kõrvaltoimed ja andmed peaksid olema muutumatud. Puhas funktsioon on funktsioon, mis sama tüüpi sisendi korral tagastab alati sama väljundi, see ei sõltu kohalikust ega globaalsest olekust. Jagatud olek on olek, mida jagatakse enam kui ühe funktsiooni või enam kui ühe andmestruktuuri vahel. Nii et jagatud oleku korral peate funktsiooni mõju mõistmiseks teadma iga jagatud muutuja kõiki üksikasju. See lisab palju keerukust ja võimaldab vähem modulaarsust.

See on täna! Järgmine kord, kui minult (ja loodetavasti ka teilt) küsitakse, mis vahe on funktsionaalse, objektorienteeritud ja protseduurilise programmeerimise vahel, suudan vähemalt selgitada mõlema suurt joont.

Kui teil on täiendavaid selgitusi või kommentaare, lisage need kõhklemata.