Programmering på funktionsniveau - Function-level programming

Inden for datalogi refererer programmering på funktionsniveau til en af ​​de to kontrasterende programmeringsparadigmer , som John Backus identificerede i sit arbejde med programmer som matematiske objekter, den anden er programmering på værdiniveau .

I sit Turing Award -foredrag fra 1977 fremlagde Backus, hvad han mente var behovet for at skifte til en anden filosofi inden for programmeringssprogsdesign:

Programmeringssprog ser ud til at være i problemer. Hvert efterfølgende sprog inkorporerer med lidt oprydning alle sine forgængeres funktioner plus et par flere. [...] Hvert nyt sprog hævder nye og fashionable funktioner ... men det er klart, at få sprog gør programmering tilstrækkeligt billigere eller mere pålidelig til at retfærdiggøre omkostningerne ved at producere og lære at bruge dem.

Han designet FP til at være det første programmeringssprog, der specifikt understøtter programmeringsstilen på funktionsniveau.

En funktion-niveau program er variabel-fri (jf punkt-fri programmering ), da programmet variabler , som er væsentlige i værdi niveau definitioner, er ikke nødvendige i funktion-niveau programmer.

Introduktion

I programmeringsstilen på funktionsniveau bygges et program direkte ud fra programmer, der gives i starten, ved at kombinere dem med programdannende operationer eller funktionaliteter . I modsætning til den værdiniveau-tilgang, der anvender de givne programmer på værdier for at danne en række værdier, der kulminerer med den ønskede resultatværdi, anvender funktionsniveau-tilgang programdannende operationer på de givne programmer for at danne en række programmer kulminerer i det ønskede resultatprogram.

Som et resultat inviterer funktionsniveauet til programmering til undersøgelse af programmernes rum under programdannende operationer for at udlede nyttige algebraiske egenskaber ved disse programdannende operationer. Funktionsniveau-tilgangen giver mulighed for at gøre programmets sæt til et matematisk rum ved at understrege de algebraiske egenskaber ved de programdannende operationer over programmernes rum .

En anden potentiel fordel ved visningen på funktionsniveau er muligheden for kun at bruge strenge funktioner og derved have bund-op-semantik , som er den enkleste slags af alle. Endnu en anden er eksistensen af ​​definitioner på funktionsniveau, der ikke er det løftede (det vil sige løftet fra et lavere værdiniveau til et højere funktionsniveau) billede af ethvert eksisterende værdiniveau: et (ofte snævert) funktionsniveau definitioner repræsenterer en mere kraftfuld programmeringsstil, der ikke er tilgængelig på værdiniveau.

Kontrast til funktionel programmering

Da Backus studerede og offentliggjorde sin programmeringsstil på funktionsniveau, blev hans budskab for det meste misforstået som understøttelse af de traditionelle funktionelle programmeringsstilsprog i stedet for sin egen FP og dens efterfølger FL .

Backus kalder funktionel programmering applikativ programmering ; hans programmering på funktionsniveau er en særlig, begrænset type.

En vigtig forskel fra funktionelle sprog er, at Backus sprog har følgende typer hierarki:

  • atomer
  • funktioner, der tager atomer til atomer
  • Funktioner i højere orden (som han kalder "funktionsformer"), som tager en eller to funktioner til at fungere

... og den eneste måde at generere nye funktioner på er at bruge en af ​​de funktionsformer, der er faste: du kan ikke bygge din egen funktionsform (i hvert fald ikke inden for FP; du kan inden for FFP ( Formal FP )).

Denne begrænsning betyder, at funktioner i FP er et modul (genereret af de indbyggede funktioner) over algebraen af ​​funktionelle former og dermed er algebraisk overførbare. For eksempel svarer det generelle spørgsmål om lighed mellem to funktioner til standsningsproblemet og kan ikke afgøres, men lighed mellem to funktioner i FP er bare lighed i algebraen og dermed (Backus forestiller sig) lettere.

Selv i dag fejlfortolker mange brugere af lambda-stil sprog Backus 'tilgang på funktionsniveau som en restriktiv variant af lambda-stilen, som er en de facto -værdiniveau-stil. Faktisk ville Backus ikke have været uenig i den 'restriktive' beskyldning: han hævdede, at det netop var på grund af sådanne begrænsninger, at der kunne opstå et velformet matematisk rum på en måde, der er analog med den måde, struktureret programmering begrænser programmering til en begrænset version af alle de kontrol-flow muligheder, der findes i almindelige, ubegrænsede ustrukturerede programmer .

FP's værdifrie stil er tæt forbundet med den ligeværdige logik i en kartesisk lukket kategori .

Eksempel på sprog

Det kanoniske programmeringssprog på funktionsniveau er FP . Andre omfatter FL , og J .

Se også

Referencer

eksterne links