När skript på otypade språk växer till stora program, blir det svårt att underhålla dem. Brist på typer i typiska skriptspråk innebär att programmerare måste (åter)upptäckta kritiska delar av designinformation varje gång de vill ändra ett program. Denna analys steg både saktar ner underhållsprocessen och kan även införa misstag på grund av överträdelse av oupptäckta varianter. I detta dokument presenteras Typed Scheme, en explicit typad utökning av ett otypat skriptspråk. Dess typsystem är baserat på det nya begreppet händelseskrivning, som vi formaliserar och mekaniskt bevisar ljud. Genomförandet av Typed Scheme lånar dessutom element från en rad olika tillvägagångssätt, inklusive rekursiva typer, verkliga föreningar och subtyping, plus polymorfism kombinerat med en modicum av lokala slutsatser. De första experimenten med genomförandet tyder på att Typed Scheme naturligt tillgodoser programmeringsstilen för det underliggande skriptspråket, åtminstone för de första tusen raderna av porterad kod.  Kategorier och ämnesdeskriptorer Nyligen, under rubriken "skriptspråk", har en mängd nya språk blivit populära, och till och med genomträngande, i Weband system-relaterade fält. På grund av sin popularitet skapar programmerare ofta skript som sedan växer till stora applikationer. De flesta skriptspråk är otypade och har en flexibel semantik som gör programmen koncisa. Många programmerare tycker att dessa attribut är tilltalande och använder skriptspråk av dessa skäl. Programmerare börjar dock också märka att otypade skript är svåra att underhålla på lång sikt. Bristen på typer innebär en förlust av designinformation som programmerare måste återvinna varje gång de vill ändra befintlig kod. Både Perl-gemenskapen (Tang 2007) och JavaScript-gemenskapen (ECMA International 2007) erkänner implicit detta problem med tillstånd att göra digitala eller hårda kopior av hela eller delar av detta arbete för personligt eller klassrum användning beviljas utan avgift, förutsatt att kopior inte görs eller distribueras för vinst eller kommersiella fördelar och att kopior bär detta meddelande och den fullständiga hänvisning på första sidan. För att kopiera på annat sätt, för att återpublicera, för att posta på servrar eller för att omfördela till listor, krävs tidigare specifik behörighet och/eller avgift. POPL'08, 7-12 januari 2008 Under tiden står industrin inför problemet att överföra befintliga tillämpningssystem från otypade skriptspråk till den typade världen. Utifrån vår egen erfarenhet har vi föreslagit en teoretisk modell för denna omvandlingsprocess och visat att partiella omvandlingar kan dra nytta av typsäkerhetsegenskaper i önskad utsträckning (Tobin-Hochstadt och Felleisen 2006). Det viktigaste antagandet bakom vårt arbete är förekomsten av en explicit maskinskriven version av skriptspråket, med samma semantik som originalspråket, så att värden fritt kan flöda fram och tillbaka mellan maskinskrivna och otypade moduler. Med andra ord, vi föreställer oss att programmerare helt enkelt kan lägga till typanteckningar till en modul och därmed införa en viss mängd typ-säkerhet i programmet. Vid första anblicken verkar ett sådant antagande orealistiskt. Programmerare i otypade språk blandar ofta löst och matchar resonemang från olika typer av discipliner när de skriver skript. Ännu värre, en kontroll av kod tyder på att de också inkluderar flödesorienterade resonemang, särskilja typer för variabler beroende på tidigare operationer. Kort sagt, otypade skriptspråk tillåter program som verkar svåra att typkolla med befintliga typsystem. För att visa genomförbarheten av vårt tillvägagångssätt har vi utformat och genomfört Typed Scheme, en explicit typad version av PLT Scheme. Vi har valt PLT Scheme av två skäl. Å ena sidan används PLT Scheme som ett skriptspråk av ett stort antal användare. Det kommer också med en stor mängd kod, med bidrag som sträcker sig från skript till bibliotek till stora operativsystem som program. Å andra sidan kommer språket med makron, en kraftfull förlängningsmekanism (Flatt 2002). Makros sätter en betydande begränsning på utformningen och genomförandet av Typed Scheme, eftersom stödjande makron kräver typkontroll av ett språk med en användardefinierad uppsättning syntaktiska former. Vi kan övervinna denna svårighet genom att integrera typkontrollen med makroexpandern. Detta tillvägagångssätt underlättar i själva verket i hög grad integrationen av maskinskrivna och otypade moduler. Som föreställt (Tobin-Hochstadt och Felleisen 2006), denna integration gör det enkelt att förvandla delar av en multi-modul program till en delvis skrivbar men ändå körbara program. Här rapporterar vi om det nya typsystemet, som kombinerar idén om händelseskrivning med subtypning, rekursiva typer, polymorfism och en modicum av inferens. Vi presenterar först en formell modell av de viktigaste aspekterna av händelseskrivning och bevisar att det är typ-ljud. Senare beskriver vi hur man ska skala denna kalkyl till en fullfjädrad, maskinskriven version av PLT Scheme och hur man ska genomföra den. Slutligen ger vi en redogörelse för vår preliminära erfarenhet och lägger till typer till tusentals rader otypade Scheme kod. Våra experiment verkar lovande och tyder på att det är möjligt att omvandla oskrivna skript till välskrivna program. 395 Ordförande
Typed Scheme Ref är en explicit typad utökning av Scheme language.
The design and implementation of typed scheme
{'venue': "POPL '08", 'journal': None, 'mag_field_of_study': ['Computer Science']}