Programmeringsparadigme

Programmeringsparadigmer er måtene å klassifisere programmeringsspråk på basert på deres egenskaper. Språk kan klassifiseres i flere paradigmer.

Noen paradigmer er først og fremst opptatt av implikasjoner for utførelsesmodellen til språket, for eksempel å tillate bivirkninger eller om sekvensen av operasjoner er definert av utførelsesmodellen. Andre paradigmer er først og fremst opptatt av måten koden er organisert på, for eksempel å gruppere kode i enheter sammen med tilstanden som koden modifiserer. Andre er imidlertid først og fremst opptatt av syntaksstil og grammatikk.

Vanlige programmeringsparadigmer inkluderer: [ 1 ]​ [ 2 ]​ [ 3 ]

Symbolske teknikker som refleksjon, som lar programmet referere til seg selv, kan også betraktes som et programmeringsparadigme. Dette er imidlertid forenlig med de store paradigmene, og er derfor ikke et reelt paradigme i seg selv.

For eksempel har språk som faller inn under imperativparadigmet to hovedkarakteristikker: de etablerer rekkefølgen operasjoner skjer i, med konstruksjoner som eksplisitt kontrollerer den rekkefølgen, og de tillater bivirkninger, der tilstanden kan endres ved en gitt tid. , innenfor én kodeenhet, og les deretter på et annet tidspunkt innenfor en annen kodeenhet. Kommunikasjon mellom kodeenheter er ikke eksplisitt. I mellomtiden, i objektorientert programmering , er koden organisert i objekter som inneholder tilstand som bare er modifisert av koden som er en del av objektet. De fleste objektorienterte språk er også imperative språk. I motsetning til dette indikerer ikke språk som samsvarer med det deklarative paradigmet i hvilken rekkefølge operasjoner skal utføres. I stedet gir de en rekke operasjoner tilgjengelig på systemet, sammen med forholdene som hver får lov til å kjøre under. Utførelsesmodellimplementeringen av språket holder styr på hvilke operasjoner som er gratis å utføre og velger rekkefølgen uavhengig. Mer i sammenligning av programmeringsspråk med flere paradigmer.

Prosedyreprogrammeringsspråk

Utviklingen av prosessuelle språk ga opphav til språk som ble brukt som vokabular relatert til problemet som skulle løses. Eksempler på disse språkene er:

Alle disse språkene følger et prosedyreparadigme. De beskriver, trinn for trinn, nøyaktig prosessen som må følges for å løse et spesifikt problem. Effektiviteten og effektiviteten til hver løsning avhenger av erfaringen, oppfinnsomheten og dyktigheten til programmereren .

Sammendrag

Akkurat som programvareteknikk (som en prosess) er definert av forskjellige metoder , er programmeringsspråk (som datamodeller) definert av forskjellige paradigmer . Noen språk er designet for å støtte ett paradigme ( Smaltalk støtter objektorientert programmering, Haskell støtter funksjonell programmering), mens andre programmeringsspråk støtter flere paradigmer (som Object Pascal , C++ , Java , JavaScript , C# , Scala , Visual Basic , Common Lisp , Scheme , Perl , PHP , Python , Ruby , Oz og F# ). For eksempel kan programmer skrevet i C++, Object Pascal eller PHP være rent prosedyremessige, rent objektorienterte, eller kan inneholde elementer fra begge eller andre paradigmer. Programvaredesignere og programmerere bestemmer hvordan de skal bruke disse paradigmatiske elementene.

I objektorientert programmering behandles programmer som et sett med objekter som samhandler. I funksjonell programmering behandles programmer som en sekvens av tilstandsløse funksjonsevalueringer. Ved programmering av datamaskiner eller systemer med mange prosessorer, i prosessorientert programmering, behandles programmer som sett med samtidige prosesser som virker på logiske delte datastrukturer.

Mange programmeringsparadigmer er like kjent for teknikkene de forbyr som for de de muliggjør. For eksempel tillater ikke ren funksjonell programmering bruk av bivirkninger, mens strukturert programmering ikke tillater bruk av "gå til"-setningen. Delvis av denne grunn blir nye paradigmer ofte sett på som doktrinære eller for rigide av de som er vant til eldre stiler. [ 6 ] Å unngå visse teknikker kan imidlertid gjøre det lettere å forstå oppførselen til programmet og bevise teoremer om riktigheten av programmet.

Programmeringsparadigmer kan også sammenlignes med programmeringsmodeller, slik at en utførelsesmodell kan påkalles ved bruk av bare ett API. Programmeringsmodeller kan også klassifiseres i paradigmer basert på egenskapene til utførelsesmodellen.

For parallell databehandling er det vanlig å bruke en programmeringsmodell i stedet for et språk. Årsaken er at detaljene til parallell maskinvare siver inn i abstraksjonene som brukes til å programmere maskinvaren. Dette får programmereren til å kartlegge mønstre i algoritmen til mønstre i utførelsesmodellen (som har blitt satt inn på grunn av en maskinvarelekkasje i abstraksjonen). Som en konsekvens er ikke noe parallelt programmeringsspråk godt egnet for alle beregningsproblemer. Derfor er det mer praktisk å bruke et grunnleggende skriptspråk og sette inn API-kall i parallelle utførelsesmodeller gjennom en programmeringsmodell. Slike parallelle programmeringsmodeller kan klassifiseres i henhold til maskinvarereflekterende abstraksjoner som delt minne, distribuert minne med meldingsoverføring , forestillinger om sted synlig i koden, etc. Disse kan betraktes som varianter av programmeringsparadigmet som bare gjelder parallelle programmeringsspråk og modeller.

Referanser

  1. Normark, Kurt. Oversikt over de fire hovedprogrammeringsparadigmene . Aalborg Universitet, 9. mai 2011. Hentet 22. september 2012.
  2. ^ Frans Coenen (11. oktober 1999). "Kenskaper ved deklarative programmeringsspråk" . cgi.csc.liv.ac.uk. _ Hentet 20. februar 2014 . 
  3. Michael A. Covington (23. august 2010). "CSCI/ARTI 4540/6540: Første forelesning om symbolsk programmering og LISP" . University of Georgia. Arkivert fra originalen 7. mars 2012 . Hentet 20. november 2013 . 
  4. Peter Van Roy (12. mai 2009). "Programmeringsparadigmer: Hva enhver programmerer bør vite" . info.ucl.ac.be . Hentet 27. januar 2014 . 
  5. Peter Van-Roy; Seif Haridi (2004). Konsepter, teknikker og modeller for dataprogrammering . MIT Press. ISBN  978-0-262-22069-9 . 
  6. Frank Rubin (mars 1987). " ' GOTO anses som skadelig' anses som skadelig" . Kommunikasjon av ACM 30 (3): 195-196. S2CID  6853038 . doi : 10.1145/214748.315722 . Arkivert fra originalen 20. mars 2009. 

Se også