Manusspråk
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 12 november 2021; kontroller kräver
7 redigeringar .
Skriptspråk ( skriptspråk, skriptspråk ; engelska skriptspråk ) - ett skriptspråk på hög nivå ( engelsk script ) - korta beskrivningar av de åtgärder som utförs av systemet. Skillnaden mellan program och skript är ganska suddig. Ett script är ett program som hanterar färdiga programvarukomponenter [1] , som, när de väl laddats, inte är beroende av den fortsatta närvaron/frånvaron av en anslutning till nätverket i sitt arbete .
Enligt John Oosterhout , författare till Tcl - språket , kan högnivåspråk delas in i systemprogrammeringsspråk och skriptspråk . Han kallade även de sistnämnda limspråk eller systemintegrationsspråk . _ _ Skript tolkas vanligtvis snarare än kompilerade [2] , även om skriptspråk får JIT-kompilatorer en efter en [3] [4] [5] .
I en snävare mening kan ett skriptspråk förstås som ett specialiserat språk för att utöka kapaciteten hos ett kommandoskal eller textredigerare och operativsystemsadministrationsverktyg [6] .
Klassificering
Programmeringsspråk i allmänhet och skriptspråk i synnerhet kan klassificeras på många olika sätt.
När det gäller hastighet kan skriptspråk delas in i dynamiska parsningsspråk ( sh , COMMAND.COM ) och förkompilerade språk ( Perl ). Dynamiska analysspråk läser instruktioner från en programfil i de minsta nödvändiga blocken och exekverar dessa block utan att läsa ytterligare kod. Förkompilerade språk översätter hela programmet till bytekod och kör det sedan. Vissa skriptspråk har möjlighet att kompilera ett program i farten till maskinkod (så kallad JIT-kompilering ).
Genom tillämpning kan språk grovt delas in i tre typer [7] :
- kommando-scenario;
- tillämpade scenarier;
- universella scenarier.
Kommando-skriptspråk
Dök upp redan på 1960-talet för att hantera uppgifter i operativsystem. Av den tidens språk är JCL för OS/360 mest känt . Den här klassen inkluderar batch- språk ( eng. batch language ) och kommandoskalsspråk , såsom sh , csh för Unix . Dessa språk används oftast vid batchbehandling [7] .
Till exempel har AppleScript-språket i MacOS-operativsystemet en Script Editor som låter dig spela in åtgärder som de utförs av användaren i systemet till en skriptfil (textfil) och formatera den som ett körbart program. Detta tillvägagångssätt tillåter en icke-programmerande användare att komponera enkla skript [8] .
Inbäddade (tillämpade skript) språk
Skriptspråk av denna typ började dyka upp på 1980-talet, när interaktiv kommunikation med operativsystemet blev möjlig på industriella persondatorer. I en klient-server-arkitektur fungerade sådana språk på klientsidan av programvaran [7] .
Språk för allmänna ändamål
Denna typ av skriptspråk är mest känt (särskilt när det tillämpas på webbprogrammering ). Språk av denna typ har dykt upp sedan 1990-talet [7] .
Det bör noteras att många av språken i denna kategori har bredare användningsområden än bara skriptspråk, som JavaScript, som i vissa fall kan köras på servern.
Kritik
Skaparen av Java, James Gosling , förvisade dynamiska programmeringsspråk (genom att nämna PHP och Ruby) till rollen som skriptspråk som genererar webbsidor, men som är olämpliga för användning i en bredare nisch av applikationer på grund av skalbarhet och prestanda problem [9] . Anhängare av dynamiska språk lämnade inte kritik obesvarad på alla punkter, i synnerhet om hans ansträngningar att presentera moderna dynamiska språk som bara "skriptade" [10] .
Plugins och skript
För att skriva anpassade tillägg kan både skript (i vissa programs terminologi " makron ") och plugin- program (oberoende moduler skrivna på kompilerade språk ; i vissa program kan de kallas "verktyg", "exportörer", "drivrutiner") användas.
Skriptspråket är användbart i följande fall:
- Om du vill säkerställa programmerbarhet utan risk att destabilisera systemet. Eftersom, till skillnad från plugins , skript tolkas snarare än kompileras, kommer ett dåligt skrivet skript att visa ett diagnostiskt meddelande snarare än att orsaka en systemkrasch . Motexempel kan vara till exempel JVM och CLR , och om det första utvecklades av kodportabilitetsskäl (säkerhet är en bieffekt) så är det andra just av säkerhetsskäl.
- Om uttrycksfull kod är viktig.
- För det första, ju mer komplext systemet är, desto mer kod måste du skriva " för det är nödvändigt ". Ett skript kan flytta en del av denna standardkod (initiering, förstörelse, synkronisering mellan trådar, etc.) till skriptexekveringsmiljön.
- För det andra kan ett skriptspråk ha ett helt annat programmeringskoncept än huvudprogrammet - till exempel kan ett spel vara en monolitisk enkeltrådad applikation, medan skript som styr karaktärer exekveras parallellt eller som koroutiner . Detta tillvägagångssätt är bra ur systemets skalbarhet (skript är inte beroende av implementeringen av procedurer, de skrivs mycket snabbare och lättare att felsöka), men inte särskilt bra ur kodkvalitetssynpunkt, eftersom det oundvikligen leder till dess dubblering.
- Ett mycket mer rationellt tillvägagångssätt är att skapa resursfiler (som ett alternativ, xml- filer, strukturer, databaser ) som beskriver beteendet "i huvudsak" (i en deklarativ stil ), som görs med andra egenskaper hos objekt i spelet (texturer, modeller, effekter, ljud).
- För det tredje har skriptspråket sin egen domänspecifika uppsättning kommandon, och en rad skript kan göra samma sak som flera dussin rader på ett traditionellt språk. Det är dock värt att notera att kodens större uttrycksförmåga i skriptspråk är en konsekvens av deras begränsningar och/eller nyhet och jämför C (1970-talet) och PHP (1990-talet) och/eller Fortran (1950-talet) och Python (1990-talet) olämplig.
- Skript är kända för sin låga tröskel för inträde; även en lågutbildad programmerare kan skriva på ett skriptspråk. Detta är både ett plus och ett minus. Å ena sidan låter detta dig anställa billig arbetskraft (befriar specialister från rutinarbete och ökar utvecklingshastigheten avsevärt ) , och å andra sidan minskar det kritiskt produktivitet och tillförlitlighet (på grund av fokus på att lära ut sådana språk på lösa specifika problem och inte på att förstå kärnan i de producerade produkterna).
- Problemet med en hög tröskel för inträde uppstår främst i språk med redundant syntax ( C++ , C# ) och kan lösas helt genom att överge dem till förmån för mer framgångsrika (vilket naturligtvis är långt ifrån alltid möjligt). I det här fallet fungerar skripten som en palliativ . Egentligen uppstod de när skalbarheten hos C-liknande språk blev otillräcklig för det dagliga arbetet och tröskeln för nykomlingar att komma in i branschen ökade dramatiskt.
- Problemet med en stor mängd rutin är generellt sett olösligt, men kan i de flesta fall utjämnas med mer tillförlitliga ytterligare medel, till exempel automatisk kodgenerering .
- Om plattformsoberoende krävs . Till exempel JavaScript - det körs av webbläsare under en mängd olika operativsystem.
- Problemet med plattformsoberoende följer direkt av språkstandarden: C-standarden anger till exempel "sizeOf (short) <= sizeOf (int) <= sizeOf (long)", men anger inte vilket bitdjup de ska ha (applikationsbibliotek löser detta problem, t.ex. glib ). Moderna icke-skriptspråk ( Java , C# , Haskell ) är helt utan detta problem just på grund av bra standardisering.
- Skriptspråk används för att skriva program som inte kräver optimalitet och exekveringshastighet. På grund av deras enkelhet skrivs ofta små engångsprogram ("problem") på dem.
- Många allmänna skriptspråk är tillräckligt långsamma för att de ofta endast används i kombination med tredjepartsbibliotek (t.ex. NumPy i kombination med Python).
- Detta är inte ett särskilt bra exempel, eftersom NumPy är baserat på det gamla Fortran MATHLAB- biblioteket , vars kod, även om den är tidstestad, oundvikligen börjar "ruttna" - den skrevs för extremt primitiva entrådiga datorer med andra flaskhalsar (och även om detta kompenseras genom att optimera kompilatorer och parallellisering på OS-nivå, prestandan försämras gradvis).
- Ett mer korrekt exempel: Lua är ett klassiskt, allmänt inbäddningsbart skriptspråk som kräver en minimal implementering av C för att köras (varhelst det finns C, kan Lua fungera).
- Skriptspråk är också bra för datavisualisering: skapa komplexa grafer och presentationer, såväl som enkla program (till exempel används Python i Gnome och Cinnamon grafiska skal för att skapa applets och små konfigurationsverktyg).
Plugins har också viktiga fördelar.
- Färdiga program översatta till maskinkod körs mycket snabbare än skript som tolkas dynamiskt från källkoden varje gång de exekveras. De flesta program är portabla på källkodsnivå och kan köras av lämplig språktolk som skript. Användningen av bytekod ( Java , C# , LLVM ) låter dig lagra, överföra och köra program på ett mer effektivt sätt än skript.
- JIT-kompilering låter dig också optimera den övergripande koden för en specifik plattform (i framtiden, för en specifik processorfamilj och tillgänglig hårdvara).
- Full åtkomst till valfri hårdvara eller OS-resurs (i skriptspråket måste det finnas ett speciellt API skrivet på det kompilerade språket för detta). Plugins som fungerar med hårdvara kallas traditionellt för drivrutiner .
- Om mycket datautbyte förväntas mellan huvudprogrammet och det anpassade tillägget är det lättare för plugin-programmet att tillhandahålla det.
- Kompilerade programmeringsspråk kännetecknas av användningen av ett starkt statiskt system, vilket gör att du effektivt kan fånga upp fel och bättre optimera din kod. Användningen av dynamisk typning i moderna skript är mer sannolikt på grund av tekniska implementeringsfunktioner och historiska skäl. Statiskt typade språk har också potential för tillväxt, nämligen övergången från traditionell monomorf typning till polymorf typning . Monomorfismtillägg i moderna C-liknande språk ( överbelastning , ad-hoc polymorfism ) och subtyp polymorfism , såväl som parametrisk polymorfism och typklasser i experimentella språk (t.ex. Haskell) är inte tillgängliga för skriptspråk (statisk typning) vid körning kommer att leda till en betydande prestandaförlust).
Anteckningar
- ↑ Susie R. Skriptspråk: Python. "PC World", 9, 2001 . Hämtad 9 oktober 2012. Arkiverad från originalet 17 januari 2013. (obestämd)
- ↑ Ousterhout, 1998 .
- ↑ LuaJIT . Hämtad 9 oktober 2012. Arkiverad från originalet 2 oktober 2012. (obestämd)
- ↑ PyPy . Hämtad 9 oktober 2012. Arkiverad från originalet 12 maj 2008. (obestämd)
- ↑ Joab Jackson (IDG News Service), Facebook släpper en PHP just-in-time kompilator . Hämtad 9 oktober 2012. Arkiverad från originalet 11 juni 2012. (obestämd)
- ↑ Yu. A. Denisov, Programmering för humaniora, 12. Föreläsning: Presentation av grammatik
- ↑ 1 2 3 4 5 6 7 Bogatyrev, 2001 .
- ↑ Trofimov, Trofimova, 1997 .
- ↑ James Gosling: "Java är inte under något allvarligt hot från PHP, Ruby eller C#" . Hämtad 9 oktober 2012. Arkiverad från originalet 24 oktober 2012. (obestämd)
- ↑ Ryan Tomayko, Gosling fick inte memo . Hämtad 9 oktober 2012. Arkiverad från originalet 18 januari 2012. (obestämd)
Litteratur
Länkar
Ordböcker och uppslagsverk |
|
---|
I bibliografiska kataloger |
|
---|