Strukturert programmering

Strukturert programmering er et programmeringsparadigme som tar sikte på å forbedre klarheten, kvaliteten og utviklingstiden til et dataprogram ved å bruke bare subrutiner og tre grunnleggende kontrollstrukturer : sekvens , valg ( hvis og bryter ) og iterasjon ( for og mens - løkker ). ) ; på samme måte anses bruken av ubetinget overføring ( GOTO ) som unødvendig og kontraproduktiv; denne instruksjonen ender vanligvis opp med å generere den såkalte spaghettikoden , som er mye vanskeligere å følge og vedlikeholde, i tillegg til å forårsake en rekke programmeringsfeil .

Det dukket opp på 1960-tallet, spesielt fra arbeidet til Böhm og Jacopini, [ 1 ] og et kjent forfatterskap fra 1968: Edsger Dijkstras "The Goto Sentence Considered Harmful" . [ 2 ] Dens postulater ville bli forsterket, på et teoretisk nivå, av det strukturerte programteoremet og, på et praktisk nivå, av utseendet til språk som ALGOL , utstyrt med konsistente og velutformede kontrollstrukturer . [ 3 ]

Elementer

Kontrollstrukturer

Etter strukturerte programteoremet blir alle programmer sett på som sammensatt av kontrollstrukturer:

Subrutiner

Subrutiner ; Anropbare enheter, som prosedyrer, funksjoner, metoder eller underprogrammer, brukes for å tillate at en sekvens refereres til av en enkelt setning.

Blokkerer

Blokker brukes for å tillate at grupper av utsagn behandles som om de var en enkelt utsagn. "Blokkstrukturerte" språk har en syntaks for å omslutte strukturer på en eller annen formell måte, for eksempel en if-setning i parentes. if..fisom i ALGOL 68 , eller en seksjon med kode omsluttet av firkantede parenteser BEGIN..END, som i PL/I og Pascal , innrykk med mellomrom som i Python , eller klammeparentesene {...}til C og mange senere språk .

Opprinnelsen til strukturert programmering

På slutten av 1970-tallet dukket det opp en ny måte å programmere på som ikke bare tillot utvikling av pålitelige og effektive programmer, men også disse ble skrevet på en måte som lette deres forståelse i påfølgende forbedringsfaser.

Det strukturerte programteoremet , foreslått av Böhm-Jacopini, viser at hvert program kan skrives ved å bruke bare følgende tre kontrollsetninger:

Bare med disse tre strukturene kan alle mulige programmer og applikasjoner skrives. Selv om programmeringsspråk har et større repertoar av kontrollstrukturer , kan disse bygges ved å bruke de tre grunnleggende nevnte.


Historikk

Teoretisk grunnlag

The Structured Program Theorem gir det teoretiske grunnlaget for strukturert programmering. Han påpeker at kombinasjonen av de tre grunnleggende strukturene, sekvens, seleksjon og iterasjon, er tilstrekkelig til å uttrykke enhver beregningsbar funksjon . Denne observasjonen oppsto ikke med den strukturerte programmeringsbevegelsen. Disse strukturene er tilstrekkelige til å beskrive instruksjonssyklusen til en sentral prosesseringsenhet , så vel som driften av en Turing-maskin . Dermed kjører en prosessor alltid et "strukturert program" i denne forstand, selv om instruksjonene den leser fra minnet ikke er en del av et strukturert program. Imidlertid krediterer forfatterne vanligvis resultatet til en artikkel skrevet i 1966 av Böhm og Jacopini, muligens fordi Dijkstra hadde sitert denne skriften. [ 4 ] Teoremet for strukturert program gir ikke svar på hvordan man skriver og analyserer et strukturert program på en nyttig måte. Disse problemene ble tatt opp i løpet av 1960- og begynnelsen av 1970-tallet, med betydelige bidrag fra Dijkstra, Robert W. Floyd , Tony Hoarey og David Gries .

Diskusjon

PJ Plauger, en tidlig bruker av strukturert programmering, beskrev sin reaksjon på teoremet om strukturert program:

Vi konvertitter viftet med denne interessante nyheten under nesen til hardhendte assemblerspråkprogrammerere som fortsatte å trave langs forvridd logikk og sa: "Jeg vedder på at du ikke kan strukturere dette." Verken bevisene fra Böhm og Jacopini, eller våre gjentatte suksesser med å skrive strukturert kode, tok dem en dag tidligere enn de var klare til å bli overbevist. [ 5 ]

Donald Knuth godtok prinsippet om at programmer må tilpasse seg selvsikkert, men han var uenig (og er fortsatt uenig) [ referanse nødvendig ] med slettingen av GOTO-uttalelsen. I sin artikkel fra 1974 "Structured Programming with Goto Statements" ga han eksempler der han mente at et direkte hopp fører til klarere og mer effektiv kode uten å ofre demonstrerbarhet. Knuth foreslo en løsere strukturell begrensning: Det må være mulig å sette opp et programflytskjema med alle forgreninger til venstre, alle bakovergrener til høyre, og ingen forgreninger som krysser hverandre. Mange av kompilatorene og grafteoretikere har tatt til orde for å bare tillate reduserbare flytgrafer [ hvem? ] [ når? ] .

Teoretikere for strukturert programmering fikk en viktig alliert på 1970-tallet etter at IBM -forsker Harlan Mills brukte sin tolkning av teori om strukturert programmering på utviklingen av et indekseringssystem for New York Times forskningsarkiv. YorkTimes . Prosjektet var en stor ingeniørsuksess, og ledere ved andre selskaper siterte det til støtte for å ta i bruk strukturert programmering, selv om Dijkstra kritiserte måten Mills tolkning skilte seg fra det publiserte arbeidet.

Det skulle ikke være før i 1987 at spørsmålet om strukturert programmering ble oppmerksom på et datavitenskapelig tidsskrift. Frank Rubin gjorde det det året, med skriften: ««GOTO-setningen anses som skadelig» anses som skadelig?». Dette ble fulgt av en rekke innvendinger, for eksempel et svar fra Dijkstra selv som kritiserte Rubin hardt og innrømmelsene som andre forfattere ga da de svarte ham.

Resultat

På slutten av 1900-tallet er nesten alle forskere overbevist om at det er nyttig å lære og anvende begrepene strukturert programmering. Programmeringsspråk på høyt nivå som opprinnelig manglet programmeringsstrukturer, som FORTRAN , COBOL og BASIC , gjør det nå.

Fordeler med strukturert programmering

Blant fordelene med strukturert programmering i forhold til den forrige modellen (i dag nedsettende kalt spaghettikode ), bør følgende nevnes:

Strukturerte programmeringsspråk

Selv om det er mulig å utvikle strukturert programmering i et hvilket som helst programmeringsspråk, er et prosedyrespråk mer egnet . Noen av språkene som opprinnelig ble brukt for strukturert programmering inkluderer ALGOL , Pascal , PL/I og Ada , men de fleste nye prosedyreprogrammeringsspråk har siden den gang inkludert funksjoner for å oppmuntre til strukturert programmering og noen ganger bevisst utelate funksjoner [ 6 ] i et forsøk å gjøre ustrukturert programmering vanskeligere .

Nye paradigmer

Etter strukturert programmering har det blitt skapt nye paradigmer som modulær programmering , objektorientert programmering , lagdelt programmering og andre, samt nye programmeringsmiljøer som letter programmering av store applikasjoner og systemer.

Referanser

  1. Böhm, Jacopini. "Flytdiagrammer, tureringsmaskiner og språk med bare to formasjonsregler" Comm. ACM , 9(5):366-371, mai 1966, doi=10.1145/355592.365646
  2. Edsger Dijkstra (mars 1968). «Gå til erklæring som anses som skadelig». Kommunikasjon til ACM (PDF ) 11 (3): 147-148. doi : 10.1145/362929.362947 . «Den uhemmede bruken av go to-utsagnet har som en umiddelbar konsekvens at det blir fryktelig vanskelig å finne et meningsfylt sett med koordinater for å beskrive prosessfremdriften. ... Gå til-uttalelsen slik den står er rett og slett for primitiv, det er for mye en invitasjon til å lage et rot i programmet sitt. » 
  3. Clark, Leslie B. Wilson, Robert G.; Robert, Clark (2000). Sammenlignende programmeringsspråk (3. utgave). Harlow, England: Addison-Wesley. s. 20. ISBN  9780201710120 . Arkivert fra originalen 26. november 2015 . Hentet 25. november 2015 . 
  4. ^ Dijkstra, 1968 .
  5. P. J. Plauger (1993). Programmering med hensikt . PTR Prentice Hall. s. 20 . ISBN 978-013-721-374-0 .  
  6. GOTO for eksempel

Bibliografi

Se også

Eksterne lenker