{"id":33886,"date":"2019-10-31T21:55:15","date_gmt":"2019-10-31T18:55:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/matryoshka-si-slojnaya-sistema-yazyka-programmy\/"},"modified":"2019-10-31T21:55:15","modified_gmt":"2019-10-31T18:55:15","slug":"matryoshka-si-slojnaya-sistema-yazyka-programmy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","title":{"rendered":"Matryoshka C. Lagdelt programmeringssprogssystem","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Lad os forestille os kemi uden Mendeleevs Periodesystem (1869). Hvor mange elementer skulle man holde styr p\u00e5, og i vilk\u00e5rlig r\u00e6kkef\u00f8lge\u2026 (Dengang \u2013 60.)<\/p>\n<p>Det er nok at t\u00e6nke p\u00e5 et eller flere programmeringssprog p\u00e5 \u00e9n gang. De samme f\u00f8lelser, det samme kreative kaos. <\/p>\n<p>Og nu kan vi opleve f\u00f8lelserne fra 1800-tallets kemikere, da de fik pr\u00e6senteret al deres viden, plus lidt ekstra, i et Periodesystem. <\/p>\n<p><img decoding=\"async\" alt=\"Matryoshka C. Lagdelt programmeringssprogssystem\" src=\"\/wp-content\/uploads\/2019\/05\/15ce1538e152aad5fcd683fe7fcd96c0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBogen \"Matryoshka C. Lagdelt programmeringssprog\" pr\u00e6senterer alle enheder i C-sproget som p\u00e5 en h\u00e5ndflade. Dette g\u00f8r det muligt at organisere dem, rette for\u00e6ldede oplysninger og endda pr\u00e6cisere selve begrebet program. <\/p>\n<p>I dag har oplysninger om programmering brug for systematisering mere end kemiske elementer for 150 \u00e5r siden. <\/p>\n<p>Den f\u00f8rste n\u00f8dvendighed er undervisning. Mendeleev begyndte at skabe sit system, da han stod over for sp\u00f8rgsm\u00e5let \u2013 hvilket element skulle han begynde med: O, H, N, He, Au\u2026 Det var lettere for ham \u2013 han underviste de bedste studerende fra St. Petersborgs universitet. Programmering undervises allerede i skolen og snart ogs\u00e5 i b\u00f8rnehaven. <\/p>\n<p>Den anden n\u00f8dvendighed er den videnskabelige tilgang. Takket v\u00e6re Periodesystemet blev nye elementer opdaget og oplysninger om gamle korrigeret. Det hjalp med at skabe atommodellen (1911). Og s\u00e5 videre. <\/p>\n<p>Den tredje n\u00f8dvendighed er pr\u00e6ciseringen af begrebet program. <\/p>\n<p>Moderne programmering er med et ben fastl\u00e5st i 1950'ernes USA. Dengang var programmerne enkle, mens maskinerne og maskinsprog var komplekse, s\u00e5 alt kredsede om maskiner og sprog. <\/p>\n<p>Nu er det omvendt: programmerne er komplekse og prim\u00e6re, sprogene er enkle og sekund\u00e6re. Dette kaldes en praktisk tilgang, som alle tilsyneladende kender til. Men studerende og udviklere bliver fortsat overbevist om, at alt er som f\u00f8r. <\/p>\n<p>Dette bringer os tilbage til den f\u00f8rste lektion af lektor Mendeleev. Hvad skal der siges til f\u00f8rste\u00e5rs-studerende? Hvor er sandheden? Det er sp\u00f8rgsm\u00e5let. <\/p>\n<p>Bogen \"Matryoshka C. Lagdelt programmeringssprog\" giver sit svar. Den henvender sig ikke kun til studerende, men ogs\u00e5 til erfarne programm\u00f8rer, da det netop er dem, der skal finde sandheden og forandre deres verdenssyn, alts\u00e5 os. <\/p>\n<p>Her f\u00f8lger et kort resum\u00e9 af bogen. <\/p>\n<h2>1. Introduktion<\/h2>\n<p>\nI 1969 blev programmeringssproget C skabt, som blev et grundl\u00e6ggende programmeringssprog og har v\u00e6ret det i 50 \u00e5r nu. Hvorfor er det s\u00e5dan? F\u00f8rst og fremmest fordi C er et <i>anvendeligt<\/i> sprog, der giver programmerne <i>et menneskeligt<\/i> udseende i stedet for <i>et maskinelt<\/i>. Denne pr\u00e6station blev videref\u00f8rt af sprog fra C-familien: C++, JavaScript, PHP, Java, C# og andre. For det andet er det et kort og smukt sprog. <\/p>\n<p>Dog blandes C-sproget ofte med maskinassembler, hvilket komplicerer og fordrejer dets opfattelse. Den anden ekstrem er p\u00e5l\u00e6ggelsen af en eller anden 'filosofi' til sproget: procedurem\u00e6ssig, objektorienteret, funktionel, kompil\u00e9rbar, fortolket, typet osv. Dette tilf\u00f8jer f\u00f8lelser, men hj\u00e6lper ikke med at beskrive sproget bedre. <\/p>\n<p>Sandheden ligger et sted imellem, idet C-sproget strengt sagt ligger lige midt imellem den filosofiske og maskinelle opfattelse. <\/p>\n<p>C-sproget er ikke selvst\u00e6ndigt, det adlyder almindelig skriftlig tale, samtidig med at det selv styrer assembler-sproget. Denne position beskrives af <i>Programmodel<\/i>, if\u00f8lge hvilken programmet er opdelt i tre underordnede dimensioner: taler, kode og kommando. C-sproget svarer til den anden, den kodem\u00e6ssige dimension. <\/p>\n<p>N\u00e5r man har defineret sprogets plads i programmet, kan man systematisere oplysningerne om det, hvilket g\u00f8r <i>Den lagdelte systemsprog<\/i>, der pr\u00e6senterer C-sproget i \u00e5nden af Mendelsystemsdemokratiet \u2013 p\u00e5 \u00e9n side. <\/p>\n<p>Systemet er bygget med hensyn til <i>f\u00e6lles anvendelsessprog<\/i>, der udmunder i deres talte underordnede. Et s\u00e6t enheder fra Matryoshka C g\u00f8r det muligt at beskrive og sammenligne forskellige sprog ved at skabe en r\u00e6kke Matryoshka: C++, PHP, JavaScript, C#, MySQL, Python osv. Det er passende og korrekt, at forskellige sprog beskrives med enheder fra grundl\u00e6ggende sprog. <\/p>\n<h2>2. KAPITEL 1. Programmodel. Forst\u00e5eligt C<\/h2>\n<p>\nI det f\u00f8rste kapitel pr\u00e6senteres <i>programmodellen<\/i>, der afspejler den anvendte tilgang. If\u00f8lge denne har programmet tre \u00e5benlyse p\u00e5 hinanden f\u00f8lgende dimensioner: <\/p>\n<ol>\n<li>tale \u2013 direkte tale fra programm\u00f8ren, der l\u00f8ser opgaven, <\/li>\n<li>kode \u2013 kodning af l\u00f8sningen i matematisk form p\u00e5 C-sprog (eller et andet)<\/li>\n<li>og kommando \u2013 de direkte maskinkommandoer. <\/li>\n<\/ol>\n<p>\nProgrammodellen forklarer, hvorfor C er et simpelt og forst\u00e5eligt sprog. C er bygget i overensstemmelse med vores velkendte menneskelige tale. <\/p>\n<p>Den f\u00f8rste type program er direkte tale fra programm\u00f8ren. Talen svarer til menneskelig t\u00e6nkning. Med hj\u00e6lp fra tal skriver begyndere programmer - f\u00f8rst p\u00e5 russisk, derefter gradvist overs\u00e6tter handlingerne til kodningssprog. Og det er efter denne model, at C-sproget blev skabt. <\/p>\n<p>Programm\u00f8rens r\u00e6sonnering, udtrykt i tale, omdannes til en numerisk kodetype. Denne transformation b\u00f8r kaldes <i>refleksion<\/i>, da tale og kode har samme natur (refleksion - f\u00f8dsel - oprindelse). Dette er ganske \u00e5benlyst, n\u00e5r man sammenligner den talte (til venstre) og kodede (til h\u00f8jre) type program. <\/p>\n<p><img decoding=\"async\" alt=\"Matryoshka C. Lagdelt programmeringssprogssystem\" src=\"\/wp-content\/uploads\/2019\/05\/e88d13730660ebac1d661bb2d34a33d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er interessant, at refleksionen sker meget enkelt - med kun to typer udtryk. <\/p>\n<p>Dog indeholder den moderne beskrivelse af C-sproget (fra 1978) ikke en tilstr\u00e6kkelig liste af betegnelser, hverken til beskrivelsen af sproget generelt eller til refleksionsopgaven i s\u00e6rdeleshed. Derfor er vi tvunget til at v\u00e6re kreative og indf\u00f8re disse betegnelser.<\/p>\n<p>Valget af ord skal v\u00e6re pr\u00e6cist og klart. Til dette kr\u00e6ves en s\u00e6rlig tilgang, der kort kan udtrykkes som - strengt brug af modersm\u00e5let. For engl\u00e6ndere ville det v\u00e6re engelsk, men vi er ikke engl\u00e6ndere. S\u00e5 vi bruger det, vi har, og vil bestr\u00e6be os p\u00e5 at tale russisk. <\/p>\n<p>Refleksion udf\u00f8res af to typer udtryk: <\/p>\n<ol>\n<li><i>beregning <\/i>(B) - afspejler \u00e6ndringen af objektets egenskaber. Objektets egenskab udtrykkes med et tal, og dermed er handlingen over egenskaben - en handling over tallet - en operation. <\/li>\n<li><i>underordning <\/i>(U) - afspejler \u00e6ndringen af r\u00e6kkef\u00f8lgen af handlinger. Forbilledet af U er en komplekss\u00e6tning, derfor begynder de fleste former for U med underordnede konjunktioner som \u201ehvis\u201c, \u201eellers\u201c, \u201emens\u201c, \u201etil\u201c. Andre former for U supplerer dem. <\/li>\n<\/ol>\n<p>\nForresten, kan du tro, at der i beskrivelsen af C-sproget ikke er noget navn for beregningsudtryk - de kaldes blot \u201eudtryk\u201c? Efter dette burde det ikke v\u00e6re overraskende, at der ikke er noget navn og samling for underordningstypen, eller for den sags skyld en generel mangel p\u00e5 navne, definitioner og generaliseringer. Alt dette skyldes, at den ber\u00f8mte K\/R (\"C-Sproget\", Kernighan\/Ritchie, 1978) ikke er en beskrivelse, men en brugervejledning til sproget. <\/p>\n<p>Men man kunne alligevel godt \u00f8nske sig en beskrivelse af sproget. Derfor tilbyder vi <i>Den lagdelte systemsprog<\/i>. <\/p>\n<h2>3. KAPITEL 2. Lagdelt system. Kort C<\/h2>\n<p>\nEnhver beskrivelse skal v\u00e6re pr\u00e6cis og ekstremt kortfattet. I tilf\u00e6lde af programmeringssprog er en direkte beskrivelse besv\u00e6rlig. <\/p>\n<p>Her har vi et program. Det best\u00e5r af moduler. Modulerne best\u00e5r af underprogrammer og samlinger (struktur). Underprogrammerne best\u00e5r af enkelte udtryk: erkl\u00e6ringer, beregninger, underordnede. Der findes ti slags underordnede. Underordnede forbinder underniveauer og underprogrammer. Der er ogs\u00e5 flere erkl\u00e6ringer. Desuden inkluderes erkl\u00e6ringer ikke kun i underprogrammer og underniveauer, men ogs\u00e5 i moduler og samlinger. Og de fleste udtryk best\u00e5r af ord, som er s\u00e5 sv\u00e6re at beskrive, at de normalt bare gives i to lister - kildeord og afledte ord, som man skal g\u00f8re sig bekendt med i l\u00f8bet af hele studiet og anvendelsen af sproget. Lad os tilf\u00f8je kommaer og en r\u00e6kke andre udtryk. <\/p>\n<p>I denne fremstilling er det ikke nemt at forst\u00e5, hvem der st\u00e5r p\u00e5 hvem. <\/p>\n<p>En direkte hierarkisk tilgang til beskrivelsen af sproget vil v\u00e6re alt for kompleks. At finde alternative veje f\u00f8rer til beskrivelsen af sproget baseret p\u00e5 dets talende natur og kommandodel. P\u00e5 denne m\u00e5de blev det Lagdelte system skabt, hvilket delvist stemmer overens med Det Periodiske System af Mendelejev, som ogs\u00e5 er <i>lagdelt<\/i>. Som det blev tydeliggjort 42 \u00e5r efter dets udgivelse (1869), er periodisiteten af systemet relateret til elektroniske <i>lag <\/i>(1911, Bohr-Rutherford modellen af atomet). Desuden har det Lagdelte system og Det Periodiske System til f\u00e6lles, at alle enheder placeres i en tabel p\u00e5 \u00e9n side. <\/p>\n<p>Beskrivelsen af sprogets enheder bliver kortfattet - kun 10 sl\u00e6gter af udtryk og 8 sl\u00e6gter af andre enheder, samt indholdsm\u00e6ssigt og visuelt. Selvom det kan v\u00e6re uvant ved f\u00f8rste bekendtskab. <\/p>\n<p>Sprogets enheder er opdelt i 6 niveauer:<\/p>\n<ol>\n<li>ordener - r\u00e6kker i tabellen<\/li>\n<li>afdelinger - s\u00e6rlige grupper af sl\u00e6gter (dele af den f\u00f8rste r\u00e6kke)<\/li>\n<li>sl\u00e6gter - celler (hovedniveauet for opdeling)<\/li>\n<li>overgrupper - adskillelser af typer (sj\u00e6ldent niveau)<\/li>\n<li>typer - formler for enheder i bunden af cellen eller separat<\/li>\n<li>pr\u00f8ver - selve enhederne (kun for ord)<\/li>\n<\/ol>\n<p>\nPr\u00f8ver af ord beskrives af <i>ordbogen<\/i> - et separat subsystem sammensat af de samme seks niveauer. <\/p>\n<p>Den talende komponent i C-sproget er ganske \u00e5benlys, selvom den stadig fortjener en beskrivelse. Men den kommandodel af sproget er netop relateret til styringen af kompileringen, hvorved den tredje type program skabes - den kommandodede. Her n\u00e6rmer vi os den mest fascinerende side af C-sproget - sk\u00f8nheden. <\/p>\n<h2>4. N\u00c6STE KAPITLER. Smuk C<\/h2>\n<p>\nC-sproget danner grundlaget for moderne programmering. Hvorfor? For det f\u00f8rste, p\u00e5 grund af dets h\u00f8je overensstemmelse med sproget. For det andet, fordi det elegant omg\u00e5r begr\u00e6nsningerne for maskinbehandling af tal.<\/p>\n<p>Hvad foreslog C egentlig? Type og lag. <\/p>\n<p>Ordet \"type\" er en overs\u00e6ttelse af det engelske ord \"type\", som stammer fra det gr\u00e6ske \"prototype\" \u2014 \"forbillede\". P\u00e5 russisk formidler ordet \"typ\" ikke fuldt ud essensen af konceptet, og det blandes ogs\u00e5 med den funktionelle betydning \"art\". <\/p>\n<p>Oprindeligt l\u00f8ste type rent maskinelle opgaver for beregning, men blev derefter en startbane for udviklingen af objektorienterede sprog. <\/p>\n<p>Lag l\u00f8ste straks flere opgaver \u2014 b\u00e5de maskinelle og anvendelsesm\u00e6ssige. Derfor vil unders\u00f8gelsen begynde med den enkle type og g\u00e5 videre til det fleropgave-lag. <\/p>\n<p>En af de ubehagelige aspekter ved historisk programmering er, at de fleste begreber, inklusive de grundl\u00e6ggende, pr\u00e6senteres uden definitioner. \"Programmeringssproget (navn p\u00e5 floder) har hel- og flydende taltyper...\" - og s\u00e5 videre. Hvad betyder \"type\" (type) \u2014 det er ikke n\u00f8dvendigt at definere, fordi forfatterne selv ikke helt forst\u00e5r det og vil d\u00e6kke det \"for klarhedens skyld\". Hvis de bliver presset, vil de give en utydelig og ubrugelig definition. Det hj\u00e6lper meget at gemme sig bag udenlandske ord: for russiske forfattere \u2014 bag de engelske (type), for engl\u00e6ndere \u2014 bag de franske (subroutine), gr\u00e6ske (polymorfi), latinske (enkapsulering) eller deres kombinationer (polymorfi ad-hoc). <\/p>\n<p>Men det er ikke vores sk\u00e6bne. Vores valg \u2014 definitioner med h\u00e6vet ansigt i rent russisk sprog. <\/p>\n<h3>Billede<\/h3>\n<p>\n<i>Billede<\/i> \u2014 det er et forbilledlig navn for st\u00f8rrelsen, der definerer 1) de egne egenskaber ved st\u00f8rrelsen og 2) valg af operationer til st\u00f8rrelsen. <\/p>\n<p>Ordet \"type\" (art) svarer til den f\u00f8rste del af definitionen: \"egne egenskaber ved st\u00f8rrelsen\". Men hovedsigtet med type er i den anden del: \"valg af operationer til st\u00f8rrelserne\".<\/p>\n<p>Afs\u00e6tningspunktet for introduktionen af type i C-sproget er almindelig beregning, for eksempel additionsoperationen. <\/p>\n<p><i>Papir<\/i> matematik, der er skrevet i h\u00e5nden eller trykt, skelner ikke stort mellem typer af tal og antager dem normalt som reelle. Derfor er deres behandlingsoperationer entydige.<\/p>\n<p><i>Maskinelle<\/i> Matematikken adskiller strengt mellem hele og decimaltal. Forskellige typer tal opbevares og behandles forskelligt i hukommelsen med forskellige kommandos\u00e6t fra processoren. For eksempel er kommandoerne for addition af hele og decimaltal to forskellige kommandoer, der svarer til to forskellige kerner i processoren. Derimod findes der ingen kommando for at l\u00e6gge en helt og et decimaltal sammen. <\/p>\n<p><i>Anvendt<\/i> matematik, alts\u00e5 C-sprog, adskiller typer af tal, men forener operationerne: addition for hele og\/eller decimaltal skrives med \u00e9t tegn for operationen.<\/p>\n<p>En klar definition af begrebet \"v\u00e6rdien\" g\u00f8r det muligt at tale pr\u00e6cist om to andre begreber: <i>v\u00e6rdi <\/i>og <i>operation<\/i>. <\/p>\n<h3>V\u00e6rdi og operation<\/h3>\n<p>\n<i>V\u00e6rdi <\/i> \u2013 det tal der behandles.<\/p>\n<p><i>Operation<\/i> \u2013 bearbejdning af v\u00e6rdierne af de oprindelige st\u00f8rrelser (argumenter) for at opn\u00e5 det endelige tal (resultatet). <\/p>\n<p>V\u00e6rdi og operation er indbyrdes forbundet. Hver operation er en v\u00e6rdi, da den har et numerisk resultat. Og hver v\u00e6rdi er resultatet af overf\u00f8rslen af v\u00e6rdien til CPU-registeret\/fra CPU'en, dvs. \u2013 resultatet af operationen. P\u00e5 trods af denne sammenh\u00e6ng er det dog vigtigt, at de kan beskrives separat, selvom det kan medf\u00f8re, at det samme ord gentages i forskellige sektioner af ordbogen, hvilket ogs\u00e5 sker i ma3. <\/p>\n<p>Den maskinelle tilgang opdelte alle tal, der blev brugt af programm\u00f8ren, i <i>kommandoer <\/i>og <i>data<\/i>. Tidligere var begge kun tal, for eksempel blev kommandoer skrevet som numeriske koder. Men i anvendte sprog er kommandoer ikke l\u00e6ngere tal, men <i>ord <\/i>og <i>handlingstegn<\/i>. Kun \"data\" forblev tal, men det er absurd at kalde dem s\u00e5dan, fordi n\u00e5r man g\u00e5r fra en maskinelle til en matematisk synsvinkel, er tal st\u00f8rrelser, der opdeles i oprindelige (<i>data<\/i>) og endelige (<i>efterstr\u00e6bte<\/i>). \"Ukendt data\" ville lyde t\u00e5beligt. <\/p>\n<p>Kommandoer er ogs\u00e5 opdelt i to typer handlinger: matematiske og tjenestekommandoer. De matematiske handlinger er operationer. Vi vil se n\u00e6rmere p\u00e5 de tjenestelige senere. <\/p>\n<p>I C-sprog bliver de vante papirbaserede og maskinelle entydige, eller enkeltruelle, matematiske operationer stort set til multipla. <\/p>\n<p>Multiple operationer \u2013 flere ensartede operationer med forskellige udtryk for argumenter og forskellige, men n\u00e6rt besl\u00e6gtede, handlinger. <\/p>\n<p>Hele argumenter matcher en hel operation, mens decimale matcher en decimaltal. Denne forskel er is\u00e6r tydelig ved division, n\u00e5r udtrykket 1\/2 giver resultatet 0 og ikke 0,5. Denne skrivem\u00e5de f\u00f8lger ikke reglerne for papir-matematik, men C-sproget str\u00e6ber heller ikke efter at overholde dem (modsat Fortran) \u2014 det spiller efter sine <i>applikations<\/i> regler.<\/p>\n<p>I tilf\u00e6lde af blanding af hele og decimale tal aktiveres den eneste korrekte <i>konvertering af argumentv\u00e6rdier<\/i> \u2014 en udv\u00e6lgende omdannelse af v\u00e6rdien fra \u00e9n form til en anden. Faktisk, n\u00e5r der adderes et helt og et decimaltal, bliver resultatet \u2014 et decimaltal, s\u00e5 formen for operationen <i>tilpasser <\/i>operationen til at konvertere det hele argument til en decimaltalsv\u00e6rdi. <\/p>\n<p>En r\u00e6kke operationer forbliver ikke <i>multiple<\/i>, og <i>enkelt<\/i>. S\u00e5danne operationer er kun defineret for \u00e9n type argumenter: rest af division \u2014 hele argumenter, og bitwise operationer \u2014 naturlige hele tal. Ma3 angiver pluraliteten af operationer med tegn (#^) sammen med de former, for hvilke operationen er defineret. Dette er en vigtig, men tidligere overset egenskab ved hver operation. <\/p>\n<p>Alle funktioner er vilk\u00e5rlige enkeltoperationer. Undtagelsen er operat\u00f8rer \u2014 <i>parentesfri funktioner<\/i>, indlejret i sproget (oprindelige operationer). <\/p>\n<h3>Bistand<\/h3>\n<p>\n<i>Bistand <\/i> er en medf\u00f8lgende handling til operationen.<\/p>\n<p>Hvis man ser p\u00e5 operationen som den prim\u00e6re handling, kan man identificere to hj\u00e6lpende handlinger, der underst\u00f8tter operationen og adskiller sig fra den. Det er 1) kontrol af variablen og 2) underordning. Denne handling kaldes <i>bistand<\/i>.<\/p>\n<p>Her skal man pause og n\u00e6vne de russiske overs\u00e6ttelser af l\u00e6reb\u00f8ger om programmering. I teksten K\/R blev der introduceret et nyt ord til at beskrive handlinger, <i>statement <\/i>(udtryk), som fors\u00f8gte at adskille begreberne for maskinkommandoer til forskellige handlinger: 1) operation, 2) erkl\u00e6ring og 3) underordning (ben\u00e6vnt 'kontrolstrukturer'). Dette fors\u00f8g blev begravet af de russiske overs\u00e6ttere, der erstattede 'udtryk' med ordet 'operat\u00f8r', hvilket:<\/p>\n<ol>\n<li>blev synonymt med det maskinelle ord 'kommando', <\/li>\n<li>blev synonymt med udtrykket 'handlings tegn',<\/li>\n<li>og fik ogs\u00e5 et ubegribelig antal ekstra betydninger. Det vil sige, det blev til en form for det engelske artikels 'uhhh...'. <\/li>\n<\/ol>\n<p>\nLad os overveje de medf\u00f8lgende handlinger, eller <i>bistand<\/i>.<\/p>\n<h4><i>Kontrol af variabel<\/i> <\/h4>\n<p>\n<i>Kontrol af variabel<\/i> (UP) \u2014 oprettelse\/fjernelse af variabel celler. <br \/>\nUP finder sted implicit ved erkl\u00e6ringen af en variabel, som allerede skrives af en anden \u00e5rsag \u2014 for at angive en st\u00f8rrelse. Kun \u00e9n slags <i>yderligere variabler<\/i> styrer eksplicit ved hj\u00e6lp af funktioner som malloc() og free(). <\/p>\n<p>Det skal bem\u00e6rkes, at implicitte handlinger er mere praktiske at skrive, da det ikke kr\u00e6ver noget at skrive, men er sv\u00e6rere at forst\u00e5 \u2014 de er sv\u00e6rere at tage h\u00f8jde for og fortolke. <\/p>\n<h4><i>Underordning<\/i><\/h4>\n<p>\n<i>Underordning <\/i> \u2014 tilslutning\/frakobling af lagdelte sektioner. <\/p>\n<p>C-sproget tilb\u00f8d en anden, mere anvendelig m\u00e5de at styre r\u00e6kkef\u00f8lgen af handlinger p\u00e5 \u2014 underordning. Det afspejler og udvikler en kompleks underordnet s\u00e6tning med en klar opdeling mellem hoveddelen (underordningss\u00e6tningen) og den underordnede del (sektioner af niveauet\/underrutine). <\/p>\n<p>B\u00e5de erkl\u00e6ringen og underordningen er helt bygget op p\u00e5 begrebet <i>lag<\/i>. <\/p>\n<h3>Lag<\/h3>\n<p>\n<i>Lag <\/i> \u2014 er et begr\u00e6nset ensartet udvalg af udtryk. <\/p>\n<p>Laget p\u00e5tager sig \u00e5benlyst og implicit mange opgaver samtidig: <\/p>\n<ol>\n<li>sortering af programmet,<\/li>\n<li>begr\u00e6nsning af synlighed af navne (implicite),<\/li>\n<li>styring af variabler (hukommelsesceller) (implicite),<\/li>\n<li>bestemmelse af underordnede sektioner til underordning,<\/li>\n<li>bestemmelse af funktioner og samlinger og andre. <\/li>\n<\/ol>\n<p>\nI maskinsprog fandtes der ikke noget begreb for lag, derfor dukkede det heller ikke op i C\/R, og hvis noget ikke eksisterede der, ville det v\u00e6re en d\u00e5rskab og fri t\u00e6nkning at indf\u00f8re det i efterf\u00f8lgende b\u00f8ger. Derfor dukkede begrebet lag slet ikke op, selvom det er yderst nyttigt og ganske \u00e5benlyst. <\/p>\n<p>Uden lag er det umuligt at kort og klart forklare mange handlinger og regler i programmet. For eksempel, hvorfor det s\u00e5 simpelt som tre \u00f8rer goto er d\u00e5rligt, mens den komplekse while er god. Man kan kun magtesl\u00f8st klage, som Dijkstra gjorde (\u2018programmererens kvalifikation er en funktion, som omvendt afh\u00e6nger af hyppigheden af goto-er i deres programmer\u2019. Kort sagt, kun f\u00e5rehyrder bruger goto. Begrundelsesniveauet \u2014 Gud.) Sandt, det er ikke s\u00e5 skr\u00e6mmende, hvis dine b\u00f8ger slet ikke skal forklare noget, men som vi allerede har sagt, er det ikke vores sk\u00e6bne. <\/p>\n<p>Forresten kan man antage, at Den Ritchie efterlod goto som en n\u00f8gle til at finde en ubestemt r\u00e6sonnering, fordi der ikke var nogen n\u00f8dvendighed eller sk\u00f8nhed i udtrykket goto. Derimod var der et behov for en simpel og forst\u00e5elig forklaring af de nye principper for sproget, som Ritchie ikke \u00f8nskede at give, og som netop er baseret p\u00e5 begrebet <i>lag<\/i>. <\/p>\n<h3>Afvigelse<\/h3>\n<p>\n<i>Afvigelse <\/i> \u2014 \u00e6ndring af de normale egenskaber ved det nye navn. <\/p>\n<p>Den vigtigste afvigelse er netop relateret til lagene i programmet og beskrives med \u00e9t ord \"static\", som har forskellige betydninger i hver type lag. <\/p>\n<h2>5. SIDSTE KAPITEL. F\u00e6llesskabet af anvendte sprog<\/h2>\n<p>\nAnvendte sprog \u2014 det er <i>billedlige <\/i>sprog (som har et billede, \"typede\"). De er baseret p\u00e5 den eksplicitte eller implicitte brug af billedet. Igen her opst\u00e5r der et mods\u00e6tningsforhold: det eksplicitte billede er mere forst\u00e5eligt, men mindre praktisk, og omvendt. <\/p>\n<p><img decoding=\"async\" alt=\"Matryoshka C. Lagdelt programmeringssprogssystem\" src=\"\/wp-content\/uploads\/2019\/05\/7d0fd49d678736a023f471b54847be7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(Tabelopstillingen er ikke tilg\u00e6ngelig endnu, derfor gives tabellen som et billede.)<\/i><\/p>\n<p>Efter C er udviklingen af anvendte sprog g\u00e5et i retning af \u00f8get billedlighed. Den mest vigtige for forst\u00e5elsen af h\u00f8j billedlighed er den direkte efterkommer af C \u2014 sprog C++. Det udvikler ideen om vilk\u00e5rlig tilknytning af operationer til v\u00e6rdier og realiserer den baseret p\u00e5 det C-lignende udtryk tilknytning, som f\u00e5r det nye navn \u2014 objekt. Dog er C++ ikke s\u00e5 kortfattet og udtryksfuld som C, p\u00e5 grund af overbelastningen af nye typer tilknytninger og de tilknyttede regler. For ordens skyld vil vi tale om \"overbelastning\". <\/p>\n<h3>Overbelastning og polymorfi <\/h3>\n<p>\nOrdet \"overbelastning\" (overload) \u2014 er et for\u00e6ldet begreb fra maskinmetoden, som beskriver skabelsen <i>af flere operationer<\/i>. <\/p>\n<p>Maskinprogramm\u00f8rer <i>mangfoldighed <\/i>af operationer kunne helt sikkert irritere: \"Hvad betyder dette tegn (+): addition af heltal, addition af br\u00f8ker eller overhovedet skift?! I vores tid skrev man ikke s\u00e5dan!\" Herfra fremkommer den negative nuance af det valgte ord (\"overbelastning\", \"tr\u00e6thed\"). For den anvendte programm\u00f8r er flere operationer hj\u00f8rnestenen, hovedpr\u00e6stationen og arven fra C-sprog, s\u00e5 naturlige, at de ofte ikke bliver bevidstgjort. <\/p>\n<p>I sproget C++ <i>mangfoldighed<\/i> spredte sig ikke kun til grundl\u00e6ggende operationer, men ogs\u00e5 til funktioner - b\u00e5de som individuelle og som grupperet i klasser - metoder. Sammen med de mange metoder kom muligheden for at overskrive dem i udvidede klasser, hvilket blev vagt kaldt 'polymorfi'. Kombinationen af polymorfi og overbelastning gav en eksplosiv blanding, der blev opdelt i to slags polymorfi: '\u00e6gte' og 'ad-hoc'. At forst\u00e5 dette er kun muligt p\u00e5 trods af de tildelte betegnelser. Udenlandske navne baner vejen til ad. <\/p>\n<p>Meddelelsesformen 'overbelastning' er bedre udtrykt med ordet <i>overdeclaration <\/i> \u2014 en tilf\u00f8jelse af en deklaration af den samme funktion med argumenter af en anden type. <\/p>\n<p>Meddelelsesformen 'polymorfi' er bedre ben\u00e6vnt med ordet <i>gen-deklaration<\/i> \u2014 en overlapping af en deklaration i et nyt udvidende lag af den samme funktion med argumenter af samme type. <\/p>\n<p>S\u00e5 vil det v\u00e6re let at forst\u00e5, at metoder med samme navn men forskellige typer (argumenter) \u2014 <i>overdeklares<\/i>, men af samme type \u2014 <i>gen-deklare<\/i>. <\/p>\n<p>Danske ord l\u00f8ser. <\/p>\n<h3>Startoperation<\/h3>\n<p>\nOvervejelsen af begreberne i h\u00f8jniveau-sprog bekr\u00e6fter vigtigheden af klart at definere grundl\u00e6ggende begreber. Med korrekt beskreven C vil studiet af h\u00f8jniveau-sprog v\u00e6re let og behageligt. <\/p>\n<p>Dette er is\u00e6r vigtigt for <i>implicit h\u00f8jniveau-sprog<\/i> (PHP, JavaScript). For dem bliver betydningen af objekter (sammensatte typer) endnu vigtigere end i C++, men selve begrebet type bliver implicit og sv\u00e6rt at fange. Set fra et brugervenlighedsperspektiv er de blevet lettere, men fra et forst\u00e5elsesperspektiv \u2013 sv\u00e6rere. <\/p>\n<p>Derfor b\u00f8r man begynde at studere programmeringssprog med C og bev\u00e6ge sig derfra videre i den r\u00e6kkef\u00f8lge, sprog fra C-familien blev introduceret. <\/p>\n<p>Det samme g\u00e6lder beskrivelsen af sprog. Forskellige sprog har en overensstemmende eller mindre m\u00e6ngde af typer end C. Antallet af typer og former kan variere i begge retninger: C++ har flere typer end C, mens JavaScript har f\u00e6rre. <\/p>\n<p>S\u00e6rligt v\u00e6rd at n\u00e6vne er MySQL-sproget. Tilsyneladende \u2014 intet f\u00e6lles, men det kan beskrives perfekt med Matryoshka, og bekendtskab med det bliver hurtigere og lettere. Hvilket er vigtigt, givet dets betydning for weben - hovedvejen for moderne programmering. Og hvor MySQL er, er der ogs\u00e5 andre SQL. Og mange Fortran-Pascal-Python ogs\u00e5 kan beskrives med Matryoshka, n\u00e5r tiden er til det. <\/p>\n<p>S\u00e5 vi st\u00e5r over for store opgaver \u2013 anvendelsen af C-sprog og en samlet beskrivelse af de efterf\u00f8lgende sprog. \"Vores m\u00e5l er klare, opgaverne er defineret. Lad os komme i gang, kammerater! (Voldsomme, langvarige bifald, der overg\u00e5r til en st\u00e5ende ovation. Alle rejser sig.)\" <\/p>\n<p>Dine meninger vil blive lyttet til med stor opm\u00e6rksomhed, og din hj\u00e6lp til at skabe hjemmesiden for matrjoskaer vil blive modtaget med stor taknemmelighed. Mere detaljerede oplysninger om bogen findes p\u00e5 hjemmesiden, der er listigt gemt i C-matrjoskaen.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452328\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869). \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043f\u0440\u0438\u0447\u0451\u043c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435\u2026 (\u0422\u043e\u0433\u0434\u0430 \u2014 60.) \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0440\u0430\u0437\u0443 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0435 \u0436\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0430, \u0442\u043e\u0442 \u0436\u0435 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u0430 \u0445\u0438\u043c\u0438\u043a\u043e\u0432 XIX \u0432\u0435\u043a\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0432\u0441\u0435 \u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25550,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-33886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u0430\u0442\u0440\u0451\u0448\u043a\u0430 \u0421\u0438. \u0421\u043b\u043e\u0439\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:55:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47C-matrjoska. Lagdelt system i programmeringssproget | ProHoster","description":"Lad os pr\u00f8ve at forestille os kemi uden det Periodiske System af Mendelejev (1869).","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u0430\u0442\u0440\u0451\u0448\u043a\u0430 \u0421\u0438. \u0421\u043b\u043e\u0439\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b | ProHoster","og:description":"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:55:15+00:00","article:modified_time":"2019-10-31T18:55:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33886","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 17:06:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:31:23","updated":"2026-01-21 17:06:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/33886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=33886"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/33886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/25550"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=33886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=33886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=33886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}