Et programmeringssprog er en stabil måde at udtrykke en sammensat konstruktion på i et eller flere programmeringssprog . Et formsprog er et mønster til at løse et problem, skrive en algoritme eller datastruktur ved at kombinere indbyggede sprogelementer.
Et formsprog kan betragtes som det mest lave designmønster, der anvendes i skæringspunktet mellem design og kodning i et programmeringssprog. Et formsprog foreskriver en specifik måde at implementere visse detaljer og forholdet mellem dem ved hjælp af et bestemt sprogs midler. Sættet af formsprog afhænger af programmeringssproget, og det samme formsprog kan se anderledes ud på to forskellige sprog, eller det er måske ikke nødvendigt i et af dem [1] .
Et formsprog kan være en gengivelse i et sprog af elementer fra et semantisk anderledes sprog, som i dette sprog også kan være anvendelige, men som ikke er fremprovokeret af sproget selv (det vil sige, at de ikke er blandt dets formsprog). Fra dette perspektiv ses mange mønstre i objektorienteret design som idiomatiske reproduktioner af elementer af funktionelle sprog [2] [3] .
I sprog som BASIC er formsproget for at øge værdien af en variabel med én:
i = i + 1Forkortet version på C-lignende sprog:
i += 1 ; /* i = i + 1; */ ++ i ; /* samme resultat */ i ++ ; /* samme resultat */Pascal indeholder en lignende tildelingsprocedure:
i := i + 1 ; Inc ( i ) ; (*samme resultat*)På de fleste sprog ser udvekslingen af værdier mellem to variabler sådan ud:
temp = a ; a = b _ b = temp ;I Perl ser dette mere elegant ud:
( $a , $b ) = ( $b , $a );Pascal :
mens sandt begynder do_something ( ) ; ende ;I C-lignende sprog er der mange måder at organisere uendelige loops på, men det følgende eksempel viser dette på den mest indlysende måde:
for (;;) { gøre_noget (); }Perl understøtter både C-syntaks og andre varianter:
gøre_noget () mens ( 1 ); # forkortet uendelig loop while ( 1 ) { do_something () }; #lignende # Brug af en "nøgen blok" og redo-operatoren { do_something (); gentage ; }Ada :
sløjfe gør_noget ; ende -løkke ;Python :
mens det er sandt : gør_noget ()Mange sprog har en implementering af et associativt array , det såkaldte. hash tabel .
Associativ array-implementering i Perl :
mine %elements = kort { $_ => 1 } @elements ;Forfatteren til bogen Learn Ruby The Hard Way, Zed Shaw, bemærker, at holdningen til idiomer i udviklerfællesskaber tyder på, at brugen af idiomer bør kategoriseres som sædvaner , da når man skriver i naturligt sprog, som kræver klarhed i præsentationen, bør idiomer undgås [4] . Han giver følgende eksempel fra Ruby Styleguide [5] :
arr = [ 1 , 2 , 3 ] # dårligt for elem i arr do sætter elem ende #godt arr . hver { | element | sætter elem }Brugen af en for -løkke i henhold til den officielle Ruby -stil er forældet, og .each. Shaws holdning er, at elever i programmeringssprog ikke kun skal lære et bestemt programmeringssprogs formsprog, men også alternative måder at kode på - dette undgår indoktrinering og letter overgangen til andre sprog.