Imperativ programmering - Imperative programming

Inden for datalogi er imperativ programmering et programmeringsparadigme, der bruger udsagn, der ændrer et programs tilstand . På nogenlunde samme måde som den tvingende stemningnaturlige sprog udtrykker kommandoer, består et bydende program af kommandoer, som computeren skal udføre. Imperativ programmering fokuserer på at beskrive, hvordan et program fungerer.

Udtrykket bruges ofte i modsætning til deklarativ programmering , der fokuserer på, hvad programmet skal udrette uden at specificere, hvordan programmet skal opnå resultatet.

Imperativ og proceduremæssig programmering

Procedureprogrammering er en form for tvingende programmering, hvor programmet er bygget op fra en eller flere procedurer (også betegnet underrutiner eller funktioner). Betegnelserne bruges ofte som synonymer, men brugen af ​​procedurer har en dramatisk effekt på, hvordan tvingende programmer fremstår, og hvordan de er konstrueret. Kraftigt proceduremæssig programmering, hvor tilstandsændringer er lokaliseret til procedurer eller begrænset til eksplicitte argumenter og returneringer fra procedurer, er en form for struktureret programmering . Fra 1960'erne og frem er struktureret programmering og modulær programmering generelt blevet fremmet som teknikker til at forbedre vedligeholdelsesevnen og den overordnede kvalitet af tvingende programmer. Begreberne bag objektorienteret programmering forsøger at udvide denne tilgang.

Procedureprogrammering kan betragtes som et skridt i retning af deklarativ programmering. En programmør kan ofte fortælle, blot ved at se på navne, argumenter og typer procedurer (og relaterede kommentarer), hvad en bestemt procedure skal gøre, uden nødvendigvis at se på detaljerne i, hvordan den opnår sit resultat. På samme tid er et komplet program stadig vigtigt, da det i vid udstrækning retter de udsagn, der skal eksekveres og deres rækkefølge for udførelse.

Begrundelse og grundlag for tvingende programmering

Hardwareimplementering af næsten alle computere er bydende nødvendig. Næsten al computerhardware er designet til at eksekvere maskinkode , som er native til computeren og er skrevet i den tvingende stil. Fra dette lavt niveau-perspektiv er programtilstanden defineret af hukommelsens indhold, og udsagnene er instruktioner på computerens eget maskinesprog. Imperative sprog på højere niveau bruger variabler og mere komplekse udsagn, men følger stadig det samme paradigme. Opskrifter og procestjeklister , men ikke computerprogrammer , er også velkendte begreber, der i stil ligner tvingende programmering; hvert trin er en instruktion, og den fysiske verden holder staten. Da de grundlæggende ideer om tvingende programmering både er konceptuelt velkendte og direkte legemliggjort i hardwaren, er de fleste edb -sprog i den tvingende stil.

Opgaveerklæringer udfører i et imperativt paradigme en operation på oplysninger, der findes i hukommelsen, og gemmer resultaterne i hukommelsen til senere brug. Imperative sprog på højt niveau tillader derudover evaluering af komplekse udtryk , som kan bestå af en kombination af aritmetiske operationer og funktionsevalueringer , og tildeling af den resulterende værdi til hukommelsen. Looping -sætninger (som i mens loops , do while loops og for loops ) gør det muligt at udføre en sekvens af udsagn flere gange. Loops kan enten udføre de udsagn, de indeholder et foruddefineret antal gange, eller de kan udføre dem gentagne gange, indtil nogle betingelser ændres. Betingede forgreningserklæringer tillader kun en sekvens af udsagn, hvis en betingelse er opfyldt. Ellers springes udsagnene over, og eksekveringssekvensen fortsætter fra sætningen, der følger dem. Ubetingede forgreningsudsagn gør det muligt at overføre en eksekveringssekvens til en anden del af et program. Disse omfatter springet (kaldet goto på mange sprog), switch og underprogram, underprogram eller procedureopkald (som normalt vender tilbage til den næste sætning efter opkaldet).

Tidligt i udviklingen af programmeringssproghøjt niveau muliggjorde introduktionen af blokken konstruktionen af ​​programmer, hvor en gruppe udsagn og erklæringer kunne behandles som om de var en erklæring. Dette, ved siden af ​​introduktionen af underrutiner , gjorde det muligt at udtrykke komplekse strukturer ved hierarkisk nedbrydning til enklere procedurestrukturer.

Mange tvingende programmeringssprog (såsom Fortran , BASIC og C ) er abstraktioner af samlingssprog .

Historie om tvingende og objektorienterede sprog

De tidligste tvingende sprog var maskinsprogene på de originale computere. På disse sprog var instruktionerne meget enkle, hvilket gjorde hardwareimplementering lettere, men hindrede oprettelsen af ​​komplekse programmer. FORTRAN , udviklet af John Backus ved International Business Machines (IBM) fra 1954, var det første store programmeringssprog, der fjernede de forhindringer, maskinkode frembyder ved oprettelsen af ​​komplekse programmer. FORTRAN var et kompileret sprog, der tillod navngivne variabler, komplekse udtryk, underprogrammer og mange andre funktioner, der nu er almindelige på tvingende sprog. De næste to årtier oplevede udviklingen af ​​mange andre store imperative programmeringssprog på højt niveau. I slutningen af ​​1950'erne og 1960'erne blev ALGOL udviklet for at gøre det lettere at udtrykke matematiske algoritmer og endda tjene som operativsystemets målsprog for nogle computere. MUMPS (1966) bragte det tvingende paradigme til en logisk ekstremhed ved slet ikke at have nogen udsagn, kun stole på kommandoer, selv i det omfang IF og ELSE -kommandoerne var uafhængige af hinanden, kun forbundet med en iboende variabel ved navn $ PRØVE. COBOL (1960) og BASIC (1964) var begge forsøg på at få programmeringssyntaks til at ligne mere engelsk. I 1970'erne blev Pascal udviklet af Niklaus Wirth , og C blev skabt af Dennis Ritchie, mens han arbejdede på Bell Laboratories . Wirth fortsatte med at designe Modula-2 og Oberon . Af hensyn til det amerikanske forsvarsministeriums behov begyndte Jean Ichbiah og et team hos Honeywell at designe Ada i 1978 efter et 4-årigt projekt for at definere kravene til sproget. Specifikationen blev første gang offentliggjort i 1983 med revisioner i 1995, 2005 og 2012.

1980'erne oplevede en hurtig vækst i interessen for objektorienteret programmering . Disse sprog var tvingende nødvendige i stilen, men tilføjede funktioner til at understøtte objekter . De sidste to årtier af det 20. århundrede oplevede udviklingen af ​​mange sådanne sprog. Smalltalk -80, oprindeligt udtænkt af Alan Kay i 1969, blev frigivet i 1980 af Xerox Palo Alto Research Center ( PARC ). Tegning fra begreber i et andet objektorienteret sprog- Simula (som anses for verdens første objektorienteret programmering , udviklet i 1960'erne) - Bjarne Stroustrup designet C ++ , et objektorienteret sprog baseret på C . Designet af C ++ begyndte i 1979, og den første implementering blev afsluttet i 1983. I slutningen af ​​1980'erne og 1990'erne var de bemærkelsesværdige imperative sprog, der trak på objektorienterede koncepter, Perl , udgivet af Larry Wall i 1987; Python , udgivet af Guido van Rossum i 1990; Visual Basic og Visual C ++ (som omfattede Microsoft Foundation Class Library (MFC) 2.0), udgivet af Microsoft i henholdsvis 1991 og 1993; PHP , udgivet af Rasmus Lerdorf i 1994; Java , af James Gosling ( Sun Microsystems ) i 1995, JavaScript , af Brendan Eich ( Netscape ) og Ruby , af Yukihiro "Matz" Matsumoto, begge udgivet i 1995. Microsofts .NET Framework (2002) er afgørende i sin kerne, som er dets vigtigste målsprog, VB.NET og C#, der kører på det; men Microsofts F# , et funktionelt sprog, kører også på det.


Se også

Noter

Referencer

  • Pratt, Terrence W. og Marvin V. Zelkowitz. Programmeringssprog: Design og implementering , 3. udg. Englewood Cliffs, NJ: Prentice Hall, 1996.
  • Sebesta, Robert W. Begreber programmeringssprog , 3. udg. Reading, Mass .: Addison-Wesley Publishing Company, 1996.
Oprindeligt baseret på artiklen 'Imperativ programmering' af Stan Seibert, fra Nupedia , licenseret under GNU Free Documentation License .